大家好,又见面了,我是你们的朋友全栈君。
1.前言
参考资料:https://www.zhihu.com/question/28845451
书上写的是:
1. 主成分分析假设源信号间彼此非相关,独立成分分析假设源信号间彼此独立。
2. 主成分分析认为主元之间彼此正交,样本呈高斯分布;
独立成分分析则不要求样本呈高斯分布。
在利用最大化信息熵的方法进行独立成分分析的时候,需要为源信号假定一个概率密度分布函数g’,进而找出使得g(Y)=g(Wx)的信息熵最大的变换W,即有Y=s。
我的问题是,
1. 这个概率密度分布函数怎么假定?在实际信号处理中怎么给出?2. 如果我观测到信号呈高斯分布,取g’为高斯分布,那么ICA和PCA得到的结果会相同吗?
2.解析
不管是PCA还是ICA,都不需要对源信号的分布做具体的假设;如果观察到的信号为高斯,那么源信号也为高斯,此时PCA和ICA等价。下面稍作展开。
假设观察到的信号是n维随机变量主成分分析(PCA)和独立成分分析(ICA)的目的都是找到一个方向,即一个n维向量使得线性组合的某种特征最大化。
2.1主成分分析 PCA
PCA认为一个随机信号最有用的信息体包含在方差里。为此我们需要找到一个方向w1,使得随机信号x在该方向上的投影w1(T)X的方差最大化。接下来,我们在与w1正交的空间里到方向w2,使得w2(T)X的方差最大,以此类推直到找到所有的n个方向wn. 用这种方法我们最终可以得到一列不相关的随机变量.
如果用矩阵的形式,记W=(w1,w2,w3,…,wn),那么本质上PCA把原随机信号x变换成了y=wX;其中y满足下面的性质:
y的各分量不相关;
y1,y2,…,yn的方差递减;
特别地,当原随机信号x为高斯随机向量的时候,得到的y仍为高斯随机向量,此时它的各个分量不仅仅是线性无关的,它们还是独立的。通过PCA,我们可以得到一列不相关的随机变量w1X,w2X,w3X,…,wnX;至于这些随机变量是不是真的有意义,那必须根据具体情况具体分析。最常见的例子是,如果x的各分量的单位(量纲)不同,那么一般不能直接套用PCA。比如,若x的几个分量分别代表某国GDP, 人口,失业率,政府清廉指数,这些分量的单位全都不同,而且可以自行随意选取:GDP的单位可以是美元或者日元;人口单位可以是人或者千人或者百万人;失业率可以是百分比或者千分比,等等。对同一个对象(如GDP)选用不同的单位将会改变其数值,从而改变PCA的结果;而依赖“单位选择”的结果显然是没有意义的。
2.2 独立成分分析
ICA又称盲源分离(Blind source separation, BSS),它假设观察到的随机信号x服从模型x=As,其中s为未知源信号,其分量相互独立,A为未知混合矩阵。ICA的目的是通过且仅通过观察x来估计混合矩阵A以及源信号s。
大多数ICA的算法需要进行“数据预处理”(data preprocessing):先用PCA得到y,再把y的各个分量标准化(即让各分量除以自身的标准差)得到z。预处理后得到的z满足下面性质:
z的各个分量不相关;
z的各个分量的方差都为1。有许多不同的ICA算法可以通过z把A和s估计出来。以著名的FastICA算法为例,该算法寻找方向使得随机变量的某种“非高斯性”(non-Gaussianity)的度量最大化。一种常用的非高斯性的度量是四阶矩E[(WTX)4]。类似PCA的流程,我们首先找w1使得E[(w1TX)4]最大;然后在与w1正交的空间里找w2,使得E[(wTX)4]最大,以此类推直到找到所有的w1,w2,w3,…,wn. 可以证明,用这种方法得到的是相互独立的w1Tz,w2Tz,w3Tz,…,wnTz。
ICA认为一个信号可以被分解成若干个统计独立的分量的线性组合,而后者携带更多的信息。我们可以证明,只要源信号非高斯,那么这种分解是唯一的。若源信号为高斯的话,那么显然可能有无穷多这样的分解。=====================================一些技术细节=====================================
实际上PCA等价于求随机信号x的协方差矩阵的特征值分解(eigenvalue decomposition, EVD)或者奇异值分解(singular value decomposition, EVD)。比如,求的过程可以写成注意其中上式中包含欧氏范数为1的约束条件,这是因为如果没有这个约束条件那么右边方差可以无限大,这个问题因而也就变得没有意义了。现假设x的协方差矩阵C为已知,那么上式可以化为不难看出这个问题的解为对应于矩阵C的最大的特征值的那一个特征向量。类似的,求第n个方向需要解这个问题的解为对应于矩阵C的第k大的特征值的那一个特征向量。
另外关于ICA,我们有下面的“ICA基本定理”:
定理(Pierre Comon, 1994)假设随机信号z服从模型z=Bs,其中s的分量相互独立,且其中至多可以有一个为高斯;B为满秩方阵。那么若z的分量相互独立当且仅当B=PD,其中P为排列矩阵(permutation matrix),D为对角矩阵。
这个定理告诉我们,对于原信号x做线性变换得到的新随机向量,若z的分量相互独立,那么z的各个分量zi;一定对应于某个源信号分量sj乘以一个系数。到这里,我们可以看到ICA的解具有内在的不确定性(inherent indeterminacy)。实际上,因为,即具备相同统计特征的x可能来自两个不同的系统,这意味着单从观察x我们不可能知道它来自于哪一个,从而我们就不可能推断出源信号s的强度(方差)。为了在技术上消除这种不确定性,人们干脆约定源信号s的方差为1。有了这个约定,再通过数据预处理的方法,我们可以把原混合矩阵A化为一个自由度更低的正交矩阵.
3.模拟实验
不再赘述推导过程与理论分析。
可能是没有明白独立成分分析和主成成分分析的概念与用法,我补充一个对于一般鸡尾酒会(即盲源分离)问题的处理procedure,直观理解下它们的区别。对于一组3个模拟信号,如正弦、余弦、随机信号
经过随机混合,由6个麦克风录制下来,则观测信号为:
我们希望将他们分解开,这时就该ICA出场了。但在ICA之前,往往会对数据有一个预处理过程,那就是PCA与白化。白化在这里先不提,PCA本质上来说就是一个降维过程,大大降低ICA的计算量。PCA,白化后的结果如下图所示。可以看到,原先的6路信号减少为3路,ICA仅需要这3路混合信号即可还原源信号。
下面,ICA经过多步迭代寻优,就会按照信号之间独立最大的假设,将信号解混输出。
总的来说,ICA认为观测信号是若干个统计独立的分量的线性组合,ICA要做的是一个解混过程。
而PCA是一个信息提取的过程,将原始数据降维,现已成为ICA将数据标准化的预处理步骤。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/145702.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...