基于ICA的线性监督分类的故障诊断方法
ICA+AO统计量
数据预处理
此处同 I 2 I^2 I2统计量的预处理方法,见链接。下文部分未申明的变量均可在预处理部分找到含义。
AO统计量的计算
注:此部分原理比较复杂,以下总结可能会存在错误。
必备公式
(1)
随机选择d维空间(与FastICA中选择维度数一致)的h个单位列向量(对随机向量进行单位化可得到随机的单位向量),h一般250左右即可(再大可能无明显增益),组成矩阵H:
H
=
(
v
1
,
v
2
,
.
.
.
v
h
)
T
{\rm{H = (}}{v_1},{v_2},...{v_h}{{\rm{)}}^{\rm{T}}}
H=(v1,v2,...vh)T
(2)
对某从小到大排列的向量
x
⃗
n
{{\rm{\vec x}}_{\rm{n}}}
xn的中位数计算方案,定义为med,即:
m
e
d
(
x
⃗
n
)
=
{
(
x
n
/
2
+
x
(
x
/
2
)
+
1
)
/
2
    
i
f
  
n
  
i
s
  
e
v
e
n
x
(
n
+
1
)
/
2
                                        
i
f
  
n
  
i
s
  
o
d
d
{\rm{med(}}{{\rm{\vec x}}_{\rm{n}}}{\rm{) = }}\left\{ \begin{array}{l} ({x_{n/2}} + {x_{(x/2) + 1}})/2{\rm{\;\;if\;}}n{\rm{\;is\;even}}\\ {x_{(n + 1)/2}}{\rm{\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;if\;}}n{\rm{\;is\;odd}} \end{array} \right.
med(xn)={(xn/2+x(x/2)+1)/2ifnisevenx(n+1)/2ifnisodd
含义就是,若长度为偶数,用中间两个数的均值作为中位数,若长度为奇数,用中间那个数作为中位数。
(3)
对某从小到大排列的向量 x ⃗ n {{\rm{\vec x}}_{\rm{n}}} xn(向量中元素个数为n),其四分位数计算方案如下:
Q
1
Q_1
Q1是第一 四分位数,
Q
3
Q_3
Q3是第三 四分位数,IQR是四分位距:
Q
1
(
x
⃗
n
)
=
x
⃗
i
n
t
(
n
∗
0.25
)
{{\rm{Q}}_1}({\vec x_n}) = {{\rm{\vec x}}_{{\mathop{\rm int}} (n*0.25)}}
Q1(xn)=xint(n∗0.25)
Q 3 ( x ⃗ n ) = x ⃗ i n t ( n ∗ 0.75 ) {{\rm{Q}}_3}({\vec x_n}) = {{\rm{\vec x}}_{{\mathop{\rm int}} (n*0.75)}} Q3(xn)=xint(n∗0.75)
I Q R ( x ⃗ n ) = Q 3 ( x ⃗ n ) − Q 1 ( x ⃗ n ) IQR({\vec x_n}) = {Q_3}({\vec x_n}) - {Q_1}({\vec x_n}) IQR(xn)=Q3(xn)−Q1(xn)
注:上面定义的med中位数,可以看成是这里的第二 四分位数。
(4)
medcouple计算方法,记为MC:
M
C
(
x
⃗
)
=
m
e
d
x
i
≤
m
e
d
(
x
⃗
)
≤
x
j
h
(
x
i
,
x
j
)
{\rm{MC}}({\rm{\vec x}}) = \mathop {{\rm{med}}}\limits_{{x_i} \le {\rm{med}}({\rm{\vec x}}) \le {x_j}} h({x_i},{x_j})
MC(x)=xi≤med(x)≤xjmedh(xi,xj)
其中,核函数
h
(
x
i
,
x
j
)
h({x_i},{x_j})
h(xi,xj)计算方法:
当
x
i
≠
x
j
{x_i} \ne {x_j}
xi̸=xj时:
h
(
x
i
,
x
j
)
=
∣
(
x
j
−
m
e
d
(
x
⃗
)
)
−
(
x
i
−
m
e
d
(
x
⃗
)
)
∣
x
j
−
x
i
h({x_i},{x_j}){\rm{ = }}\frac{{\left| {({x_j} - med({\rm{\vec x}})) - ({x_i} - med(\vec x))} \right|}}{{{x_j} - {x_i}}}
h(xi,xj)=xj−xi∣(xj−med(x))−(xi−med(x))∣
当
x
i
=
m
e
d
(
x
⃗
)
=
x
j
{x_i}{\rm{ = med}}({\rm{\vec x}}){\rm{ = }}{x_j}
xi=med(x)=xj,设从小到大的向量
x
⃗
n
{{\rm{\vec x}}_{\rm{n}}}
xn中,存在
x
b
+
1
=
x
b
+
2
=
.
.
.
=
x
b
+
i
=
.
.
.
=
x
b
+
j
=
x
b
+
k
=
m
e
d
(
x
⃗
)
{x_{b + 1}} = {x_{b + 2}} = ... = {x_{b + i}} = ... = {x_{b + j}} = {x_{b + k}} = med({\rm{\vec x}})
xb+1=xb+2=...=xb+i=...=xb+j=xb+k=med(x)
共k个元素与
m
e
d
(
x
⃗
)
{\rm{med}}({\rm{\vec x}})
med(x)相等,则:
h
(
x
b
+
i
,
x
b
+
j
)
=
{
−
1
,
i
f
    
i
+
j
−
1
<
k
      
0
,
i
f
    
i
+
j
−
1
=
k
+
1
,
i
f
    
i
+
j
−
1
>
k
h({x_{b + i}},{x_{b + j}}){\rm{ = }}\left\{ \begin{array}{l} {\rm{ - 1, if\;\;}}i + j - {\rm{1 < }}k\\ {\rm{ \;\;\;0 , if\;\;}}i + j - {\rm{1 = }}k\\ {\rm{ + 1, if\;\;}}i + j - {\rm{1 > }}k \end{array} \right.
h(xb+i,xb+j)=⎩⎨⎧−1,ifi+j−1<k0,ifi+j−1=k+1,ifi+j−1>k
可以证明
h
(
x
i
,
x
j
)
∈
[
−
1
,
1
]
h({x_i},{x_j}) \in [ - 1,1]
h(xi,xj)∈[−1,1]。
注:statsmodels库提供了medcouple计算函数,并且最新版修复了一个小误差。
(5)
向量
x
⃗
n
{{\rm{\vec x}}_{\rm{n}}}
xn的边界
c
1
c_1
c1和
c
2
c_2
c2(与箱型图有关的一个量)的计算方法:
[
c
1
(
x
⃗
n
)
,
c
2
(
x
⃗
n
)
]
=
[
Q
1
−
1.5
e
−
3.5
M
C
I
Q
R
  
,
  
Q
3
+
1.5
e
4
M
C
I
Q
R
]
i
f
  
M
C
(
x
⃗
n
)
≥
0
[{c_1}({{\rm{\vec x}}_{\rm{n}}}),{c_2}({{\rm{\vec x}}_{\rm{n}}})] = \left[ {{{\rm{Q}}_1} - 1.5{e^{ - 3.5MC}}IQR{\rm{\;,\;}}{Q_3} + 1.5{e^{4MC}}IQR} \right]{\rm{ if\;MC}}({{\rm{\vec x}}_{\rm{n}}}) \ge {\rm{0}}
[c1(xn),c2(xn)]=[Q1−1.5e−3.5MCIQR,Q3+1.5e4MCIQR]ifMC(xn)≥0
[ c 1 ( x ⃗ n ) , c 2 ( x ⃗ n ) ] = [ Q 1 − 1.5 e − 4 M C I Q R    ,    Q 3 + 1.5 e 3.5 M C I Q R ] i f    M C ( x ⃗ n ) ≤ 0 [{c_1}({{\rm{\vec x}}_{\rm{n}}}),{c_2}({{\rm{\vec x}}_{\rm{n}}})] = \left[ {{{\rm{Q}}_1} - 1.5{e^{ - 4MC}}IQR{\rm{\;,\;}}{Q_3} + 1.5{e^{3.5MC}}IQR} \right]{\rm{ if\;MC}}({{\rm{\vec x}}_{\rm{n}}}) \le {\rm{0}} [c1(xn),c2(xn)]=[Q1−1.5e−4MCIQR,Q3+1.5e3.5MCIQR]ifMC(xn)≤0
注:上述 Q 1 Q_1 Q1肯定是向量 x ⃗ n {{\rm{\vec x}}_{\rm{n}}} xn的 Q 1 Q_1 Q1值啦,其他类推。
(6)
向量
x
⃗
n
{{\rm{\vec x}}_{\rm{n}}}
xn的拒绝策略:
c
u
t
o
f
f
(
x
⃗
)
=
{
Q
3
(
x
⃗
)
+
1.5
e
4
M
C
(
x
⃗
)
I
Q
R
(
x
⃗
)
    
i
f
    
M
C
(
x
⃗
)
≥
0
Q
3
(
x
⃗
)
+
1.5
e
3
.
5
M
C
(
x
⃗
)
I
Q
R
(
x
⃗
)
    
i
f
    
M
C
(
x
⃗
)
≤
0
{\rm{cutoff(}}\vec x{\rm{)}} = \left\{ \begin{array}{l} {Q_3}(\vec x) + 1.5{{\rm{e}}^{{\rm{4MC(\vec x)}}}}IQR(\vec x){\rm{\;\;if\;\;MC(}}\vec x{\rm{)}} \ge {\rm{0}}\\ {Q_3}(\vec x) + 1.5{{\rm{e}}^{{\rm{3}}{\rm{.5MC(\vec x)}}}}IQR(\vec x){\rm{\;\;if \;\;MC(}}\vec x{\rm{)}} \le {\rm{0}} \end{array} \right.
cutoff(x)={Q3(x)+1.5e4MC(x)IQR(x)ifMC(x)≥0Q3(x)+1.5e3.5MC(x)IQR(x)ifMC(x)≤0
(7)
最为关键的AO统计量的计算公式啦啦啦:
矩阵
X
=
(
x
⃗
1
,
.
.
.
,
x
⃗
i
,
.
.
.
,
x
⃗
n
)
T
{\rm{X = (}}{\vec x_1},...,{\vec x_i},...,{\vec x_n}{{\rm{)}}^T}
X=(x1,...,xi,...,xn)T的中任一个样本向量
x
⃗
i
{\vec x_i}
xi的AO值计算方法:
A
O
(
x
⃗
i
,
X
)
=
max
v
∈
H
∣
x
⃗
i
T
v
−
m
e
d
(
X
v
)
∣
(
c
2
(
X
v
)
−
m
e
d
(
X
v
)
)
I
[
x
⃗
i
T
v
>
m
e
d
(
X
v
)
]
+
(
m
e
d
(
X
v
)
−
c
1
(
X
v
)
)
I
[
x
⃗
i
T
v
<
m
e
d
(
X
v
)
]
{\rm{AO(}}{\vec x_i},{\rm{X) = }}\mathop {\max }\limits_{v \in H} \frac{{\left| {\vec x_i^Tv - med({\rm{X}}v)} \right|}}{{({c_2}({\rm{X}}v) - med({\rm{X}}v))I[\vec x_i^Tv > med({\rm{X}}v)] + (med({\rm{X}}v) - {c_1}({\rm{X}}v))I[\vec x_i^Tv < med({\rm{X}}v)]}}
AO(xi,X)=v∈Hmax(c2(Xv)−med(Xv))I[xiTv>med(Xv)]+(med(Xv)−c1(Xv))I[xiTv<med(Xv)]∣∣xiTv−med(Xv)∣∣
其中,
I
[
⋅
]
{I[·]}
I[⋅]表示当内部条件成立时,该函数结果为1,否则为0。(暂不清楚为何上式内部条件中没有考虑等于号,实现该函数时,个人觉得可以把等于的情况归于大于号,即变成大于等于号。)
AO统计量的控制限
同 I 2 I^2 I2统计量的控制限一样,采用KDE法求取,参见链接。
将AO统计量应用于故障诊断的步骤
首先,经过FastICA变换,得到n个样本的所有源信号s(d维)组成的源矩阵:
S
(
n
∗
d
)
=
X
n
∗
m
W
d
∗
m
T
=
(
s
1
(
d
∗
1
)
,
.
.
.
,
s
n
(
d
∗
1
)
)
T
{{\rm{S}}_{{\rm{(n*d)}}}}{\rm{ = }}{{\rm{X}}_{{\rm{n*m}}}}{\rm{W}}_{{\rm{d*m}}}^T = {({s_{1(d*1)}},...,{s_{n(d*1)}})^{\rm{T}}}
S(n∗d)=Xn∗mWd∗mT=(s1(d∗1),...,sn(d∗1))T
求取S所有样本向量的AO值:
A
O
(
S
)
=
[
A
O
(
s
1
,
S
)
,
.
.
.
,
A
O
(
s
i
,
S
)
,
.
.
.
,
A
O
(
s
n
,
S
)
]
T
{\rm{AO(S) = [AO(}}{s_{\rm{1}}}{\rm{,S)}},...,{\rm{AO(}}{s_i}{\rm{,S),}}...{\rm{,AO(}}{s_{\rm{n}}}{\rm{,S)}}{{\rm{]}}^T}
AO(S)=[AO(s1,S),...,AO(si,S),...,AO(sn,S)]T
求取AO向量的cutoff值:
c
u
t
o
f
f
=
c
u
t
o
f
f
(
A
O
(
S
)
)
{\rm{cutoff = cutoff(AO(S))}}
cutoff=cutoff(AO(S))
若
A
O
(
s
i
)
>
c
u
t
o
f
f
{\rm{AO(}}{{\rm{s}}_i}{\rm{) > cutoff}}
AO(si)>cutoff,则将训练集样本
X
n
∗
m
X_{n*m}
Xn∗m中的
x
⃗
i
{\vec x_i}
xi标记为极端值。
从X中剔除掉所有极端值,得到 X r o b u s t X_{robust} Xrobust,重新进行FastICA,得到 S r o b u s t {S_{robust}} Srobust。
计算
S
r
o
b
u
s
t
S_{robust}
Srobust的AO值向量:
A
O
(
S
r
o
b
u
s
t
)
{\rm{AO(}}{{\rm{S}}_{{\rm{robust}}}}{\rm{)}}
AO(Srobust)
采用KDE估计此AO向量的概率密度函数,并求取置信区间,记控制限求取结果为
A
O
α
{AO}_{\alpha}
AOα
对于新的样本矩阵
X
n
e
w
X_{new}
Xnew,采用上述第二次FastICA的参数(包括均值化和变换矩阵等参数)对其进行FastICA变换,得到
S
n
e
w
=
(
s
⃗
1
,
.
.
.
,
s
⃗
i
,
.
.
.
,
s
⃗
n
)
T
{{\rm{S}}_{{\rm{new}}}}{\rm{ = (}}{\vec s_{\rm{1}}}{\rm{,}}...{\rm{,}}{\vec s_i}{\rm{,}}...{\rm{,}}{\vec s_n}{{\rm{)}}^T}
Snew=(s1,...,si,...,sn)T,然后求取AO值(注意新样本,与训练样本此公式的异同):
A
O
(
s
⃗
i
,
S
r
o
b
u
s
t
)
=
max
v
∈
H
∣
s
⃗
i
T
v
−
m
e
d
(
S
r
o
b
u
s
t
v
)
∣
(
c
2
(
S
r
o
b
u
s
t
v
)
−
m
e
d
(
S
r
o
b
u
s
t
v
)
)
I
[
s
⃗
i
T
v
>
m
e
d
(
S
r
o
b
u
s
t
v
)
]
+
(
m
e
d
(
S
r
o
b
u
s
t
v
)
−
c
1
(
S
r
o
b
u
s
t
v
)
)
I
[
s
⃗
i
T
v
<
m
e
d
(
S
r
o
b
u
s
t
v
)
]
{\rm{AO(}}{\vec s_i}{\rm{,}}{{\rm{S}}_{{\rm{robust}}}}{\rm{) = }}\mathop {\max }\limits_{v \in H} \frac{{\left| {\vec s_i^Tv - med({{\rm{S}}_{{\rm{robust}}}}v)} \right|}}{{({c_2}({{\rm{S}}_{{\rm{robust}}}}v) - med({{\rm{S}}_{{\rm{robust}}}}v))I[\vec s_i^Tv > med({{\rm{S}}_{{\rm{robust}}}}v)] + (med({{\rm{S}}_{{\rm{robust}}}}v) - {c_1}({{\rm{S}}_{{\rm{robust}}}}v))I[\vec s_i^Tv < med({{\rm{S}}_{{\rm{robust}}}}v)]}}
AO(si,Srobust)=v∈Hmax(c2(Srobustv)−med(Srobustv))I[siTv>med(Srobustv)]+(med(Srobustv)−c1(Srobustv))I[siTv<med(Srobustv)]∣∣siTv−med(Srobustv)∣∣
故障判定
如果系统正常运行,新样本 x i x_i xi的AO值,应满足 A O ( s ⃗ i ) < A O α {\rm{AO}}({\vec s_i}) < {\rm{A}}{{\rm{O}}_\alpha } AO(si)<AOα,反之,认为出现故障。
参考文献
Brys, G, M Hubert和A Struyf. 《A Robust Measure of Skewness》. Journal of Computational and Graphical Statistics 13, 期 4 (2004年12月): 996–1017. https://doi.org/10.1198/106186004X12632.
Brys, G., M. Hubert和P. J. Rousseeuw. 《A Robustification of Independent Component Analysis》. Journal of Chemometrics 19, 期 5–7 (2005年5月): 364–75. https://doi.org/10.1002/cem.940.
Hsu, Chun-Chin, Mu-Chen Chen和Long-Sheng Chen. 《A Novel Process Monitoring Approach with Dynamic Independent Component Analysis》. Control Engineering Practice 18, 期 3 (2010年3月): 242–53. https://doi.org/10.1016/j.conengprac.2009.11.002.
Lee, Jong-Min, ChangKyoo Yoo和In-Beum Lee. 《Statistical process monitoring with independent component analysis》. Journal of Process Control 14, 期 5 (2004年8月1日): 467–85. https://doi.org/10.1016/j.jprocont.2003.09.004.
DICA+AO统计量
X(l)生成过程同DPCA,参见链接。
剩余步骤同此。