是干什么的?
首先有一組數(shù)據(jù)藍(lán)色點(diǎn),PCA所謂的降維操作就是找到一個新的坐標(biāo)系(旋轉(zhuǎn)的兩條直線式垂直的,我們可以用一組標(biāo)準(zhǔn)正交基來指示),然后減掉其中一些維度,使誤差足夠小。

基本思路
假設(shè)我們有一個數(shù)據(jù),其中n代表了特征的個數(shù),m代表了樣本數(shù)。首先對
的特征進(jìn)行零均值化。
協(xié)方差矩陣(這里應(yīng)該除以m,不妨礙推導(dǎo)),C的對角線代表了特征自身的方差,而其他位置比如
代表了特征
和特征
之間的協(xié)方差。
我們想要對原來的數(shù)據(jù)X做一個行變換,把原來的特征組合成新的特征,而新的特征之間沒有關(guān)聯(lián),也就是新的矩陣
的協(xié)方差矩陣?yán)镏挥袑蔷€元素,其他位置都是0.
Want: ,
是一個對角陣
帶入得到
,展開得到
,同志們這不就是對
進(jìn)行對角化嗎?因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=XX%5ET" alt="XX^T" mathimg="1">是實(shí)對稱矩陣,一定可以對角化
,原式中的
就是對角化后的特征向量矩陣
其中特征值大小代表了
里面特征的方差大小,特征值越大,特征的方差越大,信息量越多。我們挑選主成分的話,只要挑選前面比較大的特征值對應(yīng)的特征就可以了。
計(jì)算PCA的步驟
總結(jié)一下PCA的步驟:
1. 將原始數(shù)據(jù)按列組成n行m列矩陣X
2. 將X的每一行(代表一個屬性字段)進(jìn)行零均值化,即減去這一行的均值
3. 求出協(xié)方差矩陣
4. 求出協(xié)方差矩陣的特征值及對應(yīng)的特征向量
5. 將特征向量按對應(yīng)特征值大小從左到右按列排列成矩陣,取前k行組成矩陣
6. 即為降維到k維后的數(shù)據(jù)
與SVD的關(guān)系
以上就是先求協(xié)方差矩陣然后特征值分解的方法,那么可以不求協(xié)方差矩陣嗎?可以,直接用SVD。
SVD可以分解任意矩陣:
上面通過特征值分解其實(shí)得到的就是這里的
矩陣,通過成熟的SVD方法很容易求得這些矩陣。
參考:
Machine Learning — Singular Value Decomposition (SVD) & Principal Component Analysis (PCA)