ICA-协方差矩阵的统计独立性和特征值


14

我目前正在使用Matlab创建不同的信号,通过将它们乘以混合矩阵A进行混合,然后尝试使用FastICA取回原始信号。

到目前为止,与原始信号相比,恢复的信号确实很差,这不是我所期望的。

我正在尝试查看我是否做错了什么。我正在生成的信号如下:

s1 = (-x.^2 + 100*x + 500) / 3000; % quadratic
s2 = exp(-x / 10); % -ve exponential
s3 = (sin(x)+ 1) * 0.5; % sine
s4 = 0.5 + 0.1 * randn(size(x, 2), 1); % gaussian
s5 = (sawtooth(x, 0.75)+ 1) * 0.5; % sawtooth

原始信号

ICA成功的一个条件是,至多一个信号是高斯信号,我在信号生成过程中已经观察到了这一点。

但是,另一个条件是所有信号在统计上都是独立的。

我所知道的是,这意味着在给定两个信号A和B的情况下,知道一个信号不会给出关于另一个信号的任何信息,即:P(A | B)= P(A)其中P是概率

现在我的问题是:我的信号在统计上是否独立?有什么办法可以确定吗?也许必须注意一些属性?

我注意到的另一件事是,当我计算协方差矩阵的特征值(针对包含混合信号的矩阵计算)时,特征谱似乎表明只有一个(主要)主成分。这到底是什么意思?因为我有5个(据说)独立信号,所以不应该有5个吗?

例如,当使用以下混合矩阵时:

A =

0.2000    0.4267    0.2133    0.1067    0.0533
0.2909    0.2000    0.2909    0.1455    0.0727
0.1333    0.2667    0.2000    0.2667    0.1333
0.0727    0.1455    0.2909    0.2000    0.2909
0.0533    0.1067    0.2133    0.4267    0.2000

特征值是:(0.0000 0.0005 0.0022 0.0042 0.0345仅4个!)

当使用单位矩阵作为混合矩阵(即混合信号与原始信号相同)时,本征谱为:0.0103 0.0199 0.0330 0.0811 0.1762。还有一个值要比其他值大得多。

谢谢您的帮助。

对于问题的答案是否显而易见,我深表歉意,但是我真的是统计学,ICA和Matlab的新手。再次感谢。

编辑

我对每个信号有500个样本,范围为[0.2,100],步长为0.2,即x = 0:0.1:100。

