训练集样本(只有正样本)为 X n ∗ m {{\rm{X}}_{{\rm{n*m}}}} Xn∗m(需要列均值为零,采用z-score归一化即可,每行一个样本,样本数目n,特征维度m)。
假设时延为 l l l,则生产一个新的数据矩阵(利用过去时间内观察到的样本): X ( l ) = [ x k T x k − 1 T . . . x k − l T x k + 1 T x k T . . . x k + 1 − l T ⋮ ⋮ ⋮ ⋮ x k + p T x k + p − 1 T . . . x k + p − l T ] X(l) = \left[ \begin{array}{l} x_k^T{\rm{\,\,\,\,\,\,\,}}x_{k - 1}^T{\rm{\,\,\,\,\,\,}}...{\rm{\,\,\,\,}}x_{k - l}^T\\ x_{k + 1}^T{\rm{\,\,\,}}x_k^T{\rm{\,\,\,\,\,\,\,\,\,\,}}...{\rm{\,\,\,\,\,}}x_{k + 1 - l}^T\\ {\rm{\,\,\,\,\,}} \vdots {\rm{\,\,\,\,\,\,\,\,\,\,\,}} \vdots {\rm{\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,}} \vdots {\rm{\,\,\,\,\,\,\,\,\,\,\,\,}} \vdots \\ x_{k + p}^T{\rm{\,\,\,}}x_{k + p - 1}^T{\rm{\,\,}}...{\rm{\,\,\,}}x_{k + p - l}^T \end{array} \right] X(l)=⎣⎢⎢⎢⎡xkTxk−1T...xk−lTxk+1TxkT...xk+1−lT⋮⋮⋮⋮xk+pTxk+p−1T...xk+p−lT⎦⎥⎥⎥⎤ 其中 x k x_{k} xk表示当前第k时刻观察到的样本, x k − 1 x_{k-1} xk−1表示第k-1时刻观察到的样本,由 x k x_{k} xk、 x k − 1 x_{k-1} xk−1、…、 x k − l x_{k-l} xk−l共 l + 1 l+1 l+1个样本共同组成了第k时刻的新样本(也就是上面矩阵中的第一行那个样本)。使用此 X ( l ) ( n − l ) ∗ ( m ∗ ( l + 1 ) ) X(l)_{(n-l)*(m*{(l+1)})} X(l)(n−l)∗(m∗(l+1))作为新的训练矩阵(相比原来的矩阵X,样本数目减少了 l l l个,但特征数变成了 m ∗ ( l + 1 ) {m*{(l+1)}} m∗(l+1)维)。(测试集也按照测试样本的观察时间先后构成同样宽度的矩阵)。按经验, l l l通常取2。 举例: 设有先后采集的样本, x 1 , x 2 , x 3 , x 4 , x 5 x_{1},x_{2},x_{3},x_{4},x_{5} x1,x2,x3,x4,x5,共5个。每个样本均是长度为2的列向量。具体如下: x 1 = [ 1 , 2 ] T x 2 = [ 3 , 4 ] T x 3 = [ 5 , 6 ] T x 4 = [ 7 , 8 ] T x 5 = [ 9 , 10 ] T x_{1}=[1,2]^T\\x_{2}=[3,4]^T\\x_{3}=[5,6]^T\\x_{4}=[7,8]^T\\x_{5}=[9,10]^T x1=[1,2]Tx2=[3,4]Tx3=[5,6]Tx4=[7,8]Tx5=[9,10]T 若时延为l=2,则新的数据矩阵为: X ( l ) = [ x 3 T x 2 T x 1 T x 4 T x 3 T x 2 T x 5 T x 4 T x 3 T ] = [ 5 , 6 , 3 , 4 , 1 , 2 7 , 8 , 5 , 6 , 3 , 4 9 , 10 , 7 , 8 , 5 , 6 ] X(l) = \left[ \begin{array}{l} x_{3}^T{\rm{\,\,\,\,\,\,\,}}x_{2}^T{\rm{\,\,\,\,\,\,\,}}x_{1}^T\\ x_{4}^T{\rm{\,\,\,\,\,\,\,}}x_{3}^T{\rm{\,\,\,\,\,\,\,}}x_{2}^T\\ x_{5}^T{\rm{\,\,\,\,\,\,\,}}x_{4}^T{\rm{\,\,\,\,\,\,\,}}x_{3}^T\\ \end{array} \right]=\left[ \begin{array}{l} 5,{\rm{\,\,\,}}6,{\rm{\,\,\,}}3,{\rm{\,\,\,}}4,{\rm{\,\,\,}}1,{\rm{\,\,\,}}2\\ 7,{\rm{\,\,\,}}8,{\rm{\,\,\,}}5,{\rm{\,\,\,}}6,{\rm{\,\,\,}}3,{\rm{\,\,\,}}4\\ 9,10,{\rm{\,\,\,}}7,{\rm{\,\,\,}}8,{\rm{\,\,\,}}5,{\rm{\,\,\,}}6\\ \end{array} \right] X(l)=⎣⎡x3Tx2Tx1Tx4Tx3Tx2Tx5Tx4Tx3T⎦⎤=⎣⎡5,6,3,4,1,27,8,5,6,3,49,10,7,8,5,6⎦⎤ 将 X ( l ) {X(l)} X(l)的每一行看作一个新的(动态)样本,则动态样本相比原始样本少了2个。但动态样本的维度变成原来的3倍了。 当然也不排除本人对这里理解有误,因此,若有疑问,请查阅下述文献,也欢迎指错。
至于动态样本的标签,本人考虑的是,动态样本的标签与其第一个原始样本的标签一致。 比如上面举例中的第一行的动态样本,其标签与 x 3 x_3 x3的标签保持一致;第二行的动态样本,其标签与 x 4 x_4 x4的标签保持一致。
到底是X归一化之后再组成动态样本矩阵,还是先由X组成动态样本矩阵,然后动态样本矩阵再归一化,又或者之前与之后都使用归一化操作? 没有注意到文献里是否有讨论这一步,大概是我读的比较浅。 本人采取的方法是,先用 X X X组成动态样本矩阵,然后对动态样本矩阵 X ( l ) X(l) X(l)进行归一化操作。
参考文献: [1] Ku W, Storer R H, Georgakis C. Disturbance detection and isolation by dynamic principal component analysis[J]. Chemometrics and Intelligent Laboratory Systems, 1995, 30(1): 179–196.
[2] Lee, Jong-Min, ChangKyoo Yoo和In-Beum Lee. 《Statistical Monitoring of Dynamic 2Processes Based on Dynamic Independent Component Analysis》. Chemical Engineering Science 59, 期 14 (2004年7月): 2995–3006. https://doi.org/10.1016/j.ces.2004.04.031.