zoukankan      html  css  js  c++  java
  • 主成分分析(PCA)和独立成分分析(ICA)相关资料

    来源:知乎:独立成分分析(ICA)与主成分分析(PCA)的区别在哪里(https://www.zhihu.com/question/28845451)
     
    - 一楼:魏天闻

    首先回答题主的问题:不管是PCA还是ICA,都不需要你对源信号的分布做具体的假设;如果观察到的信号为高斯,那么源信号也为高斯,此时PCA和ICA等价。下面稍作展开。

    ====答案的分割线====

    假设你观察到的信号是n维随机变量mathbf{x}=(x_1,ldots,x_n)^T.主成分分析(PCA)和独立成分分析(ICA)的目的都是找到一个方向,即一个n维向量mathbf{w}=(w_1,ldots,w_n)^T使得线性组合sum_{i=1}^nw_ix_i=mathbf{w}^Tmathbf{x}的某种特征最大化。

    主成分分析(PCA)

    PCA认为一个随机信号最有用的信息体包含在方差里。为此我们需要找到一个方向mathbf{w}_1,使得随机信号x在该方向上的投影mathbf{w}_1^Tmathbf{x}的方差最大化。接下来,我们在与mathbf{w}_1正交的空间里到方向mathbf{w}_2,使得mathbf{w}_2^Tmathbf{x}的方差最大,以此类推直到找到所有的n个方向mathbf{w}_1,ldots,mathbf{w}_n. 用这种方法我们最终可以得到一列不相关的随机变量:mathbf{w}_1^Tmathbf{x},ldots,mathbf{w}_n^Tmathbf{x}.

    【图片来自wikipedia】

    如果用矩阵的形式,记mathbf{W}=(mathbf{w}_1,ldots, mathbf{w}_n),那么本质上PCA是把原随机信号x变换成了mathbf{y}=mathbf{W}mathbf{x},其中y满足下面的性质:
    • y的各分量不相关;
    • y_1,ldots,y_n的方差递减。

    特别地,当原随机信号x为高斯随机向量的时候,得到的y仍为高斯随机向量,此时它的各个分量不仅仅是线性无关的,它们还是独立的。

    通过PCA,我们可以得到一列不相关的随机变量mathbf{w}_1^Tmathbf{x},ldots,mathbf{w}_n^Tmathbf{x},至于这些随机变量是不是真的有意义,那必须根据具体情况具体分析。最常见的例子是,如果x的各分量的单位(量纲)不同,那么一般不能直接套用PCA。比如,若x的几个分量分别代表某国GDP, 人口,失业率,政府清廉指数,这些分量的单位全都不同,而且可以自行随意选取:GDP的单位可以是美元或者日元;人口单位可以是人或者千人或者百万人;失业率可以是百分比或者千分比,等等。对同一个对象(如GDP)选用不同的单位将会改变其数值,从而改变PCA的结果;而依赖“单位选择”的结果显然是没有意义的。

    独立成分分析(ICA)

    ICA又称盲源分离(Blind source separation, BSS),它假设观察到的随机信号x服从模型mathbf{x}=mathbf{A}mathbf{s},其中s为未知源信号,其分量相互独立,A为一未知混合矩阵。ICA的目的是通过且仅通过观察x来估计混合矩阵A以及源信号s。

    大多数ICA的算法需要进行“数据预处理”(data preprocessing):先用PCA得到y,再把y的各个分量标准化(即让各分量除以自身的标准差)得到z。预处理后得到的z满足下面性质:
    • z的各个分量不相关;
    • z的各个分量的方差都为1。

    有许多不同的ICA算法可以通过z把A和s估计出来。以著名的FastICA算法为例,该算法寻找方向mathbf{w}使得随机变量mathbf{w}^Tmathbf{z}的某种“非高斯性”(non-Gaussianity)的度量最大化。一种常用的非高斯性的度量是四阶矩mathbb{E}[(mathbf{w}^Tmathbf{x})^4]。类似PCA的流程,我们首先找mathbf{w}_1使得mathbb{E}[(mathbf{w}_1^Tmathbf{x})^4]最大;然后在与mathbf{w}_1正交的空间里找mathbf{w}_2,使得mathbb{E}[(mathbf{w}_2^Tmathbf{x})^4]最大,以此类推直到找到所有的mathbf{w}_1,ldots,mathbf{w}_n. 可以证明,用这种方法得到的mathbf{w}_1^Tmathbf{z},ldots,mathbf{w}_n^Tmathbf{z}是相互独立的。

    ICA认为一个信号可以被分解成若干个统计独立的分量的线性组合,而后者携带更多的信息。我们可以证明,只要源信号非高斯,那么这种分解是唯一的。若源信号为高斯的话,那么显然可能有无穷多这样的分解。

    ====一些技术细节====
    实际上PCA等价于求随机信号x的协方差矩阵的特征值分解(eigenvalue decomposition, EVD)或者奇异值分解(singular value decomposition, SVD)。比如,求mathbf{w}_1的过程可以写成max_{|mathbf{w}|=1}\,	extrm{Var}(mathbf{w}^Tmathbf{x})
    注意其中上式中包含欧氏范数为1的约束条件,这是因为如果没有这个约束条件那么右边方差可以无限大,这个问题因而也就变得没有意义了。现假设x的协方差矩阵C为已知,那么上式可以化为max_{|mathbf{w}=1|} mathbf{w}^Tmathbf{C}mathbf{w}
    不难看出这个问题的解mathbf{w}_1对应于矩阵C的最大的特征值lambda_1的那一个特征向量
    类似的,求第n个方向mathbf{w}_k需要解
    max_{|mathbf{w}|=1; mathbf{w}^Tmathbf{w}_i=0, atopforall i=1,ldots,k-1} mathbf{w}^Tmathbf{C}mathbf{w}
    这个问题的解mathbf{w}_k对应于矩阵C的第k大的特征值lambda_k的那一个特征向量

    另外关于ICA,我们有下面的“ICA基本定理”:

    定理(Pierre Comon, 1994)假设随机信号z服从模型mathbf{z}=mathbf{B}mathbf{s},其中s的分量相互独立,且其中至多可以有一个为高斯;B为满秩方阵。那么若z的分量相互独立当且仅当B=PD,其中P为排列矩阵(permutation matrix),D为对角矩阵。

    这个定理告诉我们,对于原信号x做线性变换得到的新随机向量mathbf{z}=mathbf{Q}mathbf{x},若z的分量相互独立,那么z的各个分量z_i一定对应于某个源信号分量s_j乘以一个系数。到这里,我们可以看到ICA的解具有内在的不确定性(inherent indeterminacy)。实际上,因为mathbf{x}=mathbf{A}mathbf{s}=(alpha mathbf{A}) (alpha^{-1}mathbf{s}),即具备相同统计特征的x可能来自两个不同的系统,这意味着单从观察x我们不可能知道它来自于哪一个,从而我们就不可能推断出源信号s的强度(方差)。为了在技术上消除这种不确定性,人们干脆约定源信号s的方差为1。有了这个约定,再通过数据预处理的方法,我们可以把原混合矩阵A化为一个自由度更低的正交矩阵:

    数据预处理的过程又称为“数据白化”(data whitening)。这里预处理以后得到的z和源信号s的关系为
    mathbf{z}=mathbf{C}^{-1/2}mathbf{A}mathbf{s}=(mathbf{A}mathbf{A}^T)^{-1/2}mathbf{A}mathbf{s}。取widetilde{mathbf{A}}=(mathbf{A}mathbf{A}^T)^{-1/2}mathbf{A},则它可以看做一个新的混合矩阵。容易看出这是一个正交矩阵,它仅有n(n-1)/2个自由度;而原混合矩阵一般有n^2个自由度。


     
    - 二楼:牧瀬 紅莉栖

    题主可能是没有明白独立成分分析和主成成分分析的概念与用法,我给大家补充一个对于一般鸡尾酒会(即盲源分离)问题的处理procedure,直观理解下它们的区别。

    对于一组3个模拟信号,如正弦、余弦、随机信号
     
    经过随机混合,由6个麦克风录制下来,则观测信号为
     
    我们希望将他们分解开,这时就该ICA出场了。但在ICA之前,往往会对数据有一个预处理过程,那就是PCA与白化。
    白化在这里先不提,PCA本质上来说就是一个降维过程,大大降低ICA的计算量。
    PCA,白化后的结果如下图所示。可以看到,原先的6路信号减少为3路,ICA仅需要这3路混合信号即可还原源信号。
     
    下面,ICA经过多步迭代寻优,就会按照信号之间独立最大的假设,将信号解混输出。

    总的来说,ICA认为观测信号是若干个统计独立的分量的线性组合,ICA要做的是一个解混过程。
    而PCA是一个信息提取的过程,将原始数据降维,现已成为ICA将数据标准化的预处理步骤。

    参考文献:
    [1] A. Hyva ̈rinen, J. Karhunen, and E. Oja, Independent Component Analysis, Wiley-Interscience, New York, 2001
    [2] J.-F. Cardoso, “Blind signal separation: statistical principles”, Pro- ceedings of the IEEE, vol. 90, n. 8, pp. 2009-2026, October 1998.
    [3] A. Hyva ̈rinen and E. Oja, ”A Fast Fixed-Point Algorithm for Inde- pendent Component Analysis”. Neural Computation, 9(7):1483-1492, 1997.
    [4] A. Hyva ̈rinen, “Fast and Robust Fixed-Point Algorithms for Inde- pendent Component Analysis”. IEEE Trans. on Neural Networks, 10(3):626-634, 1999.
     

     
    三楼:因缘际会

    一、PCA和ICA的用途完全不同。如果只在意数据的能量或方差、假设噪声或不感兴趣的信号都比较微弱,那么用PCA就能把主要信号留下来。在某种意义上,ICA更智能——它不在意信号的能量或方差,只看独立性。所以给定的待分析的混合信号经任意的线性变换都不会影响ICA的输出结果,但会严重影响PCA的结果。

    二、若多于一个原始独立信号是正态的,那么ICA的结果不唯一;下面给个直觉。若数据在两个正交方向方差相同(比如协方差是isotropic的),PCA结果不唯一。
    大部分算法都用两步来实现ICA:第一步做白化预处理(whitening),让输出信号不相关而且同方差。第二步找一个旋转(就是正交变换)让输出信号不只不相关(uncorrelated),进而在统计意义上独立(statistically independent)。为简单起见,考虑两维的情况。

    如果原始独立信号都是正态的,第一步后输出信号的联合分布如下图:

    那么你可以看到,不管怎样旋转,输出的两个信号(在横坐标以及纵坐标上的投影)都是独立的。

    非高斯分布下情况就不同了。在下图中,原始独立的信号都是超高斯的,可以看到白化预处理后的输出虽然不相关,但并不独立:
     
    而若想让旋转之后的输出独立,只能旋转到如下位置(或者相差90度的倍数,对应于输出信号的次序或者正负号的变化):

    类似的,如果原始独立信号是均匀分布的,第二步就需要从

    旋转到

    这样就直觉上了解了为什么ICA需要假设原始独立信号的非高斯分布之后才有意义。

    三、ICA只是让输出信号尽量独立,实际应用中因种种因素,比如噪声影响、非线性因素、太多源信号的影响等等,输出往往不是完全独立。这时很多情况下ICA的输出还是包含了主要的独立的成分,是有意义的。

    四、总的来说,不相关是非常一种弱的独立性(线性独立性),一般必须配合别的性质使用才能得出唯一的结果:在PCA里就配合了能量或方差最大这个性质。而一般情况下独立性比不相关强了很多,在一定条件下,强到了足以把数据的产生过程恢复出来的地步。

    更进一步,每当我们做回归(regression),不管是线性回归还是非线性回归,噪声和predictor都是不相关的。但很多情况下,它们却不是独立的(!)。这个性质最近十年内在因果关系分析中得到很重要的应用。

     
    - 来源:机器学习中PCA和ICA的理解 - zrjdds(http://blog.csdn.net/zrjdds/article/details/50318065)
     
    PCA的问题其实是一个基的变换,使得变换后的数据有着最大的方差。方差的大小描述的是一个变量的信息量,我们在讲一个东西的稳定性的时候,往往说要减小方差,如果一个模型的方差很大,那就说明模型不稳定了。但是对于我们用于机器学习的数据(主要是训练数据),方差大才有意义,不然输入的数据都是同一个点,那方差就为0了,这样输入的多个数据就等同于一个数据了。
     

    ICA是找出构成信号的相互独立部分(不需要正交),对应高阶统计量分析。ICA理论认为用来观测的混合数据阵X是由独立元S经过A线性加权获得。ICA理论的目标就是通过X求得一个分离矩阵W,使得W作用在X上所获得的信号Y是独立源S的最优逼近,该关系可以通过该式表示:Y = WX = WAS , A = inv(W).

    ICA相比与PCA更能刻画变量的随机统计特性,且能抑制高斯噪声。从线性代数的角度去理解,PCA和ICA都是要找到一组基,这组基张成一个特征空间,数据的处理就都需要映射到新空间中去。

  • 相关阅读:
    oracle如何查询哪个表数据量大
    SecureRandom生成随机数超慢 导致tomcat启动时间过长的解决办法
    smartctl----硬盘状态监控
    Oracle数据库的状态查询
    jdbc连接数据库使用sid和service_name的区别
    V$INSTANCE 字段说明
    V$PROCESS和V$SESSION,以及使用这两个视图能做什么
    NetOps Defined
    POI 海量数据
    HTML5 CSS3 诱人的实例: 3D立方体旋转动画
  • 原文地址:https://www.cnblogs.com/minks/p/6559690.html
Copyright © 2011-2022 走看看