独立成分分析ICA

独立成分分析ICA

by:Yang Liu

1.ICA(independent component analysis)的定义:利用很少的先验知识将混合信息分离成独立分量的一种重要方法。目的是找到一组分量,此分量应该最大化独立,进而发现数据中一些隐藏的信息。
2.ICA的经典模型:
“鸡尾酒会”的问题,人的大脑从嘈杂的酒会中快速的区分出自己想要的声音。
独立成分分析ICA_第1张图片
X j = A j 1 S 1 + A j2 S 2 + A j3 S 3 . . . + A jn - 1 S n − 1 + A jn S n {X_j} = {A_{{\text{j}}1}}{S_1} + {A_{{\text{j2}}}}{S_2} + {A_{{\text{j3}}}}{S_3}... + {A_{{\text{jn - 1}}}}{S_{n - 1}} + {A_{{\text{jn}}}}{S_n} Xj=Aj1S1+Aj2S2+Aj3S3...+Ajn - 1Sn1+AjnSn
矩阵形式 X = A S {X} = {A}{S} X=AS 其中X是已知的,A和S是未知的;目标是通过X来估计出A和S。
模型中的两个不确定因素:
(1)输出向量排列顺序的不确定性,即无法确定所提取的信号对应原始信号源的哪一个分量;
(2)输出信号幅度的不确定性,即无法恢复到信号源的真实幅度。
因为有两个未知量,所以为了使ICA模型能被估计则我们需要提出假设前提和条件,如下:
(1)独立成分被假定为是统计独立的。
ICA成立的前提;也就是说S中的各个随机变量独立,从统计学角度看,就是联合概率密度等于边缘概率密度的乘积。
P ( X 1 , X 2 ) = P ( X 1 ) P ( X 2 ) P({X_1},{X_2}) = P({X_1})P({X_2}) P(X1,X2)=P(X1)P(X2)
E ( X 1 , X 2 ) = E ( X 1 ) E ( X 2 ) E({X_1},{X_2}) = E({X_1})E({X_2}) E(X1,X2)=E(X1)E(X2)
独立肯定不相关,不相关不一定独立,因为不相关一般所指仅是在线性领域,即独立是比不相关更强的约束。在PCA中各个分量是不相关的,在ICA中各个分量是独立的。总的来说,ICA认为观测信号是若干个统计独立的分量的线性组合,ICA要做的是一个解混过程。而PCA是一个信息提取的过程,将原始数据降维,现已成为ICA将数据标准化的预处理步骤。
(2)独立成分是非高斯分布。
如果观测到的变量是高斯分布(正态分布),那么ICA是不可能实现的,我们无法恢复出唯一的S,因为高斯分布中的各个方向是等价的。
两个均服从高斯分布的联合概率密度是 P ( X 1 , X 2 ) = 1 2 π exp ⁡ ( − X 1 2 + X 2 2 2 ) P({X_1},{X_2}) = \frac{1}{{2\pi }}\exp ( - \frac{{X_1^2 + X_2^2}}{2}) P(X1,X2)=2π1exp(2X12+X22)
独立成分分析ICA_第2张图片
从图像中可知联合概率密度没有边缘信息,也可以说没有A的列向量信息。
可以认为越接近高斯分布独立性越差,反之,越远离高斯分布,独立性越强。根据中心极限定理有,独立随机变量的和在一定条件下趋于高斯分布,即独立随机变量的和比独立随机变量更趋于高斯分布。
(3)假定混合矩阵A是方阵。
也就是说,X变量的个数和S中变量的个数相同。因为要对A求逆矩阵,所以A一定为方阵。
3.寻找独立成分的方法:
固定点算法(fastICA)
(1)涉及的数学原理
牛顿迭代法:
独立成分分析ICA_第3张图片
熵:
对一个离散取值的随机变量变量X,其熵H的定义为: H ( x ) = − ∑ P ( x i ) log ⁡ ( P ( x i ) ) H(x) = - \sum {P({x_i})\log (P({x_i}))} H(x)=P(xi)log(P(xi)) 其中 x i {{x_i}} xi是X的可能取值,P是取值的概率。
对一个连续取值的的随机变量X,熵H的定义为: H ( X ) = − ∫ a b P ( X ) log ⁡ P ( X ) d x H(X) = - \int_a^{\text{b}} {P(X)\log P(X)d{\text{x}}} H(X)=abP(X)logP(X)dx ,称为微分熵。随机变量越随机其熵越大。
负熵:
N g ( Y ) = H ( Y G ) − H ( Y ) {N_{\text{g}}}(Y) = H({Y_G}) - H(Y) Ng(Y)=H(YG)H(Y)式中, Y G {Y_G} YG是与Y具有相同方差的高斯随机变量。在具有相同方差的随机变量中,高斯随机变量具有最大的微分熵,当随机变量服从高斯分布时负熵为零,也就是说随机变量非高斯型越强,其微分熵越小负熵越大,所以可以根据负熵的大小,判定随机变量的非高斯性。
归一化:
将观测数据X归一化,即减去其均值m=E{x}使其具有零均值。
白化:
若一个零均值的随机变量Z,满足 E ( Z Z T ) = I E(Z{Z^T}) = I E(ZZT)=I,其中I是单位矩阵,我们称Z为白化向量,白化的本质是去相关,这和PCA的目的是一样的。白化数据的一般方法是,对数据协方差进行特征值分解,
x 1 = E D − 1 2 E T X {x^1} = E{D^{ - \frac{1}{2}}}{E^T}X x1=ED21ETX,其中E是协方差矩阵的特征向量的正交阵,D是协方差矩阵特征值的对角矩阵。
白化使我们需要确定的参数减少了一般,因为原矩阵的自由度是 n 2 {n^2} n2,白化后所得正交矩阵的自由度是 n ( n − 1 ) 2 \frac{{n(n - 1)}}{2} 2n(n1)
白化后的X有 E ( X X T ) = I E(X{X^T}) = I E(XXT)=I,I是单位矩阵。因为有约束 E { S i 2 } = 1 E\{ {S_{\text{i}}}^2\} = 1 E{Si2}=1,所以变换后的A为正交矩阵。
FastICA迭代算法:
x = A s x = As x=As, s = A − 1 x s = {A^{ - 1}}x s=A1x,
Y = W T X . Z = A T W , Y = W T X = W T A s = Z T s Y = {W^T}X.Z = {A^T}W,Y = {W^T}X = {W^T}As = {Z^T}{\text{s}} Y=WTX.Z=ATW,Y=WTX=WTAs=ZTs
此时Y是s的线性组合,Y比s更具有高斯性,当Y等于s时,Y具有最大非高斯性。
ICA要做的就是就是要找到一个最优方向 ,使此方向的非高斯性最大,也就是负熵最大,
J g ( Y ) = H ( Y G ) − H ( Y ) {J_{\text{g}}}(Y) = H({Y_G}) - H(Y) Jg(Y)=H(YG)H(Y)
在fastICA中的近似算法为
J ( Y ) = { E { G ( Y ) } − E { G ( V ) } } 2 J(Y) = {\{ E\{ G(Y)\} - E\{ G(V)\} \} ^2} J(Y)={E{G(Y)}E{G(V)}}2,
E(.)表示均值运算,G(.)表示非线性函数,V是均值为零方差为1的高斯随机变量。
常取 G 1 ( u ) = 1 a 1 log ⁡ cos ⁡ a 1 u , G 2 ( u ) = − exp ⁡ ( − u 2 2 ) {G_1}({\text{u}}) = \frac{1}{{{a_1}}}\log \cos {a_1}u,{G_2}(u) = - \exp ( - \frac{{{u^2}}}{2}) G1(u)=a11logcosa1u,G2(u)=exp(2u2)
导数为 g 1 ( u ) = tanh ⁡ ( a 1 u ) , g 2 ( u ) = u exp ⁡ ( − u 2 2 ) {g_1}(u) = \tanh ({a_1}u),{g_2}(u) = u\exp ( - \frac{{{u^2}}}{2}) g1(u)=tanh(a1u),g2(u)=uexp(2u2)。g(.)表示为G(.)的导数。
a 1 {a_1} a1属于[1,2]中的一个合适常量,一般 a 1 {a_1} a1取1。
因为S和A是未知的所以S乘以一个标量K,A总能乘以一个1/K来抵消,即不能唯一确定S和A,因此做如下约束 E { S i 2 } = 1 E\{ {S_{\text{i}}}^2\} = 1 E{Si2}=1,既有 E { ( W T X ) 2 } = ∣ ∣ W ∣ ∣ 2 = 1 E\{ {({W^T}X)^2}\} = ||W|{|^2} = 1 E{(WTX)2}=W2=1,在此约束条件下, E { G ( W T X ) } E\{ G({W^T}X)\} E{G(WTX)} 的最适条件可通过 E { X g ( W T X ) } − β W = 0 E\{ X{\text{g}}{(W^T}X)\} - \beta W = 0 E{Xg(WTX)}βW=0来获得。
用牛顿法解此方程,定义左侧为F,则其雅克比矩阵J{F(W)}为:
J { F ( W ) } = E { X X T g ′ ( W T X ) } − β I J\{ F(W)\} = E\{ X{X^T}{g'}({W^T}X)\} - \beta I J{F(W)}=E{XXTg(WTX)}βI
上式右侧第一项可化简为:
E { X X T g ′ ( W T X ) } = E ( X X T ) E { g ′ ( W T X ) } = E { g ′ ( W T X ) } I E\{ X{X^T}g'({W^T}X)\} = E(X{X^T})E\{ g'({W^T}X)\} = E\{ g'({W^T}X)\} I E{XXTg(WTX)}=E(XXT)E{g(WTX)}=E{g(WTX)}I,则雅克比矩阵变成对角可逆的;
牛顿迭代公式有: W + = W − E { X g ( W T X ) } − β W E { g ′ ( W T X ) } − β {W^ + } = W - \frac{{E\{ Xg({W^T}X)\} - \beta W}}{{E\{ g'({W^T}X)\} - \beta }} W+=WE{g(WTX)}βE{Xg(WTX)}βW,

化简有 W + = E { X g ( W T X ) } − E { g ′ ( W T X ) } W {W^ + } = E\{ Xg({W^T}X)\} - E\{ g'({W^T}X)\} W W+=E{Xg(WTX)}E{g(WTX)}W
综上一次fastICA的算法形式为:
1.初始化向量W;
2.令 W + = E { X g ( W T X ) } − E { g ′ ( W T X ) } W {W^ + } = E\{ Xg({W^T}X)\} - E\{ g'({W^T}X)\} W W+=E{Xg(WTX)}E{g(WTX)}W
3.令 W = W + ∣ ∣ W + ∣ ∣ W = \frac{{{W^ + }}}{{||{W^ + }||}} W=W+W+;
4.若W没有收敛,则回到2。收敛意味着前后两次W在同一方向上,且3步把W单位化了,所以点积为1。(简单的说,收敛就是输入和输出差别很小。)
一次算法估计出一个W值,为了得到若干个值,则需进行若干次算法,为了防止所得到的结果收敛在同一最大值,需要对每一次的输出 W T X {W^T}X WTX去相关。
使用Gram-Schmidt去相关,因为向量的点积为1,所以有:
W p + 1 = W p + 1 − ∑ i = 1 p ( W P + 1 , W i ) W i {W_{p + 1}} = {W_{p + 1}} - \sum\limits_{i = 1}^p {({W_{P + 1}},{W_i}){W_i}} Wp+1=Wp+1i=1p(WP+1,Wi)Wi
W p + 1 = W p + 1 ∣ ∣ W P + 1 ∣ ∣ {W_{p + 1}} = \frac{{{W_{p + 1}}}}{{||{W_{P + 1}}||}} Wp+1=WP+1Wp+1

参考文献:
1.https://wenku.baidu.com/view/9af7eb115f0e7cd1842536e9.html?sxts=1591069811772
2.https://blog.csdn.net/ctyqy2015301200079/article/details/86705869
3.https://www.zhihu.com/topic/20658238/hot
4.https://blog.csdn.net/qq_44945010/article/details/89413446
5.https://wenku.baidu.com/view/ad92875a112de2bd960590c69ec3d5bbfc0ada0f.html
6.https://wenku.baidu.com/view/ebb635bf9a89680203d8ce2f0066f5335a8167d6.html

你可能感兴趣的:(算法,信号处理)