我想要预测随时间变化的信号的开关行为。目前该信号有3种状态(1、2、3),但这可能会在未来发生变化。然而,就目前而言,假设有三种状态是完全可以的。
我可以对这些状态做出以下假设(见图):
1.信号周期性地重复,可能会随着时间的不同而变化。
1.对于所有信号,状态2的持续时间总是恒定且相对较短的。
1.状态1和状态3的持续时间也是恒定的,但因信号不同而不同。
1.切换顺序始终相同:1-->2-->3-->2-->1-->[...]
1.在不同信号之间存在恒定但未知的时间基准。
1.在我对不同信号的观察之间没有恒定的时间基准。它们只是一个接一个地被测量,但总是在不同的时间。
1.在获得更多样本后,我可以定期重建我的模型。
我有以下问题:
1.我一次只能观察到一个信号。
1.我只能观察到不同时间的信号。
1.我不能通过状态转换触发我的测量。这意味着,当我衡量时,我总是处于一个国家的“中间”。因此,我不知道这种状态是什么时候开始的,也不知道这种状态到底什么时候会结束。
1.我不能长时间观察到某个信号。所以,我不能观察一个完整的时期。
1.我的样本(观察)在时间上分布广泛。
1.我想要获得当前时间的状态变化或当前状态的预测。很可能发生的情况是,我永远不会在所要求的时间内测量我的信号。
到目前为止,我已经测试了ML.NET工具箱中的TimeSeriesPredictor,因为它似乎适合我。然而,在我看来,该算法要求您始终只传递一个信号的数据。这意味着假设5不包括在预测中,这可能是次优的。此外,在这种情况下,我遇到了预测没有更改的问题,当我查询多个预测时,实际上应该以时间相关的方式发生预测。这种行为使我相信只有值的顺序进入模型,而不是相关的时间戳。如果我理解正确的话,那么这个时间戳就是我最重要的“特征”……到目前为止,我还没有对基于回归的方法进行任何测试,例如FastTree,因为我的数据不是线性的,而是不断变化的状态。也许这个假设是不成立的,基于回归的方法可能也适用?
我也不知道是否需要多分类器,因为我知道TimeSeriesPredictor也适用于此,因为它使用单一数据类型。无论预测是1.3还是1.0,对我来说都很好。
**总而言之:**我正在寻找一种算法,它能够根据丢失和广泛的样本识别切换模式。可以定义边界,例如,信号1的状态持续时间3永远不会持续超过30s,或者信号3的状态持续时间1永远不会持续超过60s。然后,在算法获得开关行为的近似模型之后,我想请求对特定时间的特定信号状态进行预测。
我可以使用哪些方法来获得最佳预测,最好是使用ML.NET工具箱或基于MatLab?
2条答案
按热度按时间kcrjzv8t1#
不知道这是不是你正在寻找的东西,但是如果你正在寻找的是使用信号检测尖峰和变化,请查看ML.NET中的anomaly detection algorithms。这里有两个教程展示了如何使用它们。
yjghlzjz2#
解决这一问题的一种方法是首先独立地确定每个信号的周期。这可以通过只查看状态2的测量之间的时间差的频率分布以及分别针对每个信号来实现。
这将得到multinomial distribution。最短的时间差将是切换事件的持续时间(在丢弃小于状态2的最大持续时间的时间差之后)。第二个最短的峰值将是一个切换事件结束和下一个切换事件开始之间的持续时间。
当你有了3个周期的计算,你就可以简单地计算出它们之间的差异。如果您有每个信号的状态2测量的时间戳,您应该能够计算所有其他信号的切换时间。