将周期性特征表示为 sin/cos 分量

数据挖掘 相关性 gbm
2021-10-13 03:44:42

我正在做一个预测项目,其中我们有很多周期性特征,例如一天中的小时、工作日、月份、一年中的某一天等。经过一番搜索后,我决定听从这里的建议。

现在,我将每个周期性特征的 sin 和 cos 组件作为一个单独的特征,因此月份变为 month_sin 和 month_cos。但是,我不确定模型是否可以处理这种相关性,因为两个组件需要同等加权才能使该功能有意义。该模型在训练后为 sin 和 cos 分量分配不同的权重。我的直觉告诉我这很糟糕,但我不知道该怎么办。

目前 gbm (R) 给出了最好的结果。对于梯度提升模型,是在两个相关特征上强制相等的权重更好,还是让模型计算出来更好,即使它导致两个组件的权重不同?或者你会建议一种完全不同的方法吗?

1个回答

因为两个组件需要同等加权才能使该功能有意义

事实并非如此。

例如,如果 sin(θ) 周期性特征的权重很大,这意味着原始特征对输出的正向影响最强 θ=π2.

如果两个特征的权重相等,那么焦点就在 θ=π4

通常,您应该期望不同的权重应用于不同的组件,具体取决于一天中哪些时间最大化目标变量以及哪些时间最小化它。

对于梯度提升模型,是在两个相关特征上强制相等的权重更好,还是让模型计算出来更好,即使它导致两个组件的权重不同?

在这种情况下,让模型弄清楚肯定更好。

您主要关心的是,对于您的问题,单热编码表示是否可能比循环表示更好。One-hot 允许与每个小时建立任意关系,但会增加更多维度 - 因此每次可能需要更多示例。周期性的维度较少,但更有可能包含非线性效应,例如,如果对输出目标变量的最小和最大影响不完全相隔 12 小时 - 因此它可能需要更复杂的模型。