目录
0 工况的定义
1 Changepoint
2 TreeSplit
3 Autoplait
4 应用示例
5.分析结论
0 工况的定义
工业设备系统在不同的外部条件(即工况)下,往往有多种运行模式,工业生产也往往会分阶段进行,在不同工况下,数据特点可能明显不同。有的阶段划分存在明确的规则(如设备设计的运行规律),有的则是自然发生的,对其规律没有显式认知。对于第二种情况,我们希望能从数据中找到一定的规律,自动挖掘出其阶段变化的分割点。
时序分割对于有监督学习任务来说很重要,在某种程度上与聚类相似,不同工况下不同变量间的关系模型差别很大,若不能很好地提前区别,就需要后续的回归、分类算法做隐式处理,这对算法的稳定性、业务可解释性都提出了很大挑战。另外,分割也可以达到降维效果,简化后续模型,如分割后可以利用有限状态的HMM而不是连续状态的状态方程。3种典型的时序分割示例如图1所示,本节将分别进行介绍。
1 Changepoint
一个最简单的时序分割假设是:时间序列的基础统计量(均值、方差)是分段稳定的。此类算法的重点是寻找统计量的变化点(Change Point)。主要有AMOC(At Most One Change)、PELT(Pruned Exact Linear Time)、BinSeg(Binary Segmentation)、SegNeigh(Segment Neighborhood)等算法,其中AMOC是单变化点检测算法,其他3个算法为多变化点检测算法。
AMOC基于假设检验,对于一个时序{yn:n=1,…,N},原假设H0为无分割点,备择假设H1为有一个分割点τ∈{1,…,N}。采用AMOC构建统计量:
式中,p(·)为概率分布函数(根据数据分布选择),目标是寻找ML(τ)取极大值参数τ,检验统计量为
检验过程包括选择一个阈值c,当λ>c时拒绝原假设,使ML(τ)取得极大值的τ就是找到的分割点位置。c值的选择可以查阅参考文献[22]。
多变化点检测问题的表达与上面类似,但需要增加结构约束(否则,极端情况下,每个点都是分割点),结构惩罚可以选择标准的AIC、BIC、SIC等准则,也可以采用CROPS、Hannan-Quinn等Changepoint特定准则[23] ,甚至个性化惩罚函数。与点变化点检测问题相比,该优化问题计算复杂度是分割点数目的指数倍,计算法复杂度为O(2N)。为降低复杂度,有很多近优化算法。BinSeg是一种贪婪的迭代算法,采用AMOC算法在整体时序上中找到一个分割点,然后在分段中迭代采用AMOC,直到找不到新的分割,计算复杂度为O(NlogN)。SegNeigh算法采用动态规划获得新的分割点,在计算m+1变化点时会利用m个变化点的信息,计算复杂度为O(QN2),其中Q是最大变化点数目。在SegNeigh算法基础上,PELT[24] 基于“分割点数量随数据总量线性增长,而不是集中在某个局部区域”的假设,将计算复杂度降低为线性搜索复杂度.
R里面有changepoint包[23] ,有cpt.mean()、cpt.var()、cpt.meanvar()三个函数分别针对均值、方差、均值/方差发生变化的情形。下述代码用4段仿真正态分布数据(真实的分割点在第100、200、300个点),演示PELT、BigSeg在缺省的MBIC、AIC下的表现。假设分割点的个数为q,第i段的长度为li,AIC惩罚为2q,而MBIC的惩罚为
2/3qlog(N)+,可以看出AIC对MBIC来说惩罚小很多,因此,如图2所示,AIC出来的分段更多。
2 TreeSplit
梯度直方图(Histogram of Oriented Gradients,HOG)是图像识别中较为流行的特征提取方法,具有旋转不变性、位移不变性等良好性质,形状表达能力非常好。单变量时间序列也可以借用此类技术[25] ,用HOG可以将数据符号化,再用树状结构对符号序列进行分割。采用滑动窗口方式提取每个子窗口的HOG特征,然后将HOG特征聚类,即可将原始的时间序列转化为符号序列,如图3所示。
按照符号序列的纯度,按二分法切分符号序列,直到一定的终止条件(例如对应的层数、纯度或最小的子序列长度),形成如图4所示的数状分割的结构。TreeSplit算法基于HOG的相似性对数据进行分段,其优点在于无统计假设、对参数不太敏感、时间复杂度低、通用性强,适用于连续型和离散型序列。这样的分段也可以较容易地扩展到多变量上来。
3 Autoplait
Autoplait算法[26] 使用HMM和最小描述长度准则(Minimum Description Length,MDL)自动决定分割的段数和每段的起始点。将时间序列描述为多层链模型(Multi-Level Chain Model,MLCM),如图5所示。在计算时采用3层循环,最内层循环在给定聚类与模型参数的条件下,找到好的分割点;中层循环在给定聚类的条件下,找到好的模型参数;外层循环是搜寻最佳聚类数,优化目标是似然度与描述复杂度的折中。
Autoplait的核心思想有两点:多层链模型(MLCM)、模型表示成本及数据压缩。在HMM的基础上,提出了MLCM来表达多个体系与其过渡之间的时间序列模式。MLCM扩展了HMM,除了常规HMM转移概率,还引入了上层状态(超级状态)的概念“领域(regime)”,将隐状态分为多个组,同一领域内的隐状态的关系更加密切,领域之间有一个整体的转移概率。在模型表示成本和数据压缩方面,为了找到合适的细分和制度,算法使用MDL的概念。MDL是基于信息理论的模型选择标准之一,可以用于无损压缩。另外,还定义了一种新的编码方案,以找到能充分表达给定束X的模型,即:定义成本函数,以估计最优参数集C;提出一种能找到最优解的有效算法。从原理上讲,在Autoplait算法对多变量时间序列进行自动分割时,不需要设定超参数。但笔者在使用过程中发现,Autoplait的鲁棒性不好,对原始数据稍做干扰,切分的结果就会发生很大变化。
4 应用示例
本小节以风电分析中风速序列分割为例,来演示分割算法在应用中需要注意的地方以及与其他算法的结合。该数据集是某台风机2个多月的秒级风速数据(采样周期大约为7s),长度约为100万个点,分析目标是总结归纳典型的风速的时序模式。采用Changepoint算法进行切片,形成了3509个时间切片,然后对每个切片加工平均风速、标准差和湍流强度等3个特征,最后用GMM进行聚类,形成6种典型模式,在审查结果时,发现高风速与中风速分在一类,而没有形成单独一类,这有悖常识。经过仔细分析,证实了是由于数据集中高风速样本太少造成的,Changepoint划分很好地逼近了时间序列趋势,但若要进行明确分割,应该提高风速样本的均衡度,或者应给出明确的业务指导原则。
1.样本分布
100万条数据集中风速的密度函数如图6所示。
从图中可以看出,风速主要分布在5m/s左右,风速大于10.7m/s的样本只有3.88%。从数据驱动的角度来讲,除非认为强行干预(强行指定,或在距离定义中隐形干预),否则,任何算法都很难将高风速样本自动聚为单独一类。
2.Changepoint的切分结果
这里利用mean和variance进行切分,将100万个数据点切分为3509个切片。图7和图8展示了原始风速(深色曲线)和切片风速平均值(浅色曲线,每段为一个切片)的对比,横坐标为原始数据中的行数,这里每2万个点画一幅图。
对于每个切片,加工平均风速、标准差和湍流强度(即标准差/平均值)等3个特征。为降低对聚类算法的影响,对于低风速切片(平均值在1m/s以下),湍流强度做适当缩小。湍流强度较高的切片可分为两种情况:第1种情况如图9所示,在一个均值附近大幅度震荡(类似正弦波);第2种情况如图10所示,有明显上升或下降趋势,这里表现为下降。
3.聚类算法
通过比对发现,采用GMM算法进行聚类比K-means、DBSCAN更合适。采用平均风速、标准差和湍流强度3个特征,GMM算法的聚类结果如图11所示。
5.分析结论
时序分割和聚类都属于无监督学习,聚类结果依赖于样本分布和距离函数定义。若要产生有意义的结果,通常有5种做法。
1)提供手工标记:针对一个典型数据集合,人工标记典型模式。
2)制作典型模式的样本库:机器学习算法根据相似度进行典型模式的匹配发掘。
3)改变样本分布:多提供感兴趣区域的样本。
4)用业务知识进行粗的分区,在每个分区内进行细分聚类。比如,图12对10m/s以上的进行聚类,算法可以将其聚成2类,分割线在10.6m/s左右。
5)另外一条路,就是采用信号分解算法,将原始进行趋势性/周期项/干扰项或低/中/高频的分解,然后对主要成分进行模式聚类。例如,经STL分解后,风速的趋势项就可以很明显地被分解出来,如图13所示。
在一些长时序的挖掘中,对长时序进行分割是必要的,本节给出了三种常用的方法。数据分割可以与其他算法结合,例如,在分割之前利用滤波算法进行过滤,或者利用分解算法针对感兴趣的组分进行分割。但需要注意,时序分割算法是无监督学习算法,不存在完美的算法,需要不断调整参数取得一个相对合理的结果。另外,分割点也不可能完全符合业务语义,但在初期探索时,如果不影响大面,通常也不必化太多时间去子修正分割点。