日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ICA独立成分分析—FastICA基于负熵最大

發(fā)布時(shí)間:2023/12/13 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ICA独立成分分析—FastICA基于负熵最大 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 概念

官方解釋:利用統(tǒng)計(jì)原理進(jìn)行計(jì)算的方法,是一種線性變換。

?ICA分為基于信息論準(zhǔn)則的迭代算法和基于統(tǒng)計(jì)學(xué)的代數(shù)方法兩大類,如FastICA算法,Infomax算法,最大似然估計(jì)算法等。

這里主要討論FastICA算法。

先來看ICA和PCA的區(qū)別:PCA是降維并提取不相關(guān)屬性,而ICA是降維并提取相互獨(dú)立的屬性(不相關(guān)不一定獨(dú)立,獨(dú)立一定不相關(guān)。不相關(guān)是指沒有線性關(guān)系,獨(dú)立是指沒有任何關(guān)系)。PCA是提取出最能表示原始事物的特征,而ICA是使每個(gè)分量最大化獨(dú)立,便于發(fā)現(xiàn)隱藏因素。

PCA的適用環(huán)境是數(shù)據(jù)為高斯分布時(shí)。而ICA不適用于高斯分布的數(shù)據(jù)。

ICA的兩條假設(shè):

① 源信號之間互相獨(dú)立

② 每一個(gè)源信號為非高斯分布

【更新日志:2019-12-27】

為什么原信號為非高斯分布,戳這里

http://cis.legacy.ics.tkk.fi/aapo/papers/IJCNN99_tutorialweb/node9.html

混合信號源的三個(gè)特性:

①獨(dú)立性(Independence):源信號相互獨(dú)立,但是混合的信號卻不是,因?yàn)榛旌闲盘柟蚕砹嗽葱盘枴?/p>

②正態(tài)化(Normality):根據(jù)中心極限定理,具有有限方差的獨(dú)立隨機(jī)變量的和的分布傾向于高斯分布;寬松點(diǎn)說就是,兩個(gè)獨(dú)立隨機(jī)變量的和比原始的獨(dú)立隨機(jī)變量中的任何一個(gè)更加接近高斯分布。這里我們考慮的每一個(gè)信號源都是獨(dú)立隨機(jī)變量。

③復(fù)雜度(Complexity):任何混合信號的時(shí)間復(fù)雜性都比構(gòu)成它的最簡單的信號源復(fù)雜。

其實(shí)這幾點(diǎn)就告訴我們ICA的動機(jī):如果組成混合信號的信號是獨(dú)立的,或者具有非高斯直方圖,或者較低復(fù)雜度,那么他們一定是信號源。

2. 白化

為了便于計(jì)算,需要先進(jìn)行數(shù)據(jù)預(yù)處理

對數(shù)據(jù)進(jìn)行白化或球化處理去除各觀測信號之間的相關(guān)性,簡化后續(xù)獨(dú)立分量的提取過程,且算法的收斂性較好。

白化向量:若一零均值的隨機(jī)向量Z=(Z1,Z2,…ZM)T滿足E{ZZT}=I,其中I是單位矩陣。白化的本質(zhì)是去相關(guān),同PCA的目標(biāo)是一樣的。稱源信號S(t)為白色的是因?yàn)閷τ诹憔档莫?dú)立源信號S(t)=[S1(t),….,SN(t)]T,有E{Si Sj}=E{Si}E{Sj}=0(i≠j)且協(xié)方差矩陣是單位陣,cov(S)=I。

對于觀測信號X(t),找到線性變換W0,使X(t)投影到新的子空間后變成白化向量,即Z(t)=W0X(t),

其中W0為白化矩陣,Z為白化向量

利用主成分分析能得到

???????????????W0=Λ-1/2UT

其中U和Λ分別代表協(xié)方差矩陣CX的特征向量矩陣和特征值矩陣。

因此協(xié)方差矩陣:

E{ZZT}=E{Λ-1/2UTXXTUΛ-1/2}=Λ-1/2UTE{XXT}UΛ-1/2=Λ-1/2ΛΛ-1/2=I

將X(t)=AS(t)式代入Z(t)=W0X(t),且令W0A=A~,有

Z(t)=W0AS(t)=A~S(t)

多維情況下,混合矩陣A是N*N的,白化后的新的混合矩陣A~是正交矩陣,自由度降為N*(N-1)/2,所以說白化使得ICA問題的工作量幾乎減少了一半。

用PCA對觀測信號進(jìn)行白化的預(yù)處理使原來所求的解混合矩陣退化成一個(gè)正交陣,減少了ICA的工作量,當(dāng)觀測信號的個(gè)數(shù)大于源信號個(gè)數(shù)時(shí),經(jīng)過PCA降維也就是白化可以自動將觀測信號的數(shù)目降到與源信號數(shù)目維數(shù)相同。