同样,给定ICA模型:X = As + n(我现在不添加任何噪声),我指的是X转置的本征谱,即eig(cov(X'))。

更新

根据建议(请参阅注释),我仅在2个信号上尝试了FastICA。结果是相当不错的(见下图)。使用的混合基质为A = [0.75 0.25; 0.25 0.75]。但是,本征谱 0.1657 0.7732仍然仅显示一个主要主成分。

因此,我的问题归结为以下几点:我可以使用哪些函数/方程式/属性来检查多个信号矢量在统计上是否独立?

正弦和高斯-FastICA


1
很好的问题。我曾问过我们如何知道两个信号何时独立(dsp.stackexchange.com/questions/1242/…),但并没有太过分。:-)我也是ICA的新手,但我也许可以阐明一点。
Spacey

@Mohammad您仍然对回答该问题感兴趣吗?我会很乐意为它吸引赏金。
声子

@Mohammad我支持您的问题。希望您能得到一个好的答案,这确实与我有关。到目前为止,我一直在阅读有关它的评论,并且有很多我不了解的统计数据。您是否设法提出了确定两种信号是否独立的明确方法?
雷切尔

@Rachel目前尚未,但我会对其进行更多研究,并告知您。这是一个非常重要的概念,我通常感到很遗憾。
Spacey 2012年

谢谢@Mohammad。我同意。独立信号观察到E(s1,s2)= E(s1)x E(s2)的性质,但是我不知道如何为实际信号实际计算它。
雷切尔

Answers:


8

信号3和5似乎很相关-它们共享一次谐波。如果给了我这些信号的两种混合,我将无法分离它们,我很想将普通谐波作为一个信号,将较高次谐波作为第二个信号。我会错的!这可以解释缺少的特征值。

信号1和2看起来也不是独立的。

对两个系列的独立性进行快速而肮脏的“合理性检查”是针对一个信号相对于另一个信号绘制(x,y)图:

plot (sig3, sig5)

然后在混洗一个信号的情况下进行相同的(x,y)图:

indices = randperm(length(sig3))
plot(sig3(indices), sig5)

如果两个图的外观不同,则您的信号不是独立的。更一般而言,如果数据的(x,y)图显示“特征”,不对称性等,则预示着不好的预兆。

正确的独立性测试(这些是ICA优化循环中使用的目标函数)包括例如互信息。

ICA正在恢复最独立的信号,将其线性混合即可产生您的输入数据。它将用作信号分离方法,并且仅当原始信号根据ICA实现中使用的优化标准最大独立时,才恢复原始信号。


1
问题:如果在她的案例中这5个信号实际上都是独立的,那么我们期望没有正确的主成分吗?(换句话说,所有特征值都是相同的)。从几何学上讲,我们会在5个维度上拥有一个“云”,同意吗?
Spacey

我还与ICA的一位作者联系过,询问过从混合物中去除两种正弦波的方法,他说实际上可以通过ICA来完成。根据您对信号3和5的说法,这使我有些困惑,因为(我同意),它们确实是相关的。
Spacey 2012年

@pichenettes我按照您的建议绘制了这些图-而且这些图的确确实有不同的外观。不幸的是,我仍然对如何测试独立性感到困惑。我确实需要一种生成统计上独立的信号的方法,以便评估FastICA的性能。
雷切尔

X1个[ñ]X2[ñ]

@Mohammad我没有录制自己的声音,但尝试将FastICA用于正弦和高斯信号的混合。我想他们是独立的。FastICA的表现不错,但特征谱仍然很奇怪。我将更新问题以显示结果。
雷切尔2012年

7

我不是ICA方面的专家,但我可以告诉您一些有关独立性的信息。

正如一些评论所提到的,两个随机变量之间的统计独立性可以粗略地解释为“观察一个变量给出的信息量”。

XÿXÿpXÿXÿpXÿ=pXpÿ

pXÿ

XÿXÿpX=一世ÿ=Ĵ=p一世ĴPX=一世=p一世Pÿ=Ĵ=pĴ

一世Xÿ=一世Ĵp一世Ĵ日志p一世Ĵp一世pĴ

这是一些matlab代码,它将从构造的关节分布生成两个独立的信号,并从非独立的关节分布生成两个,然后计算关节的互信息。

函数“ computeMIplugin.m”是我编写的一个简单函数,它使用上面的求和公式计算相互信息。

Ndist = 25;
xx = linspace(-pi, pi, Ndist);

P1 = abs(sin(xx)); P2 = abs(cos(xx)); 
P1 = P1/sum(P1); P2 = P2/sum(P2); % generate marginal distributions

%% Draw independent samples.
Nsamp = 1e4;
X = randsample(xx, Nsamp, 'true', P1);
Y = randsample(xx, Nsamp, 'true', P2);

Pj1 = P1'*P2;
computeMIplugin(Pj1)

% I get approx 8e-15 ... independent!

% Now Sample the joint distribution 
cnt = {}; cnt{1} = xx; cnt{2} = xx; % bin centers
Pj1_samp= hist3([X' Y'],cnt); Pj1_samp = Pj1_samp/sum(Pj1_samp(:));
computeMIplugin(Pj1_samp)
% I get approx .02; since we've estimated the distribution from
% samples, we don't know the true value of the MI. This is where
% a confidence interval would come in handy. We'd like to know 
% whether value of MI is significantly different from 0. 

% mean square difference between true and sampled?
% (this is small for these parameter settings... 
% depends on the sample size and # bins in the distribution).
mean( (Pj1_samp(:) - Pj1(:)).^2)

%% Draw samples that aren't independent. 

tx = linspace(0,30,Nsamp);
X = pi*sin(tx);
Y = pi*cos(tx);

% estimate the joint distribution
cnt = {}; cnt{1} = xx; cnt{2} = xx; % bin centers
Pj2= hist3([X' Y'],cnt); Pj2 = Pj2/sum(Pj2(:));
computeMIplugin(Pj2)

% I get 1.9281  - not independent!

%% make figure
figure(1); 
colormap gray
subplot(221)
imagesc(xx,xx,Pj1_samp)
title('sampled joint distribution 1')
subplot(222)
imagesc(xx,xx,Pj2)
title('sampled joint distribution 2')
subplot(223)
imagesc(xx,xx,Pj1)
title('true joint distribution 1')

同样,这假设您对关节的分布有很好的估计(以及其他假设),但作为经验法则应该很有用。


多数民众赞成在一个很好的答案sydeulissie,谢谢,我不得不更深入地研究它。
Spacey 2012年

首先,感谢您的冗长回答,它非常有用。我只是有几个问题。您提到使用卡方检验。我研究了它,看起来确实很有趣,但是如何在信号上使用它呢?不能仅将其应用于分类数据吗?
雷切尔

另外,您正在使用Pj1 = P1'* P2来计算关节分布,对吗?但是,从技术上讲,我认为这是不可能做到的。也许您这样做是因为您假设原始信号是独立的,因此结果成立了吗?但是,您如何计算相互信息-因为结果取决于联合分布。可能是我误会了一些东西,但是请澄清一下。
雷切尔2012年

我会很高兴的-尽管要花一点时间才:)。
2012年

谢谢@sydeulissie。我想要一个不以我自己知道联合分配知识的答案。
雷切尔2012年

3

如上所述,信号3和5看起来都非常相关并且具有相似的周期。

如果我们可以左右移动一个信号源并增大或减小其幅度以使其适合另一个信号源,则可以想到两个信号是相关的。注意,我们并没有改变信号源的频率,我们只是在进行相移和幅度移相。

在上述情况下,我们可以移动源3,使其峰值与源5一致。这是由于独立性假设,在使用ICA时会干扰源提取的事情。

注意:以上概念的一个很好的例证是想到两个正弦波。这些都是完全确定的。如果它们都具有相同的频率(甚至具有不同的相位),则它们将具有完美的相关性,ICA将无法将它们分开。相反,如果它们具有不同的频率(不是彼此的整数倍),则它们是独立的并且可以分开。

以下是一些Matlab代码,供您自己查看

%Sine waves of equal frequency
X = 1:1000;
Y(1,:) = sin(2*pi*X*10/1000);
Y(2,:) = sin(1+2*pi*X*10/1000);

figure
subplot(3,2,1)
plot(Y(1,:))
title('Initial Source 1')
subplot(3,2,2)
plot(Y(2,:))
title('Initial Source 2')
A = [1, 2; 4, -1];
Y = A*Y;
subplot(3,2,3)
plot(Y(1,:))
title('Signal 1')
subplot(3,2,4)
plot(Y(2,:))
title('Signal 2')

Z = fastica(Y);

subplot(3,2,5)
plot(Z(1,:))
title('Source 1')
subplot(3,2,6)
plot(Z(2,:))
title('Source 2')

%Sine waves of different frequency
X = 1:1000;
Y(1,:) = sin(2*pi*X*10/1000);
Y(2,:) = sin(1+2*pi*X*8/1000);

figure
subplot(3,2,1)
plot(Y(1,:))
title('Initial Source 1')
subplot(3,2,2)
plot(Y(2,:))
title('Initial Source 2')
A = [1, 2; 4, -1];
Y = A*Y;
subplot(3,2,3)
plot(Y(1,:))
title('Signal 1')
subplot(3,2,4)
plot(Y(2,:))
title('Signal 2')

Z = fastica(Y);

subplot(3,2,5)
plot(Z(1,:))
title('Source 1')
subplot(3,2,6)
plot(Z(2,:))
title('Source 2')

请注意,对于相同频率的波,ICA仅返回输入信号,但是对于不同频率,它将返回原始信号源。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.