आईसीए - सांख्यिकीय स्वतंत्रता और कोविरेंस मैट्रिक्स के आइगेनवेल्यूज़


14

मैं वर्तमान में Matlab का उपयोग करके अलग-अलग सिग्नल बना रहा हूं, उन्हें एक मिश्रण मैट्रिक्स ए द्वारा गुणा करके, और फिर फास्टिका का उपयोग करके मूल संकेतों को वापस लाने की कोशिश कर रहा हूं

अब तक, बरामद सिग्नल वास्तव में मूल लोगों की तुलना में खराब हैं, जो कि मुझे उम्मीद नहीं थी।

मैं यह देखने की कोशिश कर रहा हूं कि क्या मैं कुछ गलत कर रहा हूं। मैं जो संकेत उत्पन्न कर रहा हूं वह निम्नलिखित हैं:

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(केवल ४!)

मिश्रण मैट्रिक्स के रूप में पहचान मैट्रिक्स का उपयोग करते समय (यानी मिश्रित संकेत मूल के समान होती हैं), eigenspectrum है: 0.0103 0.0199 0.0330 0.0811 0.1762। अभी भी बाकी की तुलना में एक बड़ा मूल्य है ..

आपके सहयोग के लिए धन्यवाद।

मैं माफी माँगता हूँ अगर मेरे सवालों के जवाब स्पष्ट रूप से स्पष्ट हैं, लेकिन मैं वास्तव में आँकड़ों के लिए नया हूँ, आईसीए और मतलाब। एक बार फिर धन्यवाद।

संपादित करें

मेरे पास प्रत्येक सिग्नल के ५०० नमूने हैं, ०.२ के चरणों में [०.२, १००], यानी 0 = ०: ०.१: १००।

इसके अलावा, आईसीए मॉडल दिया गया: एक्स = अस + एन (मैं इस समय कोई शोर नहीं जोड़ रहा हूं), मैं एक्स के संक्रमण के ईजेन्सप्रेक्ट्रम, यानी ईग (कोव (एक्स ')) का उल्लेख कर रहा हूं।

अपडेट करें

जैसा कि सुझाव दिया गया था (टिप्पणियों को देखें), मैंने केवल 2 संकेतों पर फास्टिका की कोशिश की । परिणाम काफी अच्छे थे (नीचे तस्वीर देखें)। मिक्सिंग मैट्रिक्स का इस्तेमाल किया गया था A = [0.75 0.25; 0.25 0.75]। हालाँकि, 0.1657 0.7732अभी भी eigenspectrum में केवल एक मुख्य मुख्य घटक दिखाया गया है।

मेरा प्रश्न इसलिए निम्नलिखित पर उबलता है: मैं क्या कार्य / समीकरण / संपत्ति यह जांचने के लिए उपयोग कर सकता हूं कि क्या सिग्नल वैक्टर के एक नंबर सांख्यिकीय स्वतंत्र हैं?

साइन और गाऊसी - फास्टिका


1
बहुत बढ़िया सवाल। मैंने पूछा है कि हम कैसे जान सकते हैं कि जब दो सिग्नल यहां स्वतंत्र हैं ( dsp.stackexchange.com/questions/1242/… ), लेकिन उसके साथ बहुत दूर नहीं गए। :-) मैं ICA में भी नया हूँ लेकिन मैं कुछ प्रकाश डालने में सक्षम हो सकता हूँ।
स्पेसी

@ मोहम्मद क्या आप अभी भी उस सवाल के जवाब में रुचि रखते हैं? मैं ख़ुशी से ब्याज आकर्षित करने के लिए इस पर एक इनाम रखूँगा।
फोनन

@ मोहम्मद मैंने आपके सवाल को गलत ठहराया। आशा है कि आपको एक अच्छा उत्तर मिलेगा, यह वास्तव में मेरा से संबंधित है। मैं अब तक इस पर टिप्पणियों को पढ़ रहा हूं, और बहुत सारे आँकड़े चल रहे हैं जो मुझे समझ नहीं आ रहे हैं। क्या आप यह निष्कर्ष निकालने में कामयाब रहे हैं कि दो सिग्नल स्वतंत्र हैं या नहीं?
राहेल

@ राचेल फिलहाल नहीं, लेकिन मैं इसे कुछ और शोध करूंगा और आपको बता दूंगा। यह एक बहुत ही महत्वपूर्ण अवधारणा है, जो मुझे लगता है कि आमतौर पर दुर्भाग्य से चमकती है।
स्पेसी

धन्यवाद @ मोहम्मद। मैं सहमत हूँ। स्वतंत्र सिग्नल उस संपत्ति का निरीक्षण करते हैं जो ई (s1, s2) = E (s1) x E (s2) है, लेकिन मुझे नहीं पता कि वास्तविक संकेतों के लिए वास्तव में इसकी गणना कैसे की जाए।
राचेल

जवाबों:


8

सिग्नल 3 और 5 काफी सहसंबद्ध दिखाई देते हैं - वे अपना पहला हार्मोनिक साझा करते हैं। अगर मुझे उनमें से दो मिश्रण दिए गए, तो मैं उन्हें अलग नहीं कर पाऊंगा, मुझे एक सिग्नल के रूप में सामान्य हार्मोनिक और दूसरे सिग्नल के रूप में उच्च हार्मोनिक्स लगाने का लालच होगा। और मैं गलत होगा! यह लापता स्वदेशी की व्याख्या कर सकता है।

सिग्नल 1 और 2 भी स्वतंत्र नहीं लगते हैं।

दो श्रृंखलाओं की स्वतंत्रता के लिए एक त्वरित और गंदा "पवित्रता-जांच" अन्य के बारे में एक संकेत का (x, y) प्लॉट करना है:

plot (sig3, sig5)

और फिर एक संकेत के साथ एक ही (x, y) प्लॉट को फेरबदल करने के लिए:

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

यदि दो भूखंडों में एक भिन्न रूप है, तो आपके संकेत स्वतंत्र नहीं हैं। अधिक आम तौर पर, यदि डेटा का x (x, y) प्लॉट "सुविधाओं", विषमता आदि को दिखाता है, तो यह एक बुरा शगुन है।

स्वतंत्रता के लिए उचित परीक्षण (और आईसीए ऑप्टिमाइज़ेशन लूप में उपयोग किए जाने वाले उद्देश्य फ़ंक्शन हैं), उदाहरण के लिए, पारस्परिक जानकारी।

आईसीए सबसे स्वतंत्र संकेतों को पुनर्प्राप्त कर रहा है , जिसमें एक रैखिक मिश्रण आपके इनपुट डेटा को प्राप्त करता है । यह एक सिग्नल सेपरेशन मेथड के रूप में काम करेगा और ओरिजिनल सिग्नल्स को तभी रिकवर करेगा जब वे आपके ICF कार्यान्वयन में उपयोग किए गए ऑप्टिमाइज़ेशन मानदंड के अनुसार अधिकतम स्वतंत्र थे।


1
प्रश्न: यदि उसके मामले में 5 संकेत वास्तव में सभी स्वतंत्र थे, तो हम उम्मीद करेंगे कि कोई प्रमुख घटक सही न हों? (दूसरे शब्दों में, सभी प्रतिजन समान होंगे)। ज्यामितीय रूप से, हमारे पास 5 आयामों में एक गैसीयियन 'क्लाउड' होगा, सहमत हैं?
स्पेसी

मैंने एक मिश्रण से दो साइनसोइड्स को हटाने के बारे में आईसीए पर एक लेखक से संपर्क किया था, और उन्होंने कहा कि यह वास्तव में आईसीए के साथ किया जा सकता है। यह मुझे थोड़ा भ्रमित करता है कि आप संकेतों 3 और 5 के संबंध में जो कुछ कह रहे हैं उसके आधार पर क्योंकि (मैं आपसे सहमत हूं) वे असंबंधित दिखते हैं।
अन्तरिक्ष

@pichenettes मैंने उन ग्राफ़ को प्लॉट किया जैसा आपने सुझाव दिया है - और प्लॉट वास्तव में एक असमान रूप है। दुर्भाग्य से मैं अभी भी इस बात पर अड़ा हुआ हूं कि स्वतंत्रता के लिए परीक्षण कैसे किया जाए। मुझे वास्तव में संकेतों को उत्पन्न करने के लिए एक तरीके की आवश्यकता है जो सांख्यिकीय रूप से स्वतंत्र हैं, ताकि मैं फास्टिका के प्रदर्शन का मूल्यांकन कर सकूं।
राहेल

एक्स1[n]एक्स2[n]

@ मोहम्मद मैंने अपनी आवाज रिकॉर्ड नहीं की, लेकिन मैंने फास्टिका का उपयोग साइनसोडियल और गौसियन संकेतों के मिश्रण पर करने की कोशिश की। मुझे लगता है कि वे स्वतंत्र हैं .. Fastica काफी अच्छा प्रदर्शन किया, लेकिन eigenspectrum अभी भी अजीब था। मैं परिणाम दिखाने के लिए अपने प्रश्न को अपडेट करूंगा।
राहेल

7

मैं आईसीए का विशेषज्ञ नहीं हूं, लेकिन मैं आपको स्वतंत्रता के बारे में थोड़ा बता सकता हूं।

जैसा कि कुछ टिप्पणियों ने उल्लेख किया है, दो यादृच्छिक चर के बीच सांख्यिकीय स्वतंत्रता की मोटे तौर पर व्याख्या की जा सकती है "जानकारी की मात्रा जो एक चर का अवलोकन दूसरे के बारे में देती है"।

एक्सYएक्सYपी(एक्स,y)एक्सYपी(एक्स,y)=पी(एक्स)पी(y)

पी(एक्स,y)

एक्सYएक्सYपी(एक्स=मैं,Y=जे)=पीमैंजेपी(एक्स=मैं)=पीमैंपी(Y=जे)=पीजे

मैं(एक्स,Y)=ΣमैंΣजेपीमैंजेलॉगपीमैंजेपीमैंपीजे

यहां कुछ मैटलैब कोड दिए गए हैं जो एक निर्मित संयुक्त वितरण से दो स्वतंत्र सिग्नल उत्पन्न करेंगे, और दो एक गैर-स्वतंत्र संयुक्त वितरण से, और फिर जोड़ों की पारस्परिक जानकारी की गणना करेंगे।

फ़ंक्शन "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')

फिर, यह मानता है कि आपके पास संयुक्त वितरण (अन्य धुंधली धारणाओं के साथ) का एक अच्छा अनुमान है, लेकिन यह अंगूठे के नियम के रूप में उपयोगी होना चाहिए।


Thats एक अच्छा जवाब sydeulissie धन्यवाद, बीमार इसे थोड़ा गहरा में देखना है।
स्पेसी

सबसे पहले, लंबे जवाब के लिए धन्यवाद, यह बहुत जानकारीपूर्ण था। मेरे पास कुछ सवाल हैं। आपने ची-स्क्वेर्ड टेस्ट का उपयोग करने का उल्लेख किया है। मैंने इसे देखा है और वास्तव में दिलचस्प लग रहा है, लेकिन मैं इसे संकेतों पर कैसे उपयोग कर सकता हूं? क्या यह केवल श्रेणीबद्ध डेटा पर लागू नहीं किया जा सकता है?
राचेल

इसके अलावा, आप संयुक्त वितरण की गणना करने के लिए Pj1 = P1 '* P2 का उपयोग कर रहे हैं, सही है? लेकिन, तकनीकी रूप से, मेरा मानना ​​है कि ऐसा नहीं किया जा सकता है। हो सकता है कि आप ऐसा कर रहे हों, क्योंकि आप यह मान रहे हैं कि मूल संकेत स्वतंत्र हैं, और परिणाम इस प्रकार है? लेकिन आप तब आपसी जानकारी की गणना कैसे कर सकते हैं - क्योंकि यह परिणाम संयुक्त वितरण पर निर्भर करता है ..? यह हो सकता है कि मैंने कुछ गलत समझा हो, लेकिन मैं एक स्पष्टीकरण चाहूंगा, कृपया।
राचेल

मैं खुश हो जाऊंगा - हालांकि इससे पहले कि मैं समय निकाल पाऊंगा :)।
हां

