如果您试图预测未来的值,那么将它们视为分类特征是没有意义的。你不会学到任何东西来预测未来的数据,因为你不会再看到那些时代了。
即使您试图预测看不见的过去数据,但每次只出现一次或少数几次,情况也是如此。
相反,时间值应该确定训练数据的顺序。通过这种方式,您可以避免泄漏未来的数据,并且具有状态的模型可以从数据的顺序性质中学习特征。
但是,在某些情况下,您可能希望从时间值中提取其他特征。这里有些例子:
- 自上次有趣事件以来的时间
- 大小为 n 的上一个时间窗口中的有趣事件数
- 一天中的时间(早上/下午/等)
- 星期几
- 假期
- 季节
让我们举个例子。以下是用户访问网站的时间数据集:
time user
2017-11-01 00:00 Alice
2017-11-01 00:00 Bob
2017-11-02 00:00 Chris
2017-11-03 00:00 Alice
2017-11-04 00:00 Alice
2017-11-04 00:00 Bob
2017-11-07 00:00 Chris
2017-11-10 00:00 Alice
这是我们添加的具有附加功能的相同数据集:
time user last_visit weekend? time_of_day
2017-11-01 16:22 Alice N/A No afternoon
2017-11-01 11:13 Bob N/A No morning
2017-11-02 20:35 Chris N/A No evening
2017-11-03 16:07 Alice 2 days No afternoon
2017-11-04 17:20 Alice 1 day Yes afternoon
2017-11-04 10:44 Bob 3 days Yes morning
2017-11-07 08:06 Chris 5 days No morning
2017-11-10 17:11 Alice 6 days No afternoon
如果我们试图预测某个用户下一次访问的时间,那么这些功能可能对我们有很大帮助。例如,我们可能决定 Alice 更有可能在下午访问,或者 Bob 不太可能连续两天访问。