1

在使用机器学习中的特征并在矩阵中表示它们时,将一天中的小时和一周中的一天表示为价值预测模型的特征的推荐方法是什么?

是否对所有小时值使用 0,对小时使用 1 来表示将这些属性表示为特征的首选方式?星期几也一样?

谢谢

4

2 回答 2

1

在这种情况下,存在周期性的每周趋势和长期的上升趋势。因此,您需要对两个时间变量进行编码:

  • day_of_week
  • 绝对时间

一般来说

有几个常见的趋势发生时间范围:

  • 绝对时间
  • day_of_year
  • day_of_week
  • 年月
  • hour_of_day
  • minute_of_hour

在所有这些中寻找趋势。

奇怪的趋势

寻找奇怪的趋势。例如,您可能会看到罕见但持续的基于时间的趋势:

  • is_easter
  • is_superbowl
  • is_national_emergency 等。

这些通常要求您将数据与将事件映射到时间的某些外部源进行交叉引用。

为什么是图表?

我认为图形如此重要有两个原因。

奇怪的趋势:虽然总体趋势可以很容易地自动化(每次只需添加它们),但奇怪的趋势通常需要人眼和对世界的了解才能找到。这是图形如此重要的原因之一。

数据错误:数据中经常有严重的错误。例如,您可能会发现日期以两种格式编码,并且只有其中一种已正确加载到您的程序中。有无数这样的问题,而且它们出奇地普遍。这是我认为图表很重要的另一个原因,不仅适用于时间序列,而且适用于任何数据。

来自https://datascience.stackexchange.com/questions/2368/machine-learning-features-engineering-from-date-time-data的回答

于 2017-09-06T19:05:03.147 回答
1

不,您的选择并不完美,因为这样您将失去循环表示,因为机器学习需要在几个小时内知道 23:00 接近 00:00 并且在工作日也是如此,它通常从星期一开始为0 和星期日为 6,所以如果你使用你的方法,机器学习将把每一天或每一小时表示为一个与其他无关的依赖实体,这是错误的。表示此类数据的正确方法是用两个特征表示每个特征(小时、星期几……)。这两个特征是值的 sin/cos,例如对于小时,您创建 hours_cos / hours_sin 然后每个小时计算 sin 和 cos 值,在应用 sin 和 cos 之前,您需要计算theta,在python 你只需从数学中导入 pi 然后:

θ = 2 * pi * 小时

然后你还从数学中导入 sin 和 cos,并计算 sin(theta) cos(theta)

于 2019-04-17T14:20:40.240 回答