独立成分分析(ICA)

article/2025/11/9 7:51:28

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) 3x3可得到未知的源信号:

比较有趣的是,假设源信号之间是相互统计独立的,用独立成分分析就可以解决这个问题。 

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是它的特征值组成的对角矩阵.这样,白化可以通过白化矩阵来完成!

http://chatgpt.dhexx.cn/article/JqrWhPdo.shtml

相关文章

独立成分分析ICA系列2:概念、应用和估计原理.

1.概念 独立成分分析是从多元(多维)统计数据中寻找潜在因子或成分的一种方法.ICA与其它的方法重要的区别在于,它寻找满足统计独立和非高斯的成分。这里我们简要介绍ICA的基本概念、应用和估计原理。 1.1 多元数据的线性表示 统计数据处理及相关领域中的一…

详解独立成分分析

最近在学习数据降维的一些方法(有关数据降维的其他内容请看这篇文章),虽然独立成分分析不算是严格意义上的降维方法,但是它和PCA有着千丝万缕的联系,所以打算专门写一篇文章来学习ICA的相关知识,看了挺多的关于ICA的博文&#xff…

独立成分分析

在已知语音信号方向的情况下,波束形成能明显改善语音质量,提高信噪比;然而在实际环境中,人可能是走动的,即使坐立不动,由于身体的扭曲使得语音到达阵列的方向也是变化的,此时波束形成效果受到限…

独立成分分析(Independent Component Analysis,ICA)原理及代码实现

过程监控中会用到很多中方法,如主成分分析(PCA)、慢特征分析(SFA)、概率MVA方法或独立成分分析(ICA)等为主流算法。 其中PCA主要多用于降维及特征提取,且只对正太分布(高…

清理vdbench后台进程

当我们打开一个终端,用nohup运行vdbench程序。断开连接后,你发现你写的配置文件有误,想关闭已有的vdbench进程。你重新连接上终端,咦,我的jobs命令怎么没有显示我的nohup任务呢?这是因为你的nohup任务的sh进…

Nas性能测试工具-vdbench

版本: vdbench50406 简介: vdbench是一个 I/O 工作负载生成器,用于验证数据完整性和度量直接附加和网络连接的存储的性能。它是一个免费的工具,容易使用,而且常常用于测试和基准测试。 配置参数: 大文…

Linux中vdbench的安装与使用

vdbench是一个 I/O 工作负载生成器,用于验证数据完整性和度量直接附加和网络连接的存储的性能。它是一个免费的工具,容易使用,而且常常用于测试和基准测试。 可以使用vdbench测试磁盘和文件系统的读写性能。 环境:Ubuntu 16.04 …

vdbench和fio测试磁盘性能的对比总结

vdbench和fio测试磁盘性能的对比总结 一、安装 1、安装vdbench,首先安装java:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 其次下载vdbench安装包并进行安装:http://pan.baidu.com/s/1b7XooY&am…

vdbench使用

简介 vdbench是一个 I/O 工作负载生成器,用于验证数据完整性和度量直接附加和网络连接的存储的性能。它是一个免费的工具,容易使用,而且常常用于测试和基准测试。 可以使用vdbench测试磁盘和文件系统的读写性能。 名词解释 vdbench中常用的…

vdbench测试SSD快速入门

介绍 vdbench是一个I/O工作负载生成器,通常用于验证数据完整性和度量直接附加(或网络连接)存储性能。它可以运行在windows、linux环境,可用于测试文件系统或块设备基准性能。我们下面主要以块设备为介绍对象。 下载及安装 下载…

vdbench多主机运行指导

测试工具之vdbench多主机运行 本文介绍vdbench在多机环境下的操作和配置,以及本人在配置过程中遇到的问题和解决方法。 文章目录 测试工具之vdbench多主机运行前言一、vdbench在linux环境下多机运行1.环境参数2.配置说明二、vdbench在windows环境下多机运行1.环境参数2.配置…

Vdbench工具安装使用

一、 概述 1.1 内容简介 Vdbench 是一个命令行使用程序,旨在帮助工程师和客户生成用于验证存储性能和存储数据完 整性的磁盘 I/O 负载。还可通过输入文本文件指定 Vdbench 执行参数。它是一个免费的工具,容 易使用,而且常常用于测试和基准测试…

Vdbench工具的安装及使用

Vdbench工具的安装 Vdbench的运行依赖java环境,请务必先安装java运行环境安装java,Ubuntu OS环境安装java: apt-get install openjdk-8-jdkCentos OS环境安装: yum install openjdk-8-jdk检查是否安装成功 安装vdbench,下载vdbench50407.zip包&#…

Java jre的安装与卸载

文章目录 1. jre安装2. 卸载 Java JDK安装教程 Idea Java开发环境配置教程: https://tangxing.blog.csdn.net/article/details/112392218 1. jre安装 java下载网址: https://www.java.com/zh-CN/download/manual.jsp 这里有联机版和脱机版,…

彻底卸载jdk,jdk安装 ,javaa安装,jdk删除干净

标签: 一.备份安装好的绿色版JDK a.重新安装JDK到任意目录,假设这个目录是C:\java。 b.将装好的JDK,JRE拷贝到任意一个其他目录,如D:\bak,这样做的目的主要是为了备份JDK。(建议打成zip压缩包奔备用)二.彻底卸载JDK1.第一步,首先卸载或删除J…

Java如何卸载?怎么删掉Windows计算机上的Java?Java卸载流程详解!

大家都知道Java版本不是一成不变的,Java会朝着功能增加、漏洞修复和性能优化的方向一直进步。而公布新版Java之后,我们需要使用它,那么卸载掉旧版的Java很有必要,为什么呢? 这是Java官方给出的回复: 我们强烈建议您…

JAVA安装、配置及卸载

基本上从入门到实用非常全面了。 安装 安装Eclipse先配置jdk jdk下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html (此处以jdk8为示例) 一、安装jdk 此处默认路径即可,单击下一步 安装完成后会…

Java类的卸载机制

类的生命周期 当Sample类被加载、连接和初始化后,它的生命周期就开始了。 当代表Sample类的Class对象不再被引用,即不可触及时,Class对象就会结束生命周期,Sample类在方法区内的数据也会被卸载,从而结束Sample类的生命…

JAVA的安装与卸载

1.java的卸载 1.删除java的安装目录 2.删除系统环境变量里的JAVA_HOME和Path里面的bin目录和jre/bin目录 3.cmd输入java -version 查看是否删除取消 2.java的安装 1.百度搜索jdk1.8找到下载地址 2.双击安装文件安装 3.配置系统环境变量 1.配置环境变量JAVA_HOME&#xff…

教你如何完全卸载Java

有时候卸载Java时真的让人很烦,明明卸载了但重新安装Java时还报错,今天我就把我卸载Java的过程给大家分享一下。 1. 在控制面板中删除。(但我这么卸载之后java没有完全卸载)。 2.找到java的安装目录,直接将Java文件夹删…