Files
obsidian_sycn/知识管理/理论知识/基础理论/信号处理/独立分量分析(independent component analysis, ICA).md
T
2026-07-31 15:28:08 +08:00

135 lines
9.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 1. 盲源分析(BSS)
1. 盲源分离指在完全不知道任何先验知识或者只知道少量先验知识的情况下,只利用观测信号提取或分离出各个源信号的方法[[#^f9e7f7]]
3. 这里的“盲”是指:1.源信号是不可观测的;2.混合系统是事先未知的。
4. 常用方法:
1. 独立分量分析(ICA)
2. 熵最大化方法
3. 非线性主分量分析
> 可以证明,独立分量分析和熵最大化方法是等价的[[#^f9e7f7]]
## 2. 概览
### 2.1 用途
ICA是BSS的一种常用方法,用于从观测信号中提取或分离原始信号;
### 2.2 基本原理
根据中心极限定理,对于混合信号,其概率密度比任何一个源信号的概率分布都接近高斯分布;反过来,最大化信号的非高斯性与最大化信号的统计独立性是一致的,这是ICA的基本原理[[#^62f060]]。
### 2.3 前提
使用ICA分离原始信号时,应满足以下前提[[#^7903a9]]
1. 独立性,即原始信号是相互独立的;
2. 非高斯性,即原始信号不服从高斯分布,换言之,ICA无法提取混合信号中符合高斯分布的原始信号;
3. 复杂性,即混合信号的复杂度应大于所有的原始信号;
## 4. 独立性评估方法[[#^7903a9]]
ICA有三种评估分量独立性的方法:1. 基于非高斯度;2. 基于互信息度;3. 基于最大似然估计;
### 4.1 基于非高斯度的方法
ICA常用峭度和负熵来衡量独立分量的非高斯度:
1. 峭度(Kurtosis): 峭度可以用来评估信号的非高斯度,因此通过寻找让峭度最大的矩阵来提取混合的信号;基于峭度的方法优点是容易计算,但是峭度对异常值十分敏感,因此该方法的鲁棒性不高。峭度(K)定义如下:
$$
K= E[x^4]-3(E[x^2])^2
$$
2. 负熵(Negative entropy): 由信息论理论可知,在所有等方差的随机变量中,高斯变量的熵最大,所以可以利用熵来度量非高斯性。一般采用熵的修正形式——负熵来评价独立成分的非高斯度,根据中心极限定理,当一个随机变量是许多相互独立的随机变量之和时,如果这些随机变量具有有限的均值和方差,那么这个随机变量越接近高斯分布[[#^bff01c]]。因此,当独立成分分离的负熵达到最大时,说明完成各独立成分的分离。负熵(J)的定义如下:
$$
J(y)=H(y_{Gaussian})-H(y))
$$
其中,$H(y_{Garussian})$代表协方差矩阵与y相同的高斯变量的熵;
> 应注意,负熵永远是非负值,因为在协方差相同的条件下,高斯分布具有最大的熵,当且仅当所有变量均服从高斯分布时,负熵为0;
### 4.2 基于互信息度的方法
互信息是一种用于衡量两个随机变量之间相互依赖程度的指标。给定两个随机变量X和Y,它们的互信息I(X;Y)定义为它们联合概率分布p(x,y)与它们各自的边缘概率分布p(x)和p(y)之间的差异,其定义为:
$$
I(X,Y)=H(X)-H(X|Y)=H(Y)-H(Y|X)
$$
其中,H(X)和H(Y)分别是X和Y的熵,H(X|Y)和H(Y|X)分别是在给定Y和X的条件下X和Y的条件熵。互信息的值越大,表示两个变量之间的相互依赖程度越高,反之则越低。
在ICA中,互信息用于衡量两个分离出来的信号之间的独立性程度。基于互信息的方法通过最小化互信息来获取独立成分。
### 4.3 基于最大似然估计的方法
基于最大似然估计的方法和基于互信息度的方法本质上是等价的,仅相差符号和一个常数;应该注意到,如果关于独立分量的先验知识是错误的,那么最大似然估计可能会给出错误的结果,但是基于非高斯度的方法并不需要任何先验知识。
### 4.4 迭代缩减
非高斯性测量指标可以使得独立成分的逐个估计成为可能,这是互信息或似然方法所不能实现的。在ICA中,通常使用一种称为“迭代缩减”(deflationary)的方法,该方法一次估计一个独立成分。在每一次迭代中,使用非高斯性测量指标来选择最不高斯的信号作为下一个独立成分。这种方法通常比同时估计所有独立成分的方法更有效。
与互信息或似然方法相比,使用非高斯性测量指标具有更好的性质。互信息和似然方法通常需要一次性估计所有的独立成分,因此可能存在估计过程中的交叉干扰,导致估计结果不准确。而使用非高斯性测量指标则可以逐个估计独立成分,避免了这种交叉干扰,提高了估计的准确性。
在ICA中,通过最小化独立成分的峭度或最大化独立成分的负熵来选择最不高斯的信号作为下一个独立成分。
## 5. 常用算法
### 5.1 投影追踪(Projection pursuit)
1. 投影追寻是一种用于寻找多维数据可能投影的统计学方法,在基本的一维投影追寻中,其目标是寻找一些列投影方向,在这些方向上,数据分布尽可能的偏离高斯分布,而这于ICA的目标一致,因此,ICA也会被认为是投影追寻的一个变种。
2. 投影追寻中,独立分量是逐个被提取出来的。通过不断重复寻找使非高斯度最大的投影方向来逐个提取独立分量。这种方法被称为紧缩。
3. 其步骤如下:
1. 初始化:选择一个随机的投影向量w,然后归一化该向量,得到w。
2. 投影:将高维信号X投影到一维空间中,得到一个一维向量y,y=X^Tw。
3. 非高斯性度量:对y进行非高斯性度量,如负熵,得到一个标量g。
4. 梯度更新:利用g对w进行梯度更新,w=w+μg∇w g,其中μ为学习率,∇w g为g对w的梯度。这一步更新后,再对w进行归一化。
5. 收敛判断:对步骤2~4进行迭代,直到w的变化很小或者达到最大迭代次数,判断算法是否收敛。
6. 得到ICA模型:迭代结束后,得到的投影向量w即为一组独立成分,将该向量与原始数据矩阵X相乘,即可得到ICA模型。
### 5.2 FastICA
1. FastICA算法通过一种固定点迭代的策略来最大化非高斯度从而提取独立分量;
2. FastICA次或至少二次收敛速度,因此它比基于比梯度算法的线性收敛快得多;
3. FastICA算法没有学习率或其他任何需要调整的参数,因此容易使用;
4. 其步骤如下:
1. 初始化:随机初始化投影矩阵W。
2. 分离:使用一个迭代算法来更新W,以最大化非高斯性度量(如峭度或负熵),使得独立成分被逐个分离出来。
3. 旋转:由于FastICA中提取的独立成分的顺序和符号是不确定的,需要进行旋转来确定它们的顺序和符号。常用的方法是正交化或者正交矩阵分解。
4. 重构:将分离出来的独立成分重构成原始数据。
5. FastICA是一个迭代算法,它需要设定停止条件;
## 6. 预处理
ICA需要两步的预处理:
1. 中心化
2. 白化
## 7. 不确定性
ICA不能唯一确定分离结果,其不确定性包括[[#^374d36]]
1. 不能确定独立成分的方差或者说能量:因为变换矩阵A和原始信号s都是未知的,s缩放的倍数可以在A上补偿回来。因此我们统一假设各独立分量的方差为1。其实,这样假设之后仍然存在一个不确定性,独立分量乘以-1并不影响方差。不过在实际应用时,并不影响。
2. 不能确定各独立分量的顺序:同样,由于变换矩阵A和原始信号s都是未知的,在预测时我们可以任意改变A和s对应分量的位置,在矩阵运算中就是乘以一个置换矩阵。
## 7. 优缺点
### 7.1 优点[[#^46c57e]]
1. 收敛速度快。
2. 并行和分布计算,要求内存小,易于使用。
3. 能通过使用一个非线性函数g便能直接找出任何非高斯分布的独立分量。
4. 能够通过选择一个适当的非线性函数g而使其达到最佳化。特别是能得到最小方差的算法。
5. 仅需要估计几个(不是全部)独立分量,能极大地减小计算量。
### 7.2 缺点
1. ICA 的结果具有一定的不确定性,因为独立成分的顺序和符号是未知的。这就需要对结果进行后处理,例如通过交叉验证选择最优的解。
2. ICA 对于数据的要求较高,需要假设数据是相互独立的,并且每个独立成分必须是非高斯分布。如果数据不符合这些要求,ICA的效果可能会受到影响。
3. ICA 计算复杂度较高,对于大规模数据的处理需要更多的计算资源和时间。
4. ICA 是一种线性模型,对于非线性的混合模型,其效果可能不如其他非线性模型,例如深度学习模型。
### 参考文献
1. [[盲源分离——理论、应用与展望]] ^f9e7f7
2. [[Independent component analysisAn introduction]] ^7903a9
3. [独立成分分析(Independent component analysis, ICA)](https://www.cnblogs.com/ytxwzqin/p/9675217.html) ^62f060
4. [ICA独立成分分析—FastICA基于负熵最大](https://blog.csdn.net/zb1165048017/article/details/48464573) ^bff01c
5. [尝试理解ICAIndependent Component Analysis)独立成分分析](https://blog.csdn.net/u014485485/article/details/78452820) ^374d36
6. [人工智能–ICA算法](https://cloud.tencent.com/developer/news/197255) ^46c57e