独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别「建议收藏」

独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别「建议收藏」1.前言参考资料:https://www.zhihu.com/question/28845451书上写的是:1.主成分分析假设源信号间彼此非相关,独立成分分析假设源信号间彼此独立。2.主成分分析认为主元之间彼此正交,样本呈高斯分布;独立成分分析则不要求样本呈高斯分布。在利用最大化信息熵的方法进行独立成分分析的时候,需要为源信号假定一个概率密度分布函数g’,进而找出使得g(Y)=g…

大家好,又见面了,我是你们的朋友全栈君。

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维随机变量独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别「建议收藏」主成分分析(PCA)和独立成分分析(ICA)的目的都是找到一个方向,即一个n维向量独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别「建议收藏」使得线性组合独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别「建议收藏」的某种特征最大化。

2.1主成分分析 PCA

PCA认为一个随机信号最有用的信息体包含在方差里。为此我们需要找到一个方向w1,使得随机信号x在该方向上的投影w1(T)X的方差最大化。接下来,我们在与w1正交的空间里到方向w2,使得w2(T)X的方差最大,以此类推直到找到所有的n个方向wn. 用这种方法我们最终可以得到一列不相关的随机变量独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别「建议收藏」.

独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别「建议收藏」

如果用矩阵的形式,记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)。比如,求的过程可以写成独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别「建议收藏」注意其中上式中包含欧氏范数为1的约束条件,这是因为如果没有这个约束条件那么右边方差可以无限大,这个问题因而也就变得没有意义了。现假设x的协方差矩阵C为已知,那么上式可以化为独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别「建议收藏」不难看出这个问题的解为对应于矩阵C的最大的特征值的那一个特征向量。类似的,求第n个方向需要解独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别「建议收藏」这个问题的解为对应于矩阵C的第k大的特征值的那一个特征向量。
另外关于ICA,我们有下面的“ICA基本定理”:
定理(Pierre Comon, 1994)假设随机信号z服从模型z=Bs,其中s的分量相互独立,且其中至多可以有一个为高斯;B为满秩方阵。那么若z的分量相互独立当且仅当B=PD,其中P为排列矩阵(permutation matrix),D为对角矩阵。

 

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

 

3.模拟实验

不再赘述推导过程与理论分析。
可能是没有明白独立成分分析和主成成分分析的概念与用法,我补充一个对于一般鸡尾酒会(即盲源分离)问题的处理procedure,直观理解下它们的区别。对于一组3个模拟信号,如正弦、余弦、随机信号

 

经过随机混合,由6个麦克风录制下来,则观测信号为:

独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别「建议收藏」

我们希望将他们分解开,这时就该ICA出场了。但在ICA之前,往往会对数据有一个预处理过程,那就是PCA与白化。白化在这里先不提,PCA本质上来说就是一个降维过程,大大降低ICA的计算量。PCA,白化后的结果如下图所示。可以看到,原先的6路信号减少为3路,ICA仅需要这3路混合信号即可还原源信号。

独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别「建议收藏」

下面,ICA经过多步迭代寻优,就会按照信号之间独立最大的假设,将信号解混输出。

独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别「建议收藏」

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/145702.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • ubuntu更新源出现错误

    ubuntu更新源出现错误有的小伙伴出现了残留源错误,有的人说重装,有的人说改sourcelist,这些方法诚然好使,但都是高射炮打蚊子:小题大作。现在来说解决方法:先选右下九个点把乱七八糟都禁用选择重新载入…

  • asp语法教程_如何编程

    asp语法教程_如何编程ASP编程基本语句(一)Access+asp编制网站是属于动态网站,是通过把要编制的内容写入数据库里,在通过读取数据库的内容显示出来,学习目的:学会数据库的基本操作。数据库的基本操作无非是:查询记

  • input.nextInt();简单使用讲解

    input.nextInt();简单使用讲解完整的写法是先导入输入流类Scannerimportjava.util.Scanner;然后使用输入流,按照你的问题中的写法名称应该这样使用Scanner这个类Scannerinput=newScanner(System.in);//创建输入流对象inputintuserNum=input.nextInt();//使用输入流对

    2022年10月29日
  • JVM内存结构概述

    JVM内存结构概述本节将会介绍一下JVM的内存结构,JVM运行时数据区的各个组成部分:堆,方法区,程序计数器,Java虚拟机栈,本地方法栈,还会对Java堆的分代划分做个简单的介绍。目录前言JVM是什么JVM内存结构概览运行时数据区程序计数器Java虚拟机栈本地方法栈方法区运行时常量池Java堆直接内存前言JVM是Java中比较难理解和掌握的一部分,也是面试…

  • Squid 代理服务之透明代理服务器架构搭建

    文章目录1.服务器配置2.Squid服务器部署2.1修改Squid配置文件2.2开启路由转发,实现本机中不同网段的地址转发2.3修改防火墙规则3.客户端访问测试1.服务器配置服务器主机名IP地址主要软件Squid服务器squid_server内网ens33:192.168.10.20|外网ens37:10.0.0.100squidWeb服务器web_server10.0.0.200apacheWin10客户端192.1

  • java调用Oracle分页存储过程

    Java程序–创建游标包–存储过程推荐:http://www.cnblogs.com/roucheng/p/3504465.html

    2021年12月27日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号