我正在收集一组多元时间序列。例如,有 2000 个时间序列。每个时间序列有 12 个维度。
是否有任何可以聚类多元时间序列的系统模型/算法?例如,我想确定一些与其他时间序列非常不同的时间序列。
此外,对于在线监控,我可能会按时运行此算法。例如,每 10 分钟,我针对 10 分钟的时间序列运行这种算法。有没有这方面的有效算法?
我正在收集一组多元时间序列。例如,有 2000 个时间序列。每个时间序列有 12 个维度。
是否有任何可以聚类多元时间序列的系统模型/算法?例如,我想确定一些与其他时间序列非常不同的时间序列。
此外,对于在线监控,我可能会按时运行此算法。例如,每 10 分钟,我针对 10 分钟的时间序列运行这种算法。有没有这方面的有效算法?
R包pdc
为多元时间序列提供聚类。排列分布聚类是一种基于复杂性的时间序列相异性度量。如果您可以假设时间序列的差异是由于复杂性的差异造成的,而不是由于均值、方差或一般时刻的差异,那么这可能是一种有效的方法。计算多元时间序列的 pdc 表示的算法时间复杂度为 O(DTN),其中 D 是维数,T 是时间序列的长度,N 是时间序列的数量。这可能是最有效的,因为对每个时间序列的每个维度进行一次扫描就足以获得压缩的复杂度表示。
这是一个简单的工作示例,具有多变量白噪声时间序列的层次聚类(该图仅说明了每个时间序列的第一维):
require("pdc")
num.ts <- 20 # number of time series
num.dim <- 12 # number of dimensions
len.ts <- 600*10 # number of time series
# generate Gaussian white noise
data <- array(dim = c(len.ts, num.ts, num.dim),data = rnorm(num.ts*num.dim*len.ts))
# obtain clustering with embedding dimension of 5
pdc <- pdclust(X = data, m=5,t=1)
# plot hierarchical clustering
plot(pdc)
该命令pdcDist(data)
生成一个相异矩阵:
由于数据都是白噪声,所以相异矩阵中没有明显的结构。
1 2 3 4 5 6 7
2 4.832894
3 4.810718 4.790286
4 4.812738 4.796530 4.809482
5 4.798458 4.772756 4.751079 4.786206
6 4.812076 4.793027 4.798996 4.758193 4.751691
7 4.786515 4.771505 4.754735 4.837236 4.775775 4.794706
8 4.808709 4.832403 4.722993 4.781267 4.784397 4.776600 4.787757
欲了解更多信息,请参阅:
布兰德迈尔,上午(2015 年)。pdc:用于基于复杂性的时间序列聚类的 R 包。统计软件学报,67.doi:10.18637/jss.v067.i05 (全文)
检查 RTEFC(“实时指数滤波器聚类”)或 RTMAC(“实时移动平均聚类”),它们是 K-means 的高效、简单的实时变体,适用于原型聚类适当时的实时使用。它们对序列进行聚类向量的数量。请参阅https://gregstanleyandassociates.com/whitepapers/BDAC/Clustering/clustering.htm 以及有关在每个时间步将多元时间序列表示为一个较大向量的相关材料(“BDAC”的表示),具有滑动时间窗口。如图所示,
这些被开发用于同时实现噪声过滤和实时聚类,以识别和跟踪不同的条件。RTMAC 通过保留给定集群附近的最新观察结果来限制内存增长。RTEFC 只保留从一个时间步到下一个时间步的质心,这对于许多应用程序来说已经足够了。从图形上看,RTEFC 看起来像:
Dawg 要求将其与 HDBSCAN 进行比较,尤其是approximate_predict() 函数。主要区别在于 HDBSCAN 仍然假设偶尔会从原始数据点进行再训练,这是一项昂贵的操作。HDBSCANapproximate_predict() 函数用于为新数据快速分配集群,无需重新训练。在 RTEFC 的情况下,从来没有任何大的再训练计算,因为原始数据点没有被存储。相反,仅存储聚类中心。每个新数据点仅更新一个集群中心(如果需要并在指定的集群数量上限内创建一个新中心,或者更新一个先前的中心)。每个步骤的计算成本低且可预测。
这些图片有一些相似之处,除了 HDBSCAN 图片没有星号点表示现有集群附近的新数据点的重新计算的集群中心,并且 HDBSCAN 图片将拒绝新的集群案例或强制更新案例作为异常值。
当因果关系是先验已知的(当系统定义了输入和输出时),RTEFC 也可以选择性地修改。相同的系统输入(以及动态系统的初始条件)应该产生相同的系统输出。它们不是因为噪音或系统变化。在这种情况下,用于聚类的任何距离度量都会被修改为仅考虑系统输入和初始条件的接近度。因此,由于重复情况的线性组合,噪声被部分抵消,对系统变化的适应较慢。由于降噪,质心实际上比任何特定数据点更好地表示典型系统行为。
另一个区别是为 RTEFC 开发的只是核心算法。它很简单,只需几行代码即可实现,速度很快,并且在每一步都有可预测的最大计算时间。这与有很多选择的整个设施不同。这类事情是合理的扩展。例如,异常值拒绝可能只要求在一段时间后,忽略与现有集群中心的定义距离之外的点,而不是用于创建新集群或更新最近的集群。
RTEFC 的目标是最终得到一组代表点,定义观察到的系统的可能行为,适应系统随时间的变化,并在已知因果关系的重复情况下选择性地减少噪声的影响。并不是要维护所有原始数据,随着观察到的系统随着时间的推移而变化,其中一些可能会变得过时。这最大限度地减少了存储需求以及计算时间。这组特征(集群中心作为代表点就足够了,随着时间的推移适应,可预测和低计算时间)并不适合所有应用程序。这可用于维护面向批处理的聚类、神经网络函数逼近模型或其他分析或模型构建方案的在线训练数据集。示例应用可能包括故障检测/诊断;过程控制; 或其他可以从代表点或仅在这些点之间插值的行为创建模型的地方。所观察的系统将主要由一组连续变量描述,否则可能需要使用代数方程和/或时间序列模型(包括差分方程/微分方程)以及不等式约束进行建模。