目前比较成熟的线性盲源分离算法有很多,FastICA是其中之一。
1 ICA算法流程
(1) 归一化
首先将观测数据x
归一化,即减去其均值m=E{ x}使其具有零均值。这意味着s也是零均值的。
归一化预处理能简化ICA算法,在估计出归一后的混合矩阵A后,将计算出的分离信号s再加上s的均值A-1m。
(2) 白化
在归一化之后,线性变换观测向量x使其各成分不相关且有单位方差,即白化为新向量x',其协方差矩阵等于单位矩阵:E{ x'x'T}=I。
一种常用的白化方法对数据协方差进行特征值分解(Eigen-ValueDecomposition,EVD),即E{ xxT}=EDET,其中E是E{ xxT}特征向量的正交矩阵,D是其特征值的对角矩阵,D=diag(d1,…,dn)。因而白化操作可写为
x'=ED-1/2ETx
其中D-1/2=diag(d1-1/2,…,dn-1/2)。同理,白化混合矩阵得A',则A‘是正交的。
白化操作能减少待估计的参数。估计矩阵A要估计n2个参数,而估计正交矩阵A'只需估计n(n-1)/2个参数,这大大减小了ICA算法的计算复杂度。
(3) FastICA算法
在讨论了的ICA估计几种目标函数中,实际应用中需要一种最大化目