我正处于一个更大项目的起点,以确定时间序列中的常见模式。 目标是自动查找时间序列中的分割点,将系列分成常用模式。(稍后我想根据分割点拆分时间序列,以便在两者之间独立使用时间序列。 )
一个时间序列包括:
例如,它可能如下所示:
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.因为我认为找出分割点的定义更为重要。 我很好奇神经元网络是否适合这项任务?
我问的问题是不能解决这个问题,我只想对此提出第二意见。我对机器学习比较陌生,这就是为什么找到这个问题的良好起点有点压倒性的原因。我对能够解决这个问题的任何想法,技术和有用的资源感到非常满意,并且可以给我一个很好的起点。
答案 0 :(得分:1)
这是一个很大的问题。 事实上,我也有一些想法可以提供给你,其中一些已经过测试,并针对我遇到的异常事件处理不同的基于时间的问题。
首先,无论您将使用何种解决方案,分析数据始终是更好地理解问题的好方法。通过这种方式,您可以确保不会为您提供模型垃圾。用于此分析的工具可能是截断的过去窗口中的峰值,衍生物等。
然后,您可以使用t-sne绘制数据,并查看数据中是否存在某种分离。
然而,简单地使用神经网络可能会有问题,因为您有少量的分裂点和大量的非分裂点。 您可以使用LSTM并以多对一配置训练它们,您可以在其中创建平衡数量的正面和负面示例。 LSTM将帮助您克服示例的不同长度,并为时域赋予更多意义。
进入该方向,您可以使用截断的过去,并以public class Main {
public static void main(String[] args) {
Group group1 = new Group();
Group group2 = new Group(); // here will be Exception
}
}
作为标签作为示例,并通过以均衡的方式提取样本来使用i.i.d模型。 DNNS也适用于该配置。
以上所有都是我认为有用的实验方法。 我希望它有所帮助。祝你好运!