我有一些在时间序列上采样的运动数据。我试图将运动实时分类为平滑或摇晃。例如,由于运动是平滑的,所以它被归类为平滑,直到它突然变得摇晃,然后被归类为如此。
我在这样做时遇到了一些严重的麻烦。除了使用 RNN 并将时间序列数据的子集提供给它进行分类(我没有足够的数据来训练)之外,有人知道任何时间序列分类算法吗?我计划将时间序列的子集输入到算法中,并使用单个标签进行训练和预测。
任何帮助是极大的赞赏。
我有一些在时间序列上采样的运动数据。我试图将运动实时分类为平滑或摇晃。例如,由于运动是平滑的,所以它被归类为平滑,直到它突然变得摇晃,然后被归类为如此。
我在这样做时遇到了一些严重的麻烦。除了使用 RNN 并将时间序列数据的子集提供给它进行分类(我没有足够的数据来训练)之外,有人知道任何时间序列分类算法吗?我计划将时间序列的子集输入到算法中,并使用单个标签进行训练和预测。
任何帮助是极大的赞赏。
机器学习中用于分类的监督学习训练模型以确定某个新实例属于哪个分布。模型复杂度与给定实例数量的特定算法的性能直接相关。
这意味着您应该始终在选择模型之前先了解您的数据。
您的数据集由实例组成 和 .
这是极少数的实例 . 通常,我建议对两类分类问题使用比特征多十倍的实例。此外,小于实例不足以训练任何深度学习模型。您将需要考虑使用传统的机器学习算法(SVM、KNN、随机森林等)。最后,数据集中的类别不平衡会引入一些偏差,这将导致更差的结果。
所有的希望都没有失去,我们仍然可以做一些事情来解决这个问题!
我建议的第一步是考虑执行一些特征缩减。你想映射你的到一个低维集在哪里. 但是,在删除特征时,您显然会丢失信息,因此您希望能够了解哪些特征与您的决策顺利/不稳定有关。例如,在对猫/狗进行分类时,重量可能是一个信息量很大的特征,因此它在决策中的贡献应该被高度考虑,而英尺的数量不会提供任何有用的信息。
执行此操作的一些技术包括 PCA、LDA 和其他技术。您可以尝试它们,它是 scikit-learn 中的一行。
由于严重的类不平衡,我建议基于分类的算法表现不佳。相反,我会尝试使用异常检测算法。这些技术将学习您的标称集的分布(平滑),并尝试检测信号何时与此分布显着不同,然后将它们分类为异常(不稳定)。
存在许多这些技术,请参考以下答案:
我想知道为什么您将整个实例分类为平滑或不稳定?是否可以将每个实例建模为具有两种状态的隐马尔可夫模型 (HMM),平滑与不稳定?您的任务是对转换概率进行建模并估计实例的当前状态。实例是否曾经从不稳定的状态转变为平滑状态?
估计模型参数可能是一项繁重的工作,但您的数据集很小。我最近使用 R 中的包进行了类似的分析msm
。我有大约 3000 个不同长度的实例(通常每个 < 20 个)。代码运行得很快(不到一分钟但明显的等待)。
如果效果很强烈——即当你从“平滑”变为“不稳定”时,测量值确实发生了变化,那么即使存在“类不平衡”,你仍然应该能够估计参数。如果没有,您可以获取数据的子集以实现更好的平衡(或者更好地,随机选择平滑数据的子集并引导参数估计)。转移概率取决于您所处的状态,因此您可以更改处于一种或另一种状态的总体比例,而不会损害您的分析。当然,需要根据人口流行率对系统在一个州停留多长时间的全球估计进行调整。
如果通过观察到的运动数据的变化来预测到摇晃状态的转变,那么您需要考虑其中强度函数取决于观察结果的泊松强度模型之一。查看 R 包 PtProcess 和其中的参考资料。它提供了多种型号,可以满足您的需求。