我正处于一个更大项目的起点,该项目旨在识别时间序列中的常见模式。 目标是自动找到时间序列中的分割点,将序列分割成常用的模式。(后来我想根据分割点分割时间序列,以便独立使用时间序列之间的时间序列。 )
一个时间序列包括:
- 基于固定时间间隔的 n 个数据系列作为输入
- x 轴表示从 0 到 m 的区间索引
- y 轴表示特定时间序列的值
例如,它可能如下所示:
pos_x,pos_y,pos_z,force_x,force_y,force_z,speed,is_split_point
2, 3, 4, 0.4232, 0.4432, 0, 0.6, false
2, 3, 4, 0.4232, 0.4432, 0, 0.6, false
2, 3, 4, 0.4232, 0.4432, 0, 0.6, true
我最好的选择是通过机器学习来解决这个问题,因为我需要一种通用方法来预先根据用户选择来检测模式。 因此,我有很多标记数据,其中分割点已经由用户手动设置。
目前我有两个想法来解决这个问题:
- 分析标记数据中分割点周围的数据,以得出不同数据维度之间的相关性,并将其用作未标记数据的新特征。
- 分析两个关键帧之间的模式以查找未标记数据中的相似模式。
我更喜欢1.,因为我认为找出分割点的定义更重要。 我很好奇神经网络是否非常适合这项任务?
我问这个问题不是为了得到问题的解决方案,我只是想得到对此的第二意见。我对机器学习比较陌生,这就是为什么为这个问题找到一个好的起点有点让人不知所措。我对任何可以解决这个问题并给我一个良好起点的想法、技术和有用资源感到非常满意。
最佳答案
哇,这是一个很好的问题。 事实上,我也有一些想法可以提供给你们,其中一些想法经过了测试,并针对我遇到的异常事件的不同基于时间的问题进行了测试。
首先,无论您使用什么解决方案,分析数据始终是更好地理解问题的好方法。这样你就可以确保你不会给你的模型喂垃圾。用于此分析的工具可以是截断的过去窗口中的峰值、导数等。
然后您可以使用 t-sne 绘制数据并查看数据中是否存在某种分离。
但是,简单地使用神经网络可能会出现问题,因为分割点数量较少,非分割点数量较多。 您可以使用 LSTM 并在多对一配置中训练它们,在其中创建数量均衡的正例和负例。 LSTM 将帮助您克服示例长度的变化,并赋予时域更多意义。
朝着这个方向,您可以使用截断的过去并将其作为以 is_split_point
作为标签的示例,并通过以平衡的方式提取样本来使用 i.i.d 模型。 DNNS 也适用于该配置。
以上都是我发现有用的实验方法。 我希望它有帮助。祝你好运!
关于machine-learning - 根据标记数据找到分割n维时间序列的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49513509/