主成成分计算步骤

1.将数据矩阵按列进行中心标准化。标准化后的数据矩阵仍然为X

2.求相关系数矩阵R, R = r(i,j)p*p

3.求R的特征方程的特征根

4.确定主成成分个数m

5.计算m个相应的单位特征向量 B1, B2, B3….Bm

6.计算主成成分 Zi = B1i*X1 + B2i*X2 + … + Bpi*Xp (i=1, 2, …, m)


利用matlab辅助计算

1.首先构造一个7行 5列的矩阵  X = rand(7, 5) * 100;


X = 

10.4012   13.4123    1.3283   99.5390   76.1426

74.5546   21.2602   89.7191   33.2093   63.1070

73.6267   89.4942   19.6658   29.7347    8.9892

56.1861    7.1453    9.3371    6.2045    8.0862

18.4194   24.2487   30.7367   29.8244   77.7241

59.7211    5.3754   45.6058    4.6351   90.5135

29.9937   44.1722   10.1669   50.5428   53.3772


2.将矩阵进行标准化处理, 这里用最小-最大规范化算法进行处理


公式为:

X* = (X – min) / (max – min)


matlab代码:

for i = 1 : m

    X(:, i) = ( X(:, i) - min(X(:, i)) )./ ( max(X(:, i)) - min(X(:, i)) );

end


3. 对标准化后的矩阵进行相关系数矩阵R的求解

利用matlab进行编码求解:

r = zeros(n, n);

for i = 1 : m

    for j = 1 : m

        r(i, j) = sum( (X(:, i) - mean(X(:, i))).*(X(:, j) - mean(X(:, j))) ) / sqrt( sum((X(:, i) - mean( X(:, i))).^2) * sum((X(:, j) - mean( X(:, j))).^2) );

    end

end



相关系数矩阵R的结果求得为:

r =


    1.0000    0.2883    0.5705   -0.6522   -0.4549         

    0.2883    1.0000   -0.1594    0.0515   -0.5298         

    0.5705   -0.1594    1.0000   -0.3558    0.3173         

   -0.6522    0.0515   -0.3558    1.0000    0.2704         

   -0.4549   -0.5298    0.3173    0.2704    1.0000   



4. 求出R的特征方程: det(R – λE) = 0 的特征根


解得: 

λ1 = 0.0874

λ2 = 0.3012

λ3 = 0.7315

λ4 = 1.6758

λ5 = 2.2042


对应的特征向量为:


B1     B2  B3      B4      B5

0.6901   -0.2974    0.1253    0.0929    -0.6411

-0.0575    0.5110    0.6064   -0.5479    -0.2599

-0.5402   -0.1773    0.4862    0.5814    -0.3200  

0.1514   -0.6016    0.5480    -0.2160     0.5179

0.4535    0.5071    0.2824    0.5536    0.3885


5.对特征根排序并算出累积贡献率为

 0.4408    0.7760    0.9223    0.9825    1.0000


取累积贡献率大于0.8时的次数 m 为 3


6. 根据m = 3, 有3个主成成分, 利用公式 

 Zi = B1i*X1 + B2i*X2 + … + Bpi*Xp


算出

    Z1    Z2     Z3

  

  70.5535   15.0421     86.1324 

  -40.3164   75.2032    101.8754  

  -57.8628  -32.2065    91.8894    

  -34.5110    9.8697    21.5963 

   17.6952   42.8816    70.2496  

  -16.7131   78.2252    61.0173   

   12.9504   3.1279    78.2586    


原始数据从5维降到3维, 这3维数据占据了原始数据92%以上的信息