ICA 即为 独立成分分析 类比于主成分分析PCA。
与PCA不同的是,他适用于非高斯性信号。典型应用背景为cocktail party effect。
假设观测信号为Y(NxN),待提取信号为X,维度相同。Y=W*X;算法目标就是找到W逆,或是近似。一般实现基于两种思想,一是互信息最小,或是非高斯性最大。
- 互信息最小
互信息 I(X;Y)=H(X)-H(X|Y);而
H(X|Y)=H(X,Y)-H(Y)
算法流程:
1> 随机初始化W(0)
2> W(t+1)=W(t) + n(t)(I-f(Y)YT)W(t)
3> 不收敛,重复2
其中n为一般函数,确定W更新步长,f根据情况分,超高斯分布,f(Y)=Tanh(Y),亚高斯分布,f(Y)=Y-Tanh(Y)
2.非高斯性最大
既然假设服从非高斯分布,则需要指标衡量其非高斯性程度--负熵
N(X)=H(Xgaussian) - H(X)
,由于计算比较困难,通常只能逼近。
代码:
%%%%%%%%%%%%%%%%%%%%%%%%%%
初始化
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;clear all;close all;
%%%%%%%%%%%%%%
读入原始图像,混合,并输出混合图像
%%%%%%%%%%%%%%%%%%
% 读入混合前的原始图片并显示
t=0:1/100:9;
I1=sin(t);
I2=randn(1,901);
I3=square(4*t);
subplot(4,3,1),plot(I1),title('输入信号1'),
subplot(4,3,2),plot(I2),title('输入信号2'),
subplot(4,3,3),plot(I3),title('输入信号3'),
% 将其组成矩阵
S=[I1;I2;I3];
% 图片个数即为变量数,图片的像素数即为采样数