如何训练模型以检测时间线数据序列中的事件

时间:2017-12-04 11:45:37

标签: machine-learning scikit-learn

我有一个用户数据的时间线,我想训练一个模型来检测事件。

例如,事件可能是加速度计数据时间线中的手势。

查看时间的时间线(看手表),(标记神经或平静)。

什么机器学习算法适合这个问题?

由于

2 个答案:

答案 0 :(得分:1)

此任务称为事件检测,可以使用自然语言处理(NLP)技术执行。

没有“适当”或“不合适”的算法。您必须提取能够使算法检测事件的各种功能(例如,词性标签)。然后,您需要评估已实现的算法/模型(假设您还调整了每个算法的相应参数)并确定哪个是最佳的(在性能方面)。此外,您需要确定哪些功能有用,哪些功能不有用。

这些论文可能是一个很好的起点:

Machine Learning Algorithms for Event Detection

Event Detection Challenges, Methods, and Applications in Natural and Artificial Systems

答案 1 :(得分:0)

关于什么是最好的方法,没有一个封闭的答案。根据经验,我最喜欢的建模系列方法通常是LSTM网。只要您有足够的数据,这些对于时间事件非常有用。您可以尝试寻找异常。为此,您可以使用LSTM,当出现意外情况时触发该LSTM。发生。另一种选择是定义不同的状态(例如is.event = {0,1})并将您的LSTM训练为普通分类器(在Quora中检查此question)。您可以使用例如keras在python中轻松实现这一点。

如果数据不够丰富,您还可以尝试其他不错的顺序模型,如HMM和HSMM。这些也是从顺序数据中学习的监督模型。对于HSMM,您还要考虑每个州发生的时间,这取决于您的数据是否可用。据我所知,scikit-learn仅支持HMM,但有一个HSMM库可用here

最后,有关处理数据的一些评论。如果您打算进行批量学习,此处建议的任何模型都可以正常工作。但是,如果您想进行在线学习(意味着您在数据到达时即时进行预测),您将需要坚持使用LSTM,或者如果您决定使用任何贝叶斯方法,可能需要检查此替代方法:{{ 3}}

希望这有帮助!