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. Знову дякую.

EDIT

У мене є 500 зразків кожного сигналу в діапазоні [0,2, 100], з кроком 0,2, тобто x = 0: 0,1: 100.

Також, враховуючи модель ICA: X = As + n (на даний момент я не додаю жодного шуму), я маю на увазі власний спектр транспозиції X, тобто eig (cov (X ')).

ОНОВЛЕННЯ

Як було запропоновано (див. Коментарі), я спробував FastICA лише на 2 сигнали. Результати були досить хорошими (див. Малюнок нижче). Використовувана матриця змішування була A = [0.75 0.25; 0.25 0.75]. Однак власний спектр 0.1657 0.7732все ще показав лише один основний основний компонент.

Моє запитання, таким чином, зводиться до наступного: Яку функцію / рівняння / властивість я можу використовувати, щоб перевірити, чи є ряд сигнальних векторів статистично незалежними?

Sine & Gaussian - FastICA


1
Відмінне запитання. Я запитав про те, як ми можемо знати, коли два сигнали тут незалежні ( dsp.stackexchange.com/questions/1242/… ), але не надто далеко з цим. :-) Я теж новачок у ICA, але, можливо, я зможу пролити трохи світла.
Космічний

@Mohammad Ви все ще зацікавлені у відповіді на це питання? Я з радістю покладу на це щедрості, щоб залучити інтерес.
Фонон

@Mohammad Я підтримав ваше запитання. Сподіваюся, ви отримаєте хорошу відповідь, це справді пов’язано з моїм. Я читав коментарі до цього часу, і зараз йде багато статистики, яку я не розумію. Чи вдалося вам придумати певний спосіб зробити висновок про незалежність двох сигналів чи ні?
Рейчел

@Rachel На даний момент ще немає, але я вивчу це ще трохи і повідомляю вас. Це дуже важлива концепція, яку я вважаю, як правило, заскленою.
Спейси

Дякую @Mohammad. Я згоден. Незалежні сигнали спостерігають властивість, що E (s1, s2) = E (s1) x E (s2), але я не знаю, як насправді обчислити її для реальних сигналів.
Рейчел

Відповіді:


8

Сигнали 3 і 5 здаються досить співвіднесеними - вони поділяють свою першу гармоніку. Якби мені дали дві суміші з них, я не зміг би їх відокремити, я б спокусився поставити загальну гармоніку як один сигнал, а вищі гармоніки - як другий сигнал. І я помиляюся! Це може пояснити відсутність власного значення.

Сигнали 1 і 2 теж не виглядають незалежними.

Швидка і брудна "перевірка здоровості" на незалежність двох серій - це зробити (х, у) графік одного сигналу проти іншого:

plot (sig3, sig5)

а потім зробити те саме (x, y) графік з одним перетасованим сигналом:

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

Якщо два сюжети мають різний вигляд, ваші сигнали не є незалежними. Більш загально, якщо (x, y) графік даних показує "особливості", дисметрію тощо, це погана прикмета.

Належні тести на незалежність (а це об'єктивні функції, що використовуються в циклі оптимізації ICA) включають, наприклад, взаємну інформацію.

ICA відновлює найбільш незалежні сигнали, лінійне змішування яких дає ваші вхідні дані . Він буде працювати як метод розділення сигналу і відновлювати вихідні сигнали лише в тому випадку, якщо вони були максимально незалежними відповідно до критерію оптимізації, використовуваного у вашій реалізації ICA.


1
Запитання: Якщо б 5 сигналів у її випадку насправді були незалежними, то ми б очікували, що в НАТО немає основних основних компонентів? (Іншими словами, всі власні значення будуть подібними до одного). Геометрично, у нас була б газаська «хмара» у 5 вимірах, погодьтеся?
Спейсі

Я також зв’язався з автором ICA про видалення двох синусоїд із суміші, і він сказав, що насправді це можна зробити з ICA. Це трохи заплутує мене на основі того, що ви говорите щодо сигналів 3 та 5, оскільки (я згоден з вами) вони виглядають кореляційно.
Спейсі

@pichenettes Я побудував ці графіки, як ви запропонували - і сюжети дійсно мають різний вигляд. На жаль, я все ще застряг, як тест на незалежність. Мені дуже потрібен спосіб генерування сигналів, які є статистично незалежними, щоб я міг оцінити продуктивність FastICA.
Рейчел

x1[n]x2[n]

@Mohammad Я не записав власного голосу, але спробував використовувати FastICA на суміші синусодіального та гауссового сигналів. Я думаю, що вони незалежні. FastICA виступив досить добре, але власний спектр був все ще дивний. Я оновлю своє запитання, щоб показати результати.
Рейчел

7

Я не фахівець з ICA, але можу трохи розповісти про незалежність.

Як зазначалося в деяких коментарях, статистичну незалежність між двома випадковими змінними можна приблизно інтерпретувати як "кількість інформації, що спостереження за однією змінною дає про іншу".

XYXYp(x,y)XYp(x,y)=p(x)p(y)

p(x,y)

XYXYp(X=i,Y=j)=pijP(X=i)=piP(Y=j)=pj

I(X,Y)=ijpijlogpijpipj

Ось деякий код 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 спасибі, я повинен заглянути в це трохи глибше.
Спейсі

Перш за все, дякую за тривалу відповідь, це було дуже інформативно. У мене просто пара питань. Ви згадали про тест на чи-квадрат. Я переглянув це і виглядає дуже цікаво, але як я можу це використовувати за сигналами? Чи не можна його застосувати лише до категоричних даних?
Рейчел

Крім того, ви використовуєте Pj1 = P1 '* P2 для обчислення спільного розподілу, правильно? Але технічно я вважаю, що цього зробити не можна. Можливо, ви це робите, тому що ви припускаєте, що вихідні сигнали є незалежними, і результат таким чином має місце? Але як ви можете потім обчислити взаємну інформацію - оскільки її результат залежить від спільного розподілу ..? Можливо, я щось неправильно зрозумів, але мені хочеться уточнити, будь ласка.
Рейчел

Я буду радий - хоча пройде трохи, перш ніж я знайду час :).
Угу

Дякую @sydeulissie. Я хотів би відповісти, яка не передбачає, що я знаю спільний розподіл, будь ласка.
Рейчел

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 просто повертає вхідні сигнали, але для різних частот повертає вихідні джерела.


2

Рейчел,

З мого дослідження мені досі вдалося знайти те, що називалося « Тест на чи-квадрат на незалежність », але я не впевнений, як він працює на даний момент, але це, можливо, варто переглянути.


Я знайшов ці два підручники, які пояснюють, як виконати тест на квадрат чі- літ : ling.upenn.edu/~clight/chisquared.htm & math.hws.edu/javamath/ryan/ChiSquare.html . Однак тест можна проводити лише за категоричними даними. Я не знаю, чи можна це застосувати до наших сигнальних спостережень.
Рейчел
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.