独立成分分析(Independent Component Analysis)

ICA是一种用于在统计数据中寻找隐藏的因素或者成分的方法。ICA是一种广泛用于盲缘分离的(BBS)方法,用于揭示随机变量或者信号中隐藏的信息。ICA被用于从混合信号中提取独立的信号信息。ICA在20世纪80年代提出来,但是知道90年代中后期才开始逐渐流行起来。

ICA的起源可以来源于一个鸡尾酒会问题,我们假设三个观测点x1,x2,x3,放在房间里同时检测三个人说话,另三个人的原始信号为s1,s2,s3,则求解的过程可以如下图所示:

定义

假设n个随机变量x1,x2,….xn,由n个随机变量s1,s2,…sn组成,并且这n个随机变量是相互独立的,可以用下面的公示表达:

为了表达的方便,我们可以用向量的形式来表达:

x = As

这个只不过是ICA最基本的定义,在很多实际问题中,应该包含了噪声。但是为了简化问题,我们这里忽略了噪声。因为如果模型中包含噪音,处理起来将会十分困难,而且大多数不包含噪音的模型已经能够解决很多问题,所以这里我们就将噪声先忽略。

ICA的限制条件

  • 独立成分应该是相互之间独立的。这是ICA成立的基本原则,同时,基本上可以说只需要这个原则我们就可以估计这个模型。
  • 独立成分必须是非高斯分布的。高斯分布的高阶累计量是0,但是高阶信息对于ICA的模型的估计却是十分必要的。
  • 为了简化,我们假设未知的混合矩阵A是一个方阵。

白化

白化是一种比不相关性要稍微强一些的性质。对一个零均值的随即向量y进行白化处理,就是让它的组成成分不相关,并且让变量的方差相等。也就是说,变量y的协方差矩阵是单位矩阵:

为什么独立成分是非高斯的

ICA最基本的限制条件就是独立成分必须是非高斯分布的,这或许也是ICA早期没有流行起来的原因。我们假设变量x1和x2是高斯分布的,不相关的,且方差相等:

下面的图表示联合概率分布,可以看出,我们无法判断任何关于变量x1和x2的方向信息,这就是为什么混合矩阵A不能被估计出来的原因:

峭度

在这我们讲述一个利用峭度来进行ICA模型估计的方法,ICA的估计方法很多,这只是最基础的一个方法。

对于变量y峭度可以由下面的公式定义:

峭度是可正可负的,高斯分布变量的峭度是0,这也是为什么独立成分必须是非高斯分布的原因之一。峭度为负的变量分布称为次高斯分布,峭度为正的变量的分布则为超高斯分布,下图分别是拉普拉斯分布(超高斯分布)和均匀分布(次高斯分布):

基于峭度的梯度算法

我们经常利用峭度的绝对值或者平方来进行求解:

我们通过优化这个目标函数来估计ICA模型,z表示白化后的观察数据x。

实际上,我们是使峭度极大化。我们会从某个方向向量w开始,然后计算在什么方向峭度的增长最快,我们则将方向向量w向这个方向移动。

峭度绝对值的梯度可以如下计算:

下面是一个快速不动点算法基于峭度计算的流程图:

## ICA估计的主要方法 ##
  • 通过极大化非高斯性来估计
  • 通过极大似然性来估计
  • 通过极小互信息来估计
  • 通过张量的方法来估计
  • 通过非线性分解和非线性PCA来估计

    这里,我们只是讲了其中的一个基础方法之一,并不就是最好的方法。

ICA算法的思想可以用下面的公式来描述:

ICA method = objective funtion + optimization algorithm

引用

[1]Hyv?rinen A, Karhunen J, Oja E. Independent component analysis[M]. John Wiley & Sons, 2004.

[2]Hyv?rinen A, Oja E. Independent component analysis: algorithms and applications[J]. Neural networks, 2000, 13(4): 411-430.

[3]Hyv?rinen A, Oja E. A fast fixed-point algorithm for independent component analysis[J]. Neural computation, 1997, 9(7): 1483-1492.

[4]王刚. 基于最大非高斯估计的独立分量分析理论研究 [D][D]. 国防科学技术大学, 2005.

时间: 2024-08-02 11:37:03

独立成分分析(Independent Component Analysis)的相关文章

【转载】独立成分分析(Independent Component Analysis)ICA

独立成分分析(Independent Component Analysis) 1. 问题: 1.上节提到的PCA是一种数据降维的方法,但是只对符合高斯分布的样本点比较有效,那么对于其他分布的样本,有没有主元分解的方法呢? 2.经典的鸡尾酒宴会问题(cocktail party problem).假设在party中有n个人,他们可以同时说话,我们也在房间中一些角落里共放置了n个声音接收器(Microphone)用来记录声音.宴会过后,我们从n个麦克风中得到了一组数据,i表示采样的时间顺序,也就是说

[转]独立成分分析(Independent Component Analysis)

