fastica和pca区别_ICA与PCA的区别

2023-12-19 03:40
文章标签 区别 pca ica fastica

本文主要是介绍fastica和pca区别_ICA与PCA的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

昨天晚上,海总讲了ICA,导师问了大家这么一个问题:

ICA和PCA的区别是什么?

后来我们思来想去,七嘴八舌地讨论了一下,师妹提到PCA是以贡献度的不同进行区分的,鑫总提到ICA和PCA的目标是不一致的。

这的确是一个值得讨论的问题:一开头,海冬提到ICA处理的数据都不是高斯的。这是有道理的,因为如果的高斯的,那么它的效果的确不好。

我也答不上什么,对于PCA的概念我又忘记了。

看了许多网上的回答和教程,我发现PCA实际上是最小化数据之间的方差,ICA最小化高阶统计比如四阶统计量(或者峰度),因此能最小化输出量的互信息。

PCA能提取出互相正交的高能量的信号,然而ICA确定非高斯信号的独立成分。

ICA模型等式是欠确定的系统,一个人不能够确定独立成分的方差。

一个人不能确定主导成分的排序。

今天在知乎里看到一个答案,觉得回答的非常完整:

不管是PCA还是ICA,都不需要你对源信号的分布做具体的假设;如果观察到的信号为高斯,那么源信号也为高斯,此时PCA和ICA(盲源分离)等价。

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

pca为最大化方差,使得残余方差最小,或信息损失最小(方差即信息)。

ica为最大化独立性,使联合概率与各分量概率乘积最接近。

不管是PCA还是ICA,都不需要你对源信号的分布做具体的假设

---------不对吧,PCA对分布没有假设,ICA则要求分布独立(同时不为高斯分布),两个根本不是一回事。

如果观察到的信号为高斯,那么源信号也为高斯,此时PCA和ICA等价

------ 不对吧。如果源信号有大于一个是高斯分布,ICA没有解。PCA则和分布无关。

还有一种说法:

ICA认为观测信号是若干个统计独立的分量的线性组合,ICA要做的是一个解混过程。

而PCA是一个信息提取的过程,将原始数据降维,现已成为ICA将数据标准化的预处理步骤。

书上的说法是:

主成分分析假设源信号间彼此非相关,独立成分分析假设源信号间彼此独立。

主成分分析认为主元之间彼此正交,样本呈高斯分布;独立成分分析则不要求样本呈高斯分布。

暂时只能这么死记硬背乐。

144ffdb4b241

非高斯情况下,pca的主元不是最优主元.png

Note: PCA and the SVD are the same thing and it's usually better to just use the SVD of the centered data matrix because SVD algorithms are faster and numerically more stable than PCA.

Note2: In some cases NMF (non negative matrix factorization) can work as ICA. In NMF the basis you want to find is the one that helps you reconstruct the data as a positive summation over the basis vectors. This means the basis will have vectors that represents parts of your original data, if your data contains images then the NMF basis contains parts of images that will help you reconstruct any of your images in the dataset.

这篇关于fastica和pca区别_ICA与PCA的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/510786

相关文章

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

Go之errors.New和fmt.Errorf 的区别小结

《Go之errors.New和fmt.Errorf的区别小结》本文主要介绍了Go之errors.New和fmt.Errorf的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考... 目录error的基本用法1. 获取错误信息2. 在条件判断中使用基本区别1.函数签名2.使用场景详细对

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片

一文带你迅速搞懂路由器/交换机/光猫三者概念区别

《一文带你迅速搞懂路由器/交换机/光猫三者概念区别》讨论网络设备时,常提及路由器、交换机及光猫等词汇,日常生活、工作中,这些设备至关重要,居家上网、企业内部沟通乃至互联网冲浪皆无法脱离其影响力,本文将... 当谈论网络设备时,我们常常会听到路由器、交换机和光猫这几个名词。它们是构建现代网络基础设施的关键组成

redis和redission分布式锁原理及区别说明

《redis和redission分布式锁原理及区别说明》文章对比了synchronized、乐观锁、Redis分布式锁及Redission锁的原理与区别,指出在集群环境下synchronized失效,... 目录Redis和redission分布式锁原理及区别1、有的同伴想到了synchronized关键字

JAVA覆盖和重写的区别及说明

《JAVA覆盖和重写的区别及说明》非静态方法的覆盖即重写,具有多态性;静态方法无法被覆盖,但可被重写(仅通过类名调用),二者区别在于绑定时机与引用类型关联性... 目录Java覆盖和重写的区别经常听到两种话认真读完上面两份代码JAVA覆盖和重写的区别经常听到两种话1.覆盖=重写。2.静态方法可andro

C++中全局变量和局部变量的区别

《C++中全局变量和局部变量的区别》本文主要介绍了C++中全局变量和局部变量的区别,全局变量和局部变量在作用域和生命周期上有显著的区别,下面就来介绍一下,感兴趣的可以了解一下... 目录一、全局变量定义生命周期存储位置代码示例输出二、局部变量定义生命周期存储位置代码示例输出三、全局变量和局部变量的区别作用域

MyBatis中$与#的区别解析

《MyBatis中$与#的区别解析》文章浏览阅读314次,点赞4次,收藏6次。MyBatis使用#{}作为参数占位符时,会创建预处理语句(PreparedStatement),并将参数值作为预处理语句... 目录一、介绍二、sql注入风险实例一、介绍#(井号):MyBATis使用#{}作为参数占位符时,会

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab