主成分分析法原理與MATLAB實現

1:主成分分析原理:

主成分分析法是利用降維的思想,把多指標轉化爲少數幾個綜合指標(即主成分),其中每個主成分都能夠反映原始變量的大部分信息,且所含信息互不重複。這種方法在引進多方面變量的同時將複雜因素歸結爲幾個主成分,使問題簡單化,同時得到的結果更加科學有效的數據信息。例如,做一件上衣需要測量很多尺寸,如身高,袖長,腰圍,胸圍,肩寬等十幾項指標,但是廠家不可能把尺寸型號分這麼多,而是從這十幾種指標中綜合成幾個少數的綜合指標作爲分類型號,例如綜合成反映身高,反映胖瘦和反應特體的三項指標,這就是主成分的思想。主要的方法有特徵值分解,SVD(奇異值分解)和NMF(非負矩陣分解);

2:步驟:

參考:http://wiki.mbalib.com/wiki/%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90%E6%B3%95


第一步採用的是中心化標準化,即元素值減去均值除以標準差,得到的結果服從標準正態分佈;

3:matlab代碼實現:

x=[1.2,3,-1.1,17;
    1.5,5,-3,22;
    1.3,4.0,-2,19;
    0.7,3,-2.3,11
    1,4,-1.2,20.8];
stdr=std(x);                %求各變量的標準差;
[n,m]=size(x);               %矩陣的行與列
sddata=x./stdr(ones(n,1),:);         %標準化變換
[p,princ,egenvalue]=princomp(sddata);  %調用主成分
p=p(:,1:3);                          %輸出前3主成分系數;
sc=princ(:,1:3);                       %前3主成分量;
egenvalue;                              %相關係數矩陣的特徵值,即各主成分所佔比例;
per=100*egenvalue/sum(egenvalue);       %各個主成分所佔百分比;

運行結果:

前3主成分系數:


特徵值矩陣:


百分比:

   所以前3主成分就是:z1=0.5403x1+0.5792x2-0.2966x3+0.5334x4;  z2=0.1824x1-0.1325x2+0.8686x3+0.4419x4;  z3=0.802x1-0.4998x2-0.0838x3-0.3162x4;

上述數據就可以按照這前3主成分進行描述了。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章