大家好,又见面了,我是你们的朋友全栈君。
PCA是一个降维的过程,ICA则是帮助你从多个维度分离有用数据的过程。
独立成分分析思想和方法最早源于上世纪八十年代几个法国学者的研究工作,尽管当时他们并没有命名其为ICP;在1986年举行的神经网络计算会议上,法国学者Heraull和Jutten提出了一个基于神经网络模型和Hebb学习准则的方法,来解决盲源分离问题,简称BSS. 混合信号是由相互统计独立的源信号混合而成的。这篇文章提出的算法可以解决具有两个源信号混合的盲源分离问题。他们的工作开创了信号处理领域的新纪元,从此盲源分离问题得到了各国学者的广泛重视。但在当时,仅为法国学者所研究,在国际上的影响十分有限。八十年代国际神经网络会议上,当时少数有关的文章被埋没于back-propagation网络、Kohonen自组织网络的研究热潮中,并没有引起各国学者足够的重视。 进入到上世纪九十年代初期,某些学者开始了这方面的研究,他们扩展了八十年代有关盲分离问题的一些工作,其中,学者Cichochi和Unbehauen提出了当时较为流行的ICP算法。芬兰学者Ojs,Ksrhunen,等提出了“非线性ICP ”方法,然而,直到九十年代中期,仍然只得到少数学者的关注,主要原因是这些学者提出的算法所能解决的问题是相当有限的。 事实上,解决盲源分离问题是一个非常困难的任务,因为我们不知道源信号的任何信息,在Heraull和Jutten提出的算法中,只作了两个假设: 一个是假设源信号是相互统计独立的, 另一个是假设己知源信号的统计分布特征。如果假设源信号是高斯分布的,则很容易看出这个盲源分离问题没有一般的解,因为高斯分布的任何线性混合仍然是高斯。用Heraull-Jutten的网络模型解决盲源分离问题,需要假设源信号是亚高斯信号,也就是说源信号的峰度值要小于高斯信号的峰度值!!! 直到1994年,法国学者Comon,Heraull和Jutten提出的独立成分分析问题给出了一个较为清晰的数学上的框架,从此成为文献中的正式用语。 ICP获得广泛的关注和持续增长的研究兴趣归功于美国学者Bell和Sejnouski在九十年代发表的里程碑式的论文,他们的方法基于信息极大化原理,这个算法进一步由日本学者和他的合作者用自然梯度完善,其本质上是极大似然估计方法。 几年以后,芬兰学者Hyvarrinen和Oja提出Fixed-Point算法(不动点算法),或称为FastICA。因为它对大规模问题特别有效,而得到了广泛的应用。 解决标准的独立成分分析只需假设源信号是相互统计独立的,并且满足非高斯性,到目前为止,标准的独立成分分析算法己经较为成熟,国际上使用最为广泛的是信息极大化算法、FastICA算法、扩展的信息极大化算法和ECSI算法等。 标准的独立成分分析的数学模型较为简单,不同的独立性判据所导致的算法在形式上也是基本相似的。形势虽然简单,但到目前为止,以实际的生物医学信号处理为例,研究者大量使用的主要还是标准的算法,主要因为它发展的最为成熟,计算稳定,较少有数值问题,并且网上有相关作者编制的通用软件包可用于研究下载在真实数据的处理过程中,可尽量将所面临的问题转化为标准的问题,然后选用有效的算法来解决它因为真实数据往往规模比较大。 选择在实算中收敛速度快,计算稳定的算法是相当重要的,最初所希望解决的鸡尾酒会问题是极为复杂和困难的,实际的盲源分离问题又是方方面面,需要将各种实际情况转化为相应的数学模型来解决, 现在人们重点研究的是扩展的独立成分分析,其模型是标准的模型的扩展和补充,来进一步满足实际需要,比如具有噪声的独立成分分析阵,稀疏和超完备表示问题,具有时间结构的独立成分分析问题,非线性的独立成分分析和非平稳信号的独立成分分析等. 独立成分分析己经被广泛应用于实际数据的处理中,诸如图像处理、语音信号处理、生物医学信号处理、模式识别、数据挖掘、通讯等。
2.ICA研究的意义
假设在一个房间内有两个人同时讲话,在房间的不同位置有两个麦克风,而每个麦克风记录下来的是两个人声音信号的混合。我们的问题是如何仅利用麦克风的混合声音信息来获得每个讲话者所说的话即源信号这就是著名的鸡尾酒会问题。 人类复杂的听觉系统可以很好的解决这个问题,将注意力集中于一个说话者,人们可以听出他所说的话但如何利用计算机,或利用机器,使其智能化,来模仿人类并有效的解决这个问题这个问题相当令人感兴趣,它属于智能信息处理的范畴。独立成分分析就是解决鸡尾酒会问题的有效方法,或者说解决盲源分离问题的有效方法。在上世纪九十年代之前,没有独立成分分析这个工具,解决此类问题是相当之难的。 解决盲源分离问题的一个主要困难在于,我们不知道源信号的任何信息,也不清楚信号的混合方式。但假设源信号是相互统计独立的,就可以应用独立成分分析这一工具很好的解决这个问题。在大量的实际问题中,这个假设是合理的,符合实际的情况,这样,独立成分分析被广泛地应用于解决实际问题。标准的独立成分分析需要的另一个假设是信号的非高斯性,现实世界的许多信号,诸如绝大多数的语音信号和图像信号即是服从非高斯分布的这个假设的可应用性,带来了独立成分分析的重要特征,即 实际信号的统计特性仅用普通的基于二阶统计量方法是不能反映的, 独立成分分析追求的是信号的高阶统计信息,应用上的广泛性和技术上的更高要求,使得独立成分分析成为国际上的研究热点。 目前独立成分分析己经成功地应用在图像处理、语音信号处理、生物医学信号处理、模式识别、数据挖掘、通讯和金融等领域。信号处理及多元统计领域的基本问题是寻找信号,比如语音和图像数据的一个恰当的线性表示、数据压缩和数据的去噪声等,独立成分分析已经成功的用于解决这些问题,与传统的方法比如傅利叶基表示、小波基表示等相比较有许多优点。在生物医学信号处理领域,独立成分分析发挥了巨大的作用,它比传统的方法更优越,比如相关性分析和主成分分析。ICA己经成功地用于EEG、MEG、EPR等医学信号的处理。具体以在功能磁共振成像fMRI数据分析中的应用为例来说明它的作用。人脑受到外界的任务刺激后,它的激活区域是各种可能存在的信号在脑内的综合反应,比如这些信号可能包括 任务信号、心脏的跳动、肌肉的收缩、呼吸和机器噪声等,把这些信号看作是相互统计独立的,则独立成分分析对fMRI数据分析的目的就是找出真正与脑激活有关的独立成分,去除与其它干扰噪声相应的独立成分。众所周知,对fMRI信号的研究大多是在假定己知事件相关时间过程曲线的情况下,利用相关性分析得到脑的激活区域.就像上面所提到的,将fMRI信号分析看作是一种盲源分离问题,在不清楚有哪几种因素对fMRI信号有贡献、也不清楚其时间过程曲线的情况下,用空间独立成分分析方法对fMRI信号进行盲源分离,提取不同独立成分得到任务相关成分、头动成分、瞬时任务相关成分、噪声干扰、以及其它产生fMRI信号的多种源信号。 与主成分分析相比较发现,独立成分分析能得到更多的脑内激活信号,并且在相同的阈值情况下,独立成分分析的激活区域更大,可见独立成分分析是一个比较优越的数据处理方法,能够广泛的应用于数据分析,因此研究独立成分分析具有重要的现实意义。
1.概念
独立成分分析是从多元(多维)统计数据中寻找潜在因子或成分的一种方法.ICA与其它的方法重要的区别在于,它寻找满足统计独立和非高斯的成分。这里我们简要介绍ICA的基本概念、应用和估计原理。 1.1 多元数据的线性表示
统计数据处理及相关领域中的一个重要和需要长期研究的问题就是,寻找多元数据一个恰当的表示,使得人们可以获得给定数据的本质特征或者使得数据的结构可视化。 在神经计算领域中,这个基本问题也就是非监督学习(unsupervised learning)问题,因为这种表示是从数据本身学习得来的,即给定某个数据集作为神经网络的输入,在没有导师的情况下,通过神经网络学习得到数据的本质特征.这种数据表示问题是数据挖掘、特征提取和信号处理的核心问题。 为了更为清楚的说明这个问题,假设我们已经获得了m维的观测数据集xi(t),其中{i=1,…,m及t=1,…,T,这里t表示观测样本点的个数,m和t的数目可以非常之大.我们可以提出这样一个问题:通过怎样的一个映射,使得m维数据空间变换到另一个n维数据空间,使得变换后的变量能够揭示观测数据的某些信息,而这些信息是隐藏在原始的大规模数据中的.变换后的变量就是所谓的“因子”或者是“成分”,能够描述数据的本质特征. 在绝大多数的例子中,我们仅考虑线性变换,这样不仅使表示的解释简单,计算上也简单易行.这样,每一个成分yi可以表示为观测变量的线性组合:
其中Wij(i=1,…,n,j=1,…,m)是某些常系数,这些系数就定义了这个线性表示.因此可以看出,为了得到数据yi的线性表示,必须求出未知系数Wij.简单起见,这种数据的表示可写成矩阵的形式:
在统计的框架下,问题转化为通过成分yi的某些统计特性来求解系数矩阵W。 选择矩阵W的一个统计原理是限制成分yi的个数相当之少,也许只有1或2,寻找矩阵W以便成分尽可能的包含原始数据的信息.这导致统计技术如主成分分析(principal component analysis,PCA)、因子分析(factor analysis,FA)的出现,它们是进行统计数据处理、特征提取、数据压缩等比较经典的技术。 寻找矩阵W的另一个统计原理是统计独立性:假设成分yi之间是统计独立的.这意味着其中一个成分没有受到另一个成分的任何影响,成分之间没有任何信息传递.在因子分析中,经常声称因子之间是统计独立的,这个说法只是部分正确,因为因子分析假设因子是服从高斯分布的,找到独立的方法相当容易(对于高斯分布的成分来说,不相关与独立是等价的)。 而在现实世界中,数据通常并不服从高斯分布,假设成分服从高斯分布的方法在这种情况下是失效的.例如,许多真实世界的数据集是服从超高斯分布的(supergaussian).这意味着随机变量更经常的在零附近取值,与相同方差的高斯密度相比,超高斯分布在零点更尖! 事实上,存在度量随机变量y非高斯性的一个测度,峰度是度量非高斯性的一个比较传统的方法.y的蜂度kurt(y)在统计学上是用四阶统计量来表示的:
这个表达式可以进一步简化,假设随机变量的方差为单位方差,E{y^2}=1,则上述表达式就可以表示为:
通常在信号处理领域有如下约定:峰度值为正值的随机变量称为超高斯分布的随机变量(super-gaussian);峰度值为负值的随机变量称为亚高斯分布的随机变量(sub-gaussian);而高斯分布的随机变量的峰度值为零。形象的说,服从超高斯分布的随机变量比高斯分布更尖(spiky),拉普拉斯分布(Laplacian distribution)就是一 个典型的超高斯分布密度函数;服从贬高斯分布的随机变量比高斯分布更平(filat),均匀分布(Uniform distribution)就是一个典型的亚高斯分布密度函数。
2.盲源分离
2.1 未知信号的观测混合
考虑这样一种情况,由某些物体或源发出的一组信号,这些源可能包括,例如,发出电信号的不同脑区;在一个房间说话的几个人,发出语音信号;发出雷达信号的移动电话,等等.进一步假设有几个传感器或接收器,这些传感器放置在不同的位置上,这样,每个传感器纪录的是源信号带有不同权重的混合.前面所说的鸡尾酒会问题就符合这样的情况。 举一个具体的例子来说明盲源分离问题.用s1(t),s2(t)和s3(t)表示三个源信号,分别表示在t时刻的幅度,用x1(t),x2(t)和x3(t)表示三个观测信号.x(t)是s(t)的权重和:
其中常系数aij(i,j∈{1,2,3})表示混合权重,与源信号和传感器的距离有关.这些混合系数是未知的,既然我们在一般情况下很难知道混合系统的性质.源信号也是未知的,因为我们不能直接记录它们。
作为解释,见上图所示的波形.它们是某些源信号的线性混合。它们看上去完全是一些噪声信号,实际上,有些具有结构的源信号隐藏在这些观测信号中。 我们想要做的就是从混合信号x1(t),x2(t)和x3(t)中找到源信号,这就是盲源分离问题(blind source separation,BSS).盲指的是源信号未知,混合系统未知(混合系数未知)。 为了使问题简单化,假设由未知系数aij(i,j∈{1,2,3))所构成的系数矩阵是可逆的。则由它的逆矩阵w=(wij) 3×3可得到未知的源信号:
比较有趣的是,假设源信号之间是相互统计独立的,用独立成分分析就可以解决这个问题。 2.2 基于独立的源分离 现在我们的问题是:如何估计如上方程中的系数wij?我们想要获得一般的方法,事实上,又回到刚开始的问题,即寻找多维数据的好的表示。因此,我们使用非常一般的统计性质.我们所得到的是混合信号值,需要找到矩阵W,使得表示由源信号si给出。 这个问题的一个令人感到吃惊的解是考虑信号的统计独立性。事实上,如果信号是非高斯的,我们可以决定系数wij以便信号:
是统计独立的。如果信号yl,y2和y3是独立的,则可认为它们就是所要求的源信号sl,s2和s3。 利用统计独立性这一信息,我们可以估计系数矩阵w.对于上图所示的观测信号,用ICA算法估计系数矩阵w,所得到的源信号如下图所示。这些用算法所估计出的信号实际上就是创建混合信号的源信号。
3.独立成分分析模型
我们首先给出标准的(即源信号的个数等于混合信号的个数)无噪声独立成分分析的线性模型.标准的线性独立成分分析模型的矩阵形式为X=AS; 其中随机向量X=(x1,x2,…,xn)表示观测数据或观测信号(observed data),随机向量S=(s1,s2,…,sn)表示源信号,称为独立成分(independent components),A称为nxn的混合矩阵(mixing matrix),在该模型中,X表示的是一个随机向量,x(t)表示随机向量X的一个样本.假设源信号是相互统计独立的。 这就是标准的独立成分分析模型,可以看作是一个生成模型(generativemodel),它的意思是说观测信号是通过源信号混合而生成的,在这个意义下,独立成分也称为隐含或潜在交量(hidden/latent , nariable ),也就是说这些独立成分是无法直接观测到的,另一方面,混合系数矩阵A也是未知的.独立成分分析的任务就是:在只知道观测信号X的T个样本x(1),…,x(T),且在源信号S和混合矩阵A未知的条件下,假设源信号si(0=1,…,n)之间是相互统计独立的,来求解混合矩阵A和源信号s。 3.1 独立成分分析的假设条件
为了实现独立成分分析,必须给出几个假设条件: a.各个成分之间是相互统计独立的. 这是独立成分分析的一个基本原则.比较有趣的是假设统计独立这个原则,就可以实现ICA模型的估计。这也是独立成分分析可以广泛应用在许多领域的一个重要原因.直观的说,如果任意的随机变量序列y1,y2,…,yn之间是相互统计独立的,则这就意味着从随机变量yi(i=1,…,n)的信息中不能得到随机变量yj(i≠j)的任何信息。随机变量之间的统计独立性可以通过概率密度函数来精确的刻画。如果用p(y1,…,yn)表示yi(0=1,…,n)的联合概率密度函数(joint probability density function),用pi(yi)表示随机变量yi(1=1,…,n)的边际概率密度 函数(marginal probability density function),那么我们说yi(i=1,…,他)是相互统计独立的,如果满足:
b.独立成分是服从非高斯分布的. 直观的说,高斯信息太过于“简单”,真正有意义的信息是服从非高斯分布的信息。高斯随机变量的高阶累积量为零,而对于独立成分分析而言,高阶信息是实现独立成分分析的本质因素,这也是独立成分分析和其它数据处理方法诸如主成分分析和因子分析的本质区别.况且,真实世界的许多数据是服从非高斯分布的.事实 上,标准的独立成分分析也可以考虑为非高斯因子分析(nongaussian factor analysis)。Comon,Hyviirinen详细说明了独立成分必须是非高斯的原因,一般的,在标准的独立成分分析中最多只允许有一个成分服从高斯分布。如果独立成分中有两个以上的高斯成分,用标准的独立成分分析来处理这样的数据是不可能的。标准的独立成分分析只挖掘数据的非高斯结构,在某些思想上与投影寻踪(projection pursuit)相似,如果需要进一步挖掘数据的其它信息,应发展新的思想来解决更为复杂的情况.有一些学者致力于这方面的研究,例如利用数据或信号的时间结构和相关的信息来完成这样的任务。 c.假设混合矩阵是方阵. 事实上,对于标准的独立成分分析而言,还有一个假设就是混合矩阵为方阵.也就是说,独立成分的个数等于观测混合信号的个数,进一步假设混合矩阵A是可逆的,这可以使得计算简单化,求混合矩阵A就等价于求它的逆矩阵w,则源信号就可以很容易的得到:S=(W-1)X。 对于标准的独立成分分析而言,当给定上述的三个条件时,独立成分分析就是可实现的,也就是说混合矩阵和独立成分是可以求解的。 3.2 独立成分分析无法确定的因素 从独立成分分析的模型可以看出下列因素是很难确定的: a.不能确定独立成分的方差、能量。 事实上,原因是很明显的,由于混合矩阵和独立成分都是未知的,如果对独立成分乘上某个标量ai≠0,或同时对混合矩阵相应的除以一个相同的标量,则不影响混合信号的值。 因此,在独立成分分析算法中,可以固定独立成分的方差,由于独立成分是随机变量,则最自然的方法就是假设独立成分具有单位方差。 b.不能确定独立成分的顺序. 在独立成分分析的绝大多数应用中,这两个不确定性并不是十分重要的,用ICA算法所得到的解能够满足相当多的实际应用,所得到的源信号的幅度和排序对于通常所考虑的问题影响不大.所以我们可以说独立成分分析所求得的解是波形保持解.在某些特殊的应用中,我们需要确定输出成分的顺序,可以通过某些统计量的大小来规定输出独立成分的顺序,这样的规定,使得这个问题转化为一个具有某些约束的问题,即标准的ICA问题转化为约束ICA问题。 3.3数据的中心化 不失一般性,我们可以假设混合变量和独立成分是零均值的.这个假设在相当程度上简化了算法,如无特殊说明,假设混合变量和独立成分都是零均值的. 如果零均值并不成立,我们可以通过预处理来达到这个条件.一般的,我们使用中心化观测变量这一技术,即减去样本均值. 3.4 不相关和白化 独立和不相关(uncorrelated)是紧密相关的概念,因此,可以设想使用估计不相关变量的方法来同样估计独立成分,这样的典型方法为白化(whitening)或球化(sphering),通常由主成分分析(principal component analysis)来进行.但用这样的方法来估计独立成分通常是不可行的,一般的,白化是以独立成分分析的预处理技术身份出现的。 不相关是独立的较弱形式,两个随机变量y1,y2是不相关的,那么它们的协方差是零:
如果随机变量是零均值的,协方差化为相关coor(y1,y2)=E{y1,y2),不相关相当于零相关. 如果随机变量是独立的,它们即是不相关的.这是因为两个随机变量y1和y2是独立的,那么对于任意两个函数h1和h2,我们有:
这就是我们常说的,独立意味着不相关,而不相关并不意味着独立。 比不相关稍强的概念是白化.白化的随机向量y与它的各分量是不相关的,并且具有单位方差.换句话说,随机向量Y的协方差矩阵是单位阵:
白化意味着我们将观测数据向量x进行线性变换,使得新向量
是白化的随机向量.白化有时称为球化. 白化变换总是可行的.白化的一个流行方法是协方差矩阵的特征值分解(EVD):
这里,E是E(XXT)的特征向量组成的正交矩阵,D是它的特征值组成的对角矩阵.这样,白化可以通过白化矩阵
来完成!
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145588.html原文链接:https://javaforall.cn