Fisher判別分析 用於降維的方法

2021-08-25 05:49:06 字數 2823 閱讀 7642

首先我們得搞清楚什麼是fisher演算法?選取任何一本模式識別與智慧型計算的書都有這方面的講解。首先得知道fisher線性判別函式,在處理資料的時候,我們經常遇到高維資料,這個時候往往就會遇到「維數災難」的問題,即在低維空間可行,那麼在高維空間往往卻不可行,那麼此時我們就可以降資料降維,將高維空間降到低維空間。

可以考慮把維空間的樣本投影到一條直線上,形成一維空間,即把資料壓縮到一維,這在數學中總是容易辦到的。然而,即使樣本在維空間裡形成若干緊湊的互相分的開的集群,若把它們投影到一條任意的直線上,也可能使幾類樣本混在一起而變得無法識別。但在一般的情況下,總可以找到某個方向,使在這個方向的直線上,樣本的投影能分開最好。

下面以2分類為例簡單總結一下fisher演算法的步驟: 

(1)計算各類樣本的均值向量mimi,nini是類ωiωi的樣本個數 

mi=1ni∑x∈ωixi=1,2mi=1ni∑x∈ωixi=1,2

(2)計算樣本類內離散度矩陣sisi和總類內離散度矩陣swsw。 

si=∑x∈ωi(x−mi)(x−mi)t,i=1,2si=∑x∈ωi(x−mi)(x−mi)t,i=1,2

sw=s1+s2sw=s1+s2

(3)計算樣本類間離散度矩陣sbsb。sb=(m1−m2)(m1−m2)tsb=(m1−m2)(m1−m2)t。 

(4) 求向量w∗w∗。為此定義fisher準則函式 

jf(w)=wtsbwwtswwjf(w)=wtsbwwtsww

使得jf(w)jf(w)取的最大值的w∗w∗為:w∗=s−1w(m1−m2)w∗=sw−1(m1−m2)。 

(5)將訓練集內所有樣本進行投影。y=(w∗)txy=(w∗)tx。 

(6)計算在投影空間上的分割閾值y0y0。閾值的選取可以有不同的方案,比較常用的一種為 

y0=n1m1~+n2m2~n1+n2y0=n1m1~+n2m2~n1+n2

另一種為 

y0=m1~+m2~2+lnp(w1)p(w2)n1−n2−2y0=m1~+m2~2+ln⁡p(w1)p(w2)n1−n2−2

其中,mi~mi~為在一維空間各樣本的均值:mi~=1n1∑y∈ωiymi~=1n1∑y∈ωiy。 

樣本的內類離散度s2i~si2~和總類離散度sw~sw~為s2i~=∑y∈ωi(y−mi~),i=1,2si2~=∑y∈ωi(y−mi~),i=1,2, 

sw~=s21~+s22~sw~=s12~+s22~

(7)對於給定的xx,計算它在w∗w∗上的投影點yy。y=(w∗)txy=(w∗)tx。 

(8)根據決策規則分類,有 

{y>y0⇒x∈ω1yy0⇒x∈ω1y用fisher函式解決多分類問題時,首先實現兩類fisher分類,然後根據返回的類別與新的類別再做兩類fisher分類,又能夠得到比較接近的類別,以此類推,直至所有的類別,最後得出未知樣本的類別。 

下圖顯示了fisher演算法降維之後資料線性可分: 

下面以一道例題來練習fisher二分類: 

例:為了解某河段as,pb汙染狀況,設在甲,乙兩地監測,取樣測的這兩種元素在水中和底泥中的濃度(如下表)。依據這些資料判別未知樣本是從哪個區域採得的。 

matlab下的實驗**如下: 

%mian.m

x=load('x.txt');

x1=x(1:5,:);

x2=x(6:10,:);

sample=x(11:12,:);

y=fisher(x1,x2,sample)

%fisher.m

function y=fisher(x1,x2,sample)

%fisher函式

%x1,x2,sample分別為兩類訓練樣本及待測資料集,其中行為樣本數,列為特徵數

r1=size(x1,1);r2=size(x2,1);

r3=size(sample,1);

a1=mean(x1)';a2=mean(x2)';

s1=cov(x1)*(r1-1);s2=cov(x2)*(r2-1);

sw=s1+s2;%求出協方差矩陣

w=inv(sw)*(a1-a2)*(r1+r2-2);

y1=mean(w'*a1);

y2=mean(w'*a2);

y0=(r1*y1+r2*y2)/(r1+r2);

for i=1:r3

y(i)=w'*sample(i,:)';

if y(i)>y0

y(i)=0;

else

y(i)=1;

endend

假設我們把甲地類標籤設為0,乙地設為1,實驗結可以得出第乙個未知樣本來之乙地,第二個來之甲地。 

以上我們對fisher判別分析有了乙個初步的了解,fisher判別分析在模式識別,機器學習中應用的非常廣泛,進一步的了解可以閱讀相關書籍與資料。

參考資料: 

[1] 許國根,賈瑛.模式識別與智慧型計算的matlab實現[m],北京航空航天大學出版社 

[2] belhumeur p n, hespanha j p, kriegman d. eigenfaces vs. fishe***ces: recognition using class specific linear projection[j]. pattern analysis and machine intelligence, ieee transactions on, 1997, 19(7): 711-720.

fisher線性判別 判別分析 Fisher判別

上期 判別分析概述 中我們提到,判別分析 discriminant analysis 是根據判別物件若干個指標的觀測結果判定其應屬於哪一類的資料統計方法,其中fisher判別一般用於指標為定量資料的兩類判別,bayes判別多用於指標為定量資料的多類判別,同時,兩者均可利用spss完成,但在運用和解讀...

Fisher判別分析

將高維度空間的樣本投影到低維空間上,使得投影後的樣本資料在新的子空間上有最小的類內距離以及最大的類間距離,使得在該子空間上有最佳的可分離性 可以看出右側投影後具有更好的可分離性。剛學完感覺兩個很類似,實際上兩個方法是從不同的角度來降維。pca是找到方差盡可能大的維度,使得資訊盡可能都儲存,不考慮樣本...

Fisher線性判別分析

三 結果 四 在uci資料集上的iris和sonar資料上驗證演算法的有效性 iris資料3類,4維,150個資料 sonar資料2類,60維,208個樣本.訓練和測試樣本有三種方式進行劃分 三選一 1.將資料隨機分訓練和測試,多次平均求結果 2.k折交叉驗證 3.留1法 針對不同維數,畫出曲線圖 ...