我们可以从时间序列数据中预测未来何时发生事件吗?

数据挖掘 Python 时间序列 预测建模
2021-10-01 14:37:04

我想预测特定事件可能发生的几个可能时间。例如,我有一个人的日常活动数据,其中包括该人在一段时间内做了什么以及什么时候做的。目前,我的数据格式如下:

日期时间活动

01-01-2017 08:23:30 早餐

01-01-2017 16:20:30 阅读

01-01-2017 19:00:00 晚餐

02-01-2017 08:00:10 早餐

02-01-2017 17:40:30 阅读

02-01-2017 19:30:00 晚餐

03-01-2017 08:15:30 早餐

03-01-2017 16:20:30 阅读

03-01-2017 20:30:00 晚餐

我们只是说,在大多数情况下,这个人在晚上 7-7:30 左右吃晚饭,有时在晚上 8-8:30 吃晚饭,大部分时间在下午 4 点左右看书,有时也在下午 5.6 点左右。根据这类数据,我想预测他明天什么时候吃早餐、晚餐或阅读。例如,晚上 8 点晚餐(置信度/概率 65%),或晚上 8:30(20%)、晚上 9 点(10%)、晚上 9:30(5%)。

我面临的挑战是,我无法确定选择哪种技术来实现目标。你能给我一些提示吗?

2个回答

我建议通过捕获每个活动的范围来创建自定义本体。例如,在您的训练数据中定义早餐的附加参数,并将最小和最大小时之间的范围设置为 08:00:10 08:23:30。

如果您计划使用 RandomForest、LinearRegression 等,则必须进行特征工程。

此外,时间戳本身具有非常广泛的数据信息。您可以选择一周中的某天、一个月中的某天、一年中的某天、一年中的某周。基于此,您可以查看是否是周末、工作日(周一至周五),并且您可以看到这将如何随着时间的推移而变化(也许在夏天,这个人吃得更晚/更早)。此外,您还可以查看每小时的变化。我还强烈建议使用绘图,这样您将看到“早餐”标签如何随着时间的推移而链接(在一年中的不同时期,一周/月的不同部分)。这将使您更好地了解数据中发生的情况。

最后,我建议尝试 RandomForest(s)(也许是装袋方法)。它们对于时间序列数据非常有用,尤其是当您可以定义清晰可见的差异时。调整 RandomForest 是必须的。在与此类似的问题中,min_sample_split 和 max_depth 参数通常非常有用。

此外,Ridge 或 Lasso 回归也是尝试新构建特征的好方法。

最后,正如所指出的,LSTM 被证明可以捕获数据中的时间依赖性。但是,我会重新考虑使用它,没有任何实际经验。

是的你可以。试试 LSTM。您输入一个时间序列并根据输入数据获得一个新的时间序列。