主成成分计算步骤
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%以上的信息
Comments