PCA 主成分分析 用Excel一步步演算过程详解
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?PCA Excel演算
1 聲明
本文的數據來自網絡,部分代碼也有所參照,這里做了注釋和延伸,旨在技術交流,如有冒犯之處請聯系博主及時處理。
2 PCA簡介
主成分分析(Principal Components Analysis),簡稱PCA,是一種數據降維技術,用于數據預處理。在PCA中,數據從原來的坐標系轉化到新的坐標系中。通常第一個新坐標軸選擇的是原始數據方差最大的方向,第二個坐標軸是與第一個坐標軸正交且具有最大方差的方向,也即是第二個選取的方向應該和第一個方向具有很弱的相關性。
3 PCA計算過程
假設有如下的二維數據,分別是x、y來演示PCA的計算過程(這里y并不是因變量)。
Step 1:計算連續變量的x、y的均值
| x | y |
| 2.5 | 2.4 |
| 0.5 | 0.7 |
| 2.2 | 2.9 |
| 1.9 | 2.2 |
| 3.1 | 3.0 |
| 2.3 | 2.7 |
| 2.0 | 1.6 |
| 1.0 | 1.1 |
| 1.5 | 1.6 |
| 1.1 | 0.9 |
則可以通過excel的AVERAGE函數,如AVERAGE(A3:A12)得到x列的均值。
Step 2:計算離差(隨機變量與其均值的差,去中心化)
注:1 這里以x和y的最后一個元素為例,則離差分別為A12-A13=1.1-1.81=-0.71和B12-B13=0.9-1.91=-1.01.
? ? ? ?2 這里的D和E列是標準化后的數據記為dataAdjust,則其為一個10*2的矩陣。
Step 3:計算x和y的協方差
兩變量協方差的公式是
所以這里即轉換成:
這里以最后一列的0.72為例 ,D12*E12=(-0.71)*(-1.01)=0.72
Step 4:構建協方差矩陣
兩變量協方差矩陣的一般形式如下:
這里的cov(x,x)即是x的方差,cov(x,y)見Step3的結果,即0.615444444。。
其中方差的公式:
則得到協方差矩陣如下:
以cov(x,x) x的方差為例,VAR(A3:A12)= 0.616555556
Step 5: 計算特征值并按大小排序
??(這里設k為特征值)由上式得,
(0.616555556-k)*(0.716555556-k)-0.615444444*0.615444444 = 0
整理后得出
k*k-(0.716555556+0.616555556)*k+0.716555556*0.616555556-0.615444444*0.615444444
則按照一元二次方程的標準形式:
a=1
b=-1.333111112
c= 0.063024445584
這里令d=? ?則,d=1.525087455
用excel解出k的兩個根。
即λ1=0.0490834,λ2= 1.284027712
按照特征值大小排序,這里因為是兩個,選擇大的λ2。
Step 6: 計算特征向量
將得到特征值分別帶入特征方程中,最終得向量分量間的關系為a1=0.92*a2,再通過單位化(a1*a1+a2*a2=1)最終得到特征向量。(非嚴格演算)
最終的特征向量為:(-0.6778734, -0.73517866)T
或者用python里的scipy求解:
import numpy as np np.set_printoptions(precision=8) import numpy as np from scipy import linalg A=np.array([[0.616555556,0.615444444],[0.615444444,0.716555556]]) evalue,evector=linalg.eig(A) print(evalue) print(evector)Step 6:得到將維的矩陣
用step2里的dataAdjust矩陣(10*2)乘以特征向量(2*1)最終得到10*1的矩陣。
4 總結
PCA的處理步驟如下:
總結
以上是生活随笔為你收集整理的PCA 主成分分析 用Excel一步步演算过程详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 支付宝为何没有借呗权限了
- 下一篇: Kettle使用_7 数据校验组件应用