?3.?FastICA算法

FastICA算法也叫固定點(diǎn)算法(Fixed-Point)算法,是一種快速尋優(yōu)迭代算法,采用批處理的方式,每一步迭代由大量的樣本數(shù)據(jù)參與運(yùn)算。

FastICA由基于峭度,基于似然最大,基于負(fù)熵最大等形式。這里介紹基于負(fù)熵最大的FastICA算法。

負(fù)熵的判決準(zhǔn)則:由信息論理論可知,在所有等方差的隨機(jī)變量中,高斯變量的熵最大,所以可以利用熵來度量非高斯性,采用熵的修正形式,負(fù)熵。根據(jù)中心極限定理,若一個(gè)隨機(jī)變量X由許多相互獨(dú)立的隨機(jī)變量Si(i=1,2,3….,N)之和組成,只要Si具有有限的均值和方差,則不論其為何種分布,隨機(jī)變量X較Si更接近高斯分布。所以當(dāng)高斯性度量達(dá)到最大的時(shí)候,說明完成各獨(dú)立成分的分離。

負(fù)熵的定義

Ng(Y)=H(YGauss)-H(Y)

其中YGauss是與Y具有相同方差的高斯隨機(jī)變量。H(.)為隨機(jī)變量的微分熵。

?

根據(jù)信息理論,在具有相同方差的隨機(jī)變量中,高斯分布的隨機(jī)變量具有最大的微分熵。當(dāng)Y具有高斯分布時(shí),Ng(Y)=0;Y的非高斯性越強(qiáng),其微分熵越小,Ng(Y)的值越大,所以Ng(Y)可以作為隨機(jī)變量Y非高斯性的測度。采用負(fù)熵定義求解需要知道Y的概率密度分布函數(shù),但是實(shí)際不可能,于是采用下面的近似公式:

Ng(Y)={E[g(Y)]-E[g(YGauss)]}2

其中E[.]為均值運(yùn)算,g(.)為非線性函數(shù),可取g1(y)=tanh(a1y)或g2(y)=y exp(-y2/2)或g3(y)=y3等非線性函數(shù),這里1≤a1≤2,通常取a1=1

快速ICA的規(guī)則就是找到一個(gè)方向以便WTX(Y=WTX)具有最大的非高斯性,非高斯性用Ng(Y)={E[g(Y)]-E[g(YGauss)]}2給出的負(fù)熵的近似值來度量。WTX的方差約束為1,對于白化數(shù)據(jù),等于約束W的范數(shù)為1.

FastICA的推導(dǎo)

① WTX的負(fù)熵的最大近似值能通過對E{G(WTX)}進(jìn)行優(yōu)化取得。在E{( WTX)2}=||W||2=1的約束下,E{G(WTX)}的最優(yōu)值能在滿足下式的點(diǎn)上獲得

E{Xg(WTX)}+βW=0

其中β=E{W0TXg(WTX)} 是一個(gè)恒定值,W0是優(yōu)化后的W值。

②利用牛頓迭代法解①的方程。用F表示左邊的函數(shù),得到F的雅克比矩陣JF(W)如下:

JF(W)=E{XXTg’(WTX)}-βI ??可以近似為第一項(xiàng),即忽略βI

由于數(shù)據(jù)被球化,所以E{XXT}=I,所以E{XXTg’(WTX)}≈E{XXT}*E{g’(WTX)}=E{g’(WTX)}I。

從而雅克比矩陣變成了對角陣,并且比較容易求逆。因而得到下面的近似牛頓迭代公式:

?

這里的W*是W的新值,β= E{WTXg(WTX)},規(guī)格化能提高穩(wěn)定性。

簡化后得到FastICA的迭代公式:

?

實(shí)踐中,FastICA算法中用的期望必須用他們的估計(jì)值代替。最好的估計(jì)是相應(yīng)的樣本平均。理想情況下,所有的有效數(shù)據(jù)都應(yīng)該參與計(jì)算,但是會降低運(yùn)算速度,所以通常選取一部分樣本的平均來估計(jì),樣本數(shù)目的多少對最后估計(jì)的精確度有很大影響。迭代中的樣本點(diǎn)應(yīng)該分別選取,加入收斂不理想,可以增加樣本數(shù)量。

FastICA算法的步驟:

1.??????對觀測數(shù)據(jù)X進(jìn)行中心化,使它的均值為0

2.??????對數(shù)據(jù)進(jìn)行白化,X→Z

3.??????選擇需要估計(jì)的分量的個(gè)數(shù)m,設(shè)迭代次數(shù)p←1

