演算法步驟:
假設有m條n維資料。
1. 將原始資料按列組成n行m列矩陣x
2. 將x的每一行(代表乙個屬性字段)進行零均值化,即減去這一行的均值
3. 求出協方差矩陣c=1/mxxt
4. 求出協方差矩陣的特徵值以及對應的特徵向量
5. 將特徵向量按對應特徵值大小從上到下按行排列成矩陣,取前k行組成矩陣p
6. y=px即為降維到k維後的資料
以這個為例,我們用pca的方法將這組二維資料降到一維
因為這個矩陣的每行已經是零均值,所以我們可以直接求協方差矩陣:
然後求其特徵值和特徵向量,求解後的特徵值為:
λ1=2,λ2=2/5
其對應的特徵向量分別是:
由於對應的特徵向量分別是乙個通解,c1和c2可取任意實數。那麼標準化後的特徵向量為:
因此我們的矩陣p是:
可以驗證協方差矩陣c的對角化:
最好我們用p的第一行誠意資料矩陣,就得到了降維後的資料表示:
降維後的投影結果如下圖:
pca本質上是將方差最大的方向作為主要特徵,並且在各個正交方向上將資料「離相關」,也就是讓它們在不同的正交方向上沒有相關性。
因此,pca也存在一些限制,例如它可以很好地解除線性相關,但是對於高階相關性就沒有辦法了。對於存在高階相關性的資料,可以考慮kernel pca,通過kernel將非線性相關轉化為線性相關。另外,pca假設資料各特徵分布在正交方向上,如果在非正交方向上存在幾個方差較大的方向,pca的效果就大打折扣。
pca是一種無引數技術,也就是說面對同樣的資料,如果不考慮清晰,誰來做結果都一樣,沒有主觀引數的介入,所以pca便於通用實現,但是本身沒有個性化的優化。
本文主要參考:
PCA演算法和例項
演算法步驟 假設有m條n維資料。1.將原始資料按列組成n行m列矩陣x 2.將x的每一行 代表乙個屬性字段 進行零均值化,即減去這一行的均值 3.求出協方差矩陣c 1 mxxt 4.求出協方差矩陣的特徵值以及對應的特徵向量 5.將特徵向量按對應特徵值大小從上到下按行排列成矩陣,取前k行組成矩陣p 6....
PCA演算法和例項
演算法步驟 假設有m條n維資料。1.將原始資料按列組成n行m列矩陣x 2.將x的每一行 代表乙個屬性字段 進行零均值化,即減去這一行的均值 3.求出協方差矩陣c 1 mxxt 4.求出協方差矩陣的特徵值以及對應的特徵向量 5.將特徵向量按對應特徵值大小從上到下按行排列成矩陣,取前k行組成矩陣p 6....
PCA演算法筆記
此博文只是自己的學習筆記,不具參考價值 pca演算法將高維特徵轉換成低維特徵 非線性相關 同時減小計算量。將原始資料按列組成m mm行n nn列矩陣x xx m mm個屬性,n nn個樣本 將x xx的每一行 代表乙個屬性字段 進行零均值化,即減去這一行的均值,得到x x x 求出協方差矩陣c cc...