引言
动态间歇过程阶段划分目标是将间歇周期分为C个互不重叠且内部数据相关性一致的子序列集合 ,使得每个子序列内部数据动态特性一致。它本质上是时间序列分割问题。与处理机器学习任务相同,阶段划分也由解空间,价值函数和优化算法这三个要素组成。所有可能的阶段划分结果组成整个搜索空间。为了寻找最优的阶段划分结果,分段效果评估必不可少。定义价值函数后,分段问题可以转化成一个优化问题,即如何确定子序列集合中所有的边界点使得价值函数达到最优。
基于动态潜结构的间歇过程阶段划分与在线监控
优化策略选择
分段问题的最优解可以通过动态规划求取,但时间复杂度较高,对于很多真实数据集不可取的。因此,分段问题通常通过启发式的方法求解。尽管启发式的方法仅能找到次优解,但该次优解通常与真实的分段位置足够接近,对于多数情况来说已经具有足够的精度。根据求解策略的不同,分段问题通常可以分为滑动窗口法(Sliding Windows)、自顶向下法(Top-Down)以及自底向上法(Bottom-Up),方法简要描述如下:
滑动窗口法:从时间序列的第一个点开始新的一段,固定左端点,扩张该段右端点直到超过给定的阈值,则该分段结束,然后从时间序列的下个序列点开始另一个子序列的分割,直到到达序列的末端。
自顶向下法:将整个时间序列初始化为一个子序列,递归地选择最优的切分点来切分子序列,直到达到停止的标准。
自底向上法:首先建立一个原时间序列的最佳可能逼近,然后递归地合并最相似的相邻子序列,直到满足终止条件。
这三类方法各有优缺点。滑动窗口法简单、直观,而且可以实现在线分段。但该方法鲁棒性能较差,容易受数据中突变或离群点的影响。自顶向下法采用分而治之的思想,每次寻找最优地切分点,递归将一个序列切分成多个子序列。自底向上法是对自顶向下方法的一个自然的补充,也是时间序列分割应用最广泛的方法。相比较自顶向上方法,自底向上法由于记录了之前计算得到的合并价值,最大程度地利用了过去计算的结果,具有与序列长度呈线性阶的时间复杂度。为了比较三种策略的分割效果,有学者在广泛数据集上进行了实验。结果表明滑动窗口效果在大多数情况下表现最差,而自顶向上法很少的情况比自底向上表现好。因此,对于分割优化策略,本文采用与序列长度呈线性相关的时间复杂度且鲁棒性强的自底向上方法求解。
价值函数选择
价值函数是阶段划分框架中关键一环。对于单变量时间序列,分段线性近似方法(Piecewise Linear Approximation,PLA)是最常用的一种方法。然而实际工业过程数据通常是高维、强相关的时序数据,基于单变量的价值函数没有考虑到变量间交叉相关性的变化。为了解决多元时间序列分段问题,学者提出多种基于主元分析(Principal Component Analysis,PCA)的价值函数。主元分析是一种广泛应用的多变量分析技术。它寻找一个投影方向,使得数据从在该方向上的投影方差尽可能大。投影方向决定数据变化的方向,而对应的投影方差衡量该方向上的变化大小,因此主元分析的投影矩阵和方差向量在一定程度上表征数据整体分布情况,对应的基于主元分析相似性度量方法间接考虑变量间相关性。
基于PCA的价值函数通常分为两类。一类是基于PCA相似性因子及其变体,用于衡量子序列间对应数据的相似程度,通常作为自底向上策略中的合并代价函数或者聚类策略中距离计算。Krzanowski等人首先提出主元分析相似性因子,通过计算两个数据集对应的前k个主元方向两两之间的余弦值平方和来测量相似性。其基本思想是计算两个数据集各自载荷向量之间夹角余弦值,并利用对应的方差大小进行加权。但该方法没有考虑不同主元方向上方差大小。为此,多种PCA相似性因子的变体被提出。其基本思想是比较两个数据集对应载荷矩阵之间方向夹角,并利用对应的方差大小进行加权。一般来说,越前面提取的主元携带的信息量最大,那么对应的权值应该更大。
算法流程
将动态潜结构相似性度量与自底向上策略相结,本文提出基于动态潜结构的间歇过程阶段划分方法(DLSPP,Dynamic latent structure based phase partition)。主要思路是对于间歇过程预处理得到的增广数据,采用自底向上贪心策略寻找动态潜结构相似度最大的相邻子序列合并,循环执行直到达到目标阶段数停止。具体地,该方法由数据预处理和基于自底向上策略的阶段划分两部分组成
据预处理包含两个步骤。第一步,利用批次方式标准化并沿变量方向展开成一系列的时间片矩阵数据,k = 1,2,…, ;第二步,添加滞后变量构成增广矩阵时间片矩阵数据 。
基于自底向上策略的阶段划分实现步骤如下:
- 创建初始子序列集合,即将每一个时刻作为一个子序列。根据确定的主元数目 A A A和相关代价函数定义,计算每一个子序列的代价函数 和相邻子序列间的合并代价函数 m e r g e c o s t Q ( c ) mergecostQ(c) mergecostQ(c);
- 判断目前子序列数目是否等于目标的阶段数目C,如果是,则执行第5)步;否则,执行第3)步;
- 寻找合并代价 m e r g e c o s t Q ( c ) mergecostQ(c) mergecostQ(c)最小对应两个子序列,记为index,合并对应 S i n d e x S_{index} Sindex和 S i n d e x + 1 S_{index+1} Sindex+1的子序列;
- 删除 S i n d e x + 1 S_{index+1} Sindex+1,更新合并后新的子序列的代价函数和相邻时间片的合并代价函数;然后返回到第2)步;
- 后处理步骤:针对实际间歇过程同一阶段内物理化学反应过程通常要保持一段时间,对各阶段的数据长度带来物理约束,对于不满足最小阶段长度的子序列,将它分配到与它相邻且合并代价最低的子序列之中。
参数选择
DLSPP算法有四个待定的模型参数,具体的确定方法说明如下:
―阶段划分主元数(
A
A
A):由于间歇过程各个阶段内通常是少量潜变量驱动的,主元数一般选择较小值,在 1∼5 之间选取。具体确定方式是设置主元数从 1 开始依次增加,并记录相应的全局代价函数随阶段数变化的曲线;针对每条曲线,利用手肘法确定最佳阶段数量并记录相应的阶段划分结果;结合过程知识选择为最合理的阶段划分结果所对应的主元数;
―滞后阶数(
d
d
d):采用并行分析和得分交叉相关性方法选择;
―目标阶段数目(
C
C
C):本文采用Hallac[50]等提出的方法确定阶段数目,选择全局代价函数与分段数量C变化曲线的肘点作为最佳阶段数。
―最小阶段长度(
L
L
L):应结合实际过程关于阶段长度的先验知识来确定。默认设置为1,假设没有任何先验知识。
代码开源
https://github.com/Huleideid/DLSPP
如果对您有帮助,请star下,您的支持将是作者继续分享的动力!
[1]: 胡磊, 刘强, 吴永建, 范自柱. 间歇过程动态潜结构阶段划分与在线监控. 控制理论与应用. (已在线发表)