साभार @sydeulissie मैं एक उत्तर चाहूंगा जो यह नहीं मानता है कि मुझे संयुक्त वितरण का ज्ञान है, कृपया।
राचेल

3

जैसा कि ऊपर उल्लेख किया गया है, दोनों संकेत 3 और 5 काफी सहसंबद्ध हैं और एक समान अवधि है।

हम दो संकेतों को सहसंबद्ध होने के बारे में सोच सकते हैं यदि हम किसी एक स्रोत को बाएं या दाएं स्थानांतरित कर सकते हैं और इसके आयाम को बढ़ा या घटा सकते हैं ताकि यह दूसरे स्रोत के शीर्ष पर फिट हो। ध्यान दें कि हम स्रोत की आवृत्ति नहीं बदल रहे हैं, हम सिर्फ एक चरण और आयाम बदलाव कर रहे हैं।

उपरोक्त मामले में, हम स्रोत 3 को स्थानांतरित कर सकते हैं ताकि इसकी चोटियां स्रोत 5 के साथ मेल खाती हों। यह एक ऐसी चीज है जो स्वतंत्रता की धारणा के कारण आईसीए का उपयोग करते समय स्रोत निष्कर्षण को गड़बड़ कर देगी।

नोट : उपरोक्त अवधारणा का एक अच्छा उदाहरण दो साइनसोइडल तरंगों के बारे में सोचना है। ये दोनों पूरी तरह से नियतात्मक हैं। यदि वे दोनों एक ही आवृत्ति (अलग-अलग चरण के साथ भी) हैं, तो वे पूरी तरह से सहसंबद्ध हैं और आईसीए उन्हें अलग नहीं कर पाएगा। यदि इसके बजाय उनके पास अलग-अलग आवृत्तियाँ हैं (जो एक दूसरे के पूर्णांक गुणक नहीं हैं), तो वे स्वतंत्र हैं और अलग हो सकते हैं।

नीचे आप के लिए यह देखने के लिए कुछ माटलब कोड है

%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')

ध्यान दें कि एक ही आवृत्ति की तरंगों के लिए, आईसीए सिर्फ इनपुट सिग्नल लौटाता है, लेकिन विभिन्न आवृत्तियों के लिए यह मूल स्रोतों को लौटाता है।


2

राहेल,

अपने शोध से मैं अब तक ' ची-स्क्वेरड टेस्ट फ़ॉर इंडिपेंडेंस ' नामक कुछ खोजने में सक्षम हूं, लेकिन मुझे यकीन नहीं है कि यह इस समय कैसे काम करता है, लेकिन यह देखने लायक हो सकता है।


मैंने इन दो ट्यूटोरियल को समझाते हुए पाया कि ची-स्क्वेर्ड टेस्ट कैसे करें: ling.upenn.edu/~clight/chisquared.htm और math.hws.edu/javamath/ryan/CwSquare.html । हालाँकि, परीक्षण केवल श्रेणीबद्ध डेटा पर किया जा सकता है। मुझे नहीं पता कि यह हमारे सिग्नल अवलोकनों पर लागू किया जा सकता है ..
राहेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.