原文地址:http://www.cnblogs.com/jerrylead/archive/2011/04/19/2021071.html 独立成分分析(Independent Component Analysis) 1. 问题: 1.上节提到的PCA是一种数据降维的方法,但是只对符合高斯分布的样本点比较有效,那么对于其他分布的样本,有没有主元分解的方法呢? 2.经典的鸡尾酒宴会问题(cocktail party problem).假设在party中有n个人,他们可以同时说话,我们也在房间中一些

斯坦福ML公开课笔记15—隐含语义索引、神秘值分解、独立成分分析

斯坦福ML公开课笔记15 我们在上一篇笔记中讲到了PCA(主成分分析). PCA是一种直接的降维方法.通过求解特征值与特征向量,并选取特征值较大的一些特征向量来达到降维的效果. 本文继续PCA的话题,包含PCA的一个应用--LSI(Latent Semantic Indexing, 隐含语义索引)和PCA的一个实现--SVD(Singular Value Decomposition,神秘值分解). 在SVD和LSI结束之后.关于PCA的内容就告一段落. 视频的后半段開始讲无监督学习的一种--IC

机器学习 —— 基础整理(四):特征提取之线性方法——主成分分析PCA、独立成分分析ICA、线性判别分析LDA

本文简单整理了以下内容: (一)维数灾难 (二)特征提取--线性方法 1. 主成分分析PCA 2. 独立成分分析ICA 3. 线性判别分析LDA (一)维数灾难(Curse of dimensionality) 维数灾难就是说当样本的维数增加时,若要保持与低维情形下相同的样本密度,所需要的样本数指数型增长.从下面的图可以直观体会一下.当维度很大样本数量少时,无法通过它们学习到有价值的知识:所以需要降维,一方面在损失的信息量可以接受的情况下获得数据的低维表示,增加样本的密度:另一方面也可以达到去噪

斯坦福ML公开课笔记15—隐含语义索引、奇异值分解、独立成分分析

斯坦福ML公开课笔记15 我们在上一篇笔记中讲到了PCA(主成分分析).PCA是一种直接的降维方法,通过求解特征值与特征向量,并选取特征值较大的一些特征向量来达到降维的效果. 本文继续PCA的话题,包括PCA的一个应用--LSI(Latent Semantic Indexing, 隐含语义索引)和PCA的一个实现--SVD(Singular Value Decomposition,奇异值分解).在SVD和LSI结束之后,关于PCA的内容就告一段落.视频的后半段开始讲无监督学习的一种--ICA(I

独立成分分析 ICA 原理及公式推导 示例

独立成分分析(Independent component analysis) 前言 独立成分分析ICA是一个在多领域被应用的基础算法.ICA是一个不定问题,没有确定解,所以存在各种不同先验假定下的求解算法.相比其他技术,ICA的开源代码不是很多,且存在黑魔法–有些步骤并没有在论文里提到,但没有这些步骤是无法得到正确结果的. 本文给出一个ICA最大似然解法的推导,以及FastICA的python实现,限于时间和实际需求,没有对黑魔法部分完全解读,只保证FastICA实现能得到正确结果. 有兴趣的童

ICA (独立成分分析)

介绍 独立成分分析(ICA,Independent Component Correlation Algorithm)简介 X=AS X为n维观测信号矢量,S为独立的m(m<=n)维未知源信号矢量,矩阵A被称为混合矩阵. ICA的目的就是寻找解混矩阵W(A的逆矩阵),然后对X进行线性变换,得到输出向量U. U=WX=WAS 过程 编辑 (1)对输入数据进行中心化和白化预处理 X*=X-u 经过白化变换后的样本数据为 Z=Wz X* (2)从白化样本中求解出解混矩阵W 通过优化目标函数的方法得到W

机器学习笔记—独立成分分析

本文介绍独立成分分析(ICA),同 PCA 类似,我们是要找到一个新的基来表示数据,但目的就不一样了. 鸡尾酒会问题:n 个人在一个 party 上同时说话,n 个麦克风放置在房间的不同位置,因为每个麦克风跟每个人的距离都不一样,所以它们记录的说话者重叠的声音也不一样.根据麦克风记录的声音,如何分离出 n 个说话者的声音呢? 为形式化这个问题,我们想象有一些数据 s∈R 是从 n 个独立的源生成的,我们观察到的是 x=As, 矩阵 A 是未知的,被称作混合矩阵,通过不断观察得到的是 {x(i);

Independent Components Analysis:独立成分分析

1. 引言 与 PCA 类似,Independent Components Analysis(ICA)同样是要找到一组新基去表示数据.但是目标大不相同. 为了阐述动机,举一个例子,考虑“鸡尾酒会问题”. 在酒会上,有 n 个演讲者同时讲话,房间里面的每一个麦克风都会记录所有演讲者声音混合起来的音频,但是由于每一个麦克风距离每一个演讲者的距离都不一样,所以没一个麦克风记录的混合音频是不一样的,那么用这些麦克风录下来的混合音频数据,我们能否将每一个演讲者的声音都区分出来呢? 为了方便讨论,假设某个数