4.??????選擇一個(gè)初始權(quán)矢量(隨機(jī)的)Wp。

5.??????令Wp=E{Zg(WTZ)}-E{g’(WTZ)}W,非線性函數(shù)g,可取g1(y)=tanh(a1y)或g2(y)=y exp(-y2/2)或g3(y)=y3等非線性函數(shù)

?? 6.

?

7.令Wp=Wp/||Wp||。

8. 假如Wp不收斂的話,返回第五步

9. 令p=p+1,如果p≤m,返回第四步

ICA.m

?

function Z = ICA( X )%去均值 [M,T]=size(X); %獲取輸入矩陣的行列數(shù),行數(shù)為觀測數(shù)據(jù)的數(shù)目,列數(shù)為采樣點(diǎn)數(shù) average=mean(X')'; %均值 for i=1:MX(i,:)=X(i,:)-average(i)*ones(1,T); end%白化/球化 Cx=cov(X',1); %計(jì)算協(xié)方差矩陣Cx [eigvector,eigvalue]=eig(Cx); %計(jì)算Cx的特征值和特征向量 W=eigvalue^(-1/2)*eigvector'; %白化矩陣 Z=W*X; %正交矩陣%迭代 Maxcount=10000; %最大迭代次數(shù) Critical=0.00001; %判斷是否收斂 m=M; W=rand(m); for n=1:mWP=W(:,n); %初始權(quán)矢量(任意)%Y=WP'*Z;%G=Y.^3;%G為非線性函數(shù),可取y^3等%GG=3*Y.^2; %G的導(dǎo)數(shù)count=0;LastWP=zeros(m,1);W(:,n)=W(:,n)/norm(W(:,n));while abs(WP-LastWP)&abs(WP+LastWP)>Criticalcount=count+1; %迭代次數(shù)LastWP=WP; %上次迭代的值%WP=1/T*Z*((LastWP'*Z).^3)'-3*LastWP;for i=1:mWP(i)=mean(Z(i,:).*(tanh((LastWP)'*Z)))-(mean(1-(tanh((LastWP))'*Z).^2)).*LastWP(i);endWPP=zeros(m,1);for j=1:n-1WPP=WPP+(WP'*W(:,j))*W(:,j);endWP=WP-WPP;WP=WP/(norm(WP));if count==Maxcountfprintf('未找到相應(yīng)的信號');return;endendW(:,n)=WP; end Z=W'*Z; end

?

ICATest.m

?

clear all; clc; N=200; n=1:N;%N為采樣本數(shù) s1=2*sin(0.02*pi*n); %正弦信號 t=1:N; s2=2*square(100*t,50); %方波信號 a=linspace(1,-1,25); s3=2*[a,a,a,a,a,a,a,a];%鋸齒信號 s4=rand(1,N); %隨機(jī)噪聲 S=[s1;s2;s3;s4]; %信號組成4*N A=rand(4,4); X=A*S; %觀察信號%源信號波形圖 figure(1); subplot(4,1,1);plot(s1);axis([0 N -5,5]);title('源信號'); subplot(4,1,2);plot(s2);axis([0 N -5,5]); subplot(4,1,3);plot(s3);axis([0 N -5,5]); subplot(4,1,4);plot(s4);xlabel('Time/ms'); %觀察信號(混合信號)波形圖 figure(2); subplot(4,1,1);plot(X(1,:));title('觀察信號(混合信號)'); subplot(4,1,2);plot(X(2,:)); subplot(4,1,3);plot(X(3,:)); subplot(4,1,4);plot(X(4,:));Z=ICA(X);figure(3); subplot(4,1,1);plot(Z(1,:));title('分離信號'); subplot(4,1,2);plot(Z(2,:)); subplot(4,1,3);plot(Z(3,:)); subplot(4,1,4);plot(Z(4,:)); plot(Z(4,:)); xlabel('Time/ms');


結(jié)果

?

?

?

參考文獻(xiàn):

http://www.cnblogs.com/tornadomeet/archive/2012/12/30/2839841.html

http://wenku.baidu.com/link?url=2gqaP9JugoT41p-9yvDRsZe6easW_NSNjhIakgt9lAR74GiYfZ2-lXBDu57DAYe8U8FZN5Q9uhBeO2icr32KfYuDER6IzruR9rh6smmY7gW

https://en.wikipedia.org/wiki/Independent_component_analysis

http://cs229.stanford.edu/notes/cs229-notes11.pdf

本文已經(jīng)同步到微信公眾號中,公眾號與本博客將持續(xù)同步更新運(yùn)動捕捉、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、計(jì)算機(jī)視覺算法,敬請關(guān)注

總結(jié)

以上是生活随笔為你收集整理的ICA独立成分分析—FastICA基于负熵最大的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。