【机器学习】主元分析(PCA)以及与SVD的区别联系
參考文章:如何理解主元分析(PCA)?
主元分析的目的是降低數據的維度。主元分析也就是PCA,主要用于數據降維。
1 什么是降維?
比如說有如下的房價數據:
這種一維數據可以直接放在實數軸上:
不過數據還需要處理下,假設房價樣本用表示,那么均值為:
然后平移到以均值為原點:
以為原點的意思是,以為0,那么上述表格的數字就需要修改下:
這個過程稱為“中心化”。“中心化”處理的原因是,這些數字后繼會參與統計運算,比如求樣本方差,中間就包含了:
說明下,雖然樣本方差的分母應該是,這里分母采用是因為這樣算出來的樣本方差為一致估計量,不會太影響計算結果并且可以減少運算負擔。
用“中心化”后的數據就可以直接算出“房價”的樣本方差:
“中心化”之后可以看出數據大概可以分為兩類:
現在新采集了房屋的面積,可以看出兩者完全正相關,有一列其實是多余的:
求出房屋樣本、面積樣本的均值,分別對房屋樣本、面積樣本進行“中心化”后得到:
房價()和面積()的樣本協方差是這樣的(這里也是用的一致估計量):
可見“中心化”后的數據可以簡化上面這個公式,這點后面還會看到具體應用。
把這個二維數據畫在坐標軸上,橫縱坐標分別為“房價”、“面積”,可以看出它們排列為一條直線:
如果旋轉坐標系,讓橫坐標和這條直線重合:
旋轉后的坐標系,橫縱坐標不再代表“房價”、“面積”了,而是兩者的混合(術語是線性組合),這里把它們稱作“主元1”、“主元2”,坐標值很容易用勾股定理計算出來,比如在“主元1”的坐標值為:
很顯然在“主元2”上的坐標為0,把所有的房間換算到新的坐標系上:
因為“主元2”全都為0,完全是多余的,我們只需要“主元1”就夠了,這樣就又把數據降為了一維,而且沒有丟失任何信息:
2 非理想情況如何降維?
上面是比較極端的情況,就是房價和面積完全正比,所以二維數據會在一條直線上。
現實中雖然正比,但總會有些出入:
把這個二維數據畫在坐標軸上,橫縱坐標分別為“房價”、“面積”,雖然數據看起來很接近一條直線,但是終究不在一條直線上:
那么應該怎么降維呢?分析一下,從線性代數的角度來看,二維坐標系總有各自的標準正交基(也就是兩兩正交、模長為1的基),:
在某坐標系有一個點,,它表示在該坐標系下標準正交基的線性組合:
只是在不同坐標系中,的值會有所不同(旋轉的坐標表示不同的坐標系):動圖,建議看原網站。
因為到原點的距離不會因為坐標系改變而改變:
而:
所以,在某坐標系下分配給較多,那么分配給的就必然較少,反之亦然。最極端的情況是,在某個坐標系下,全部分配給了,使得:
那么在這個坐標系中,就可以降維了,去掉并不會丟失信息:
如果是兩個點,情況就復雜一些:
為了降維,應該選擇盡量多分配給,少分配給的坐標系。
3 主元分析(PCA)
具體怎么做呢?假設有如下數據:(a、b為樣本,X、Y為特征)
上面的數據這么解讀,表示有兩個點:
這兩個點在初始坐標系下(也就是自然基)下坐標值為:
圖示如下:
隨著坐標系的不同,的值會不斷變化:
要想盡量多分配給,借鑒最小二乘法(請參考如何理解最小二乘法)的思想,就是讓:
要求這個問題,先看看怎么表示,假設:
根據點積的幾何意義(如何通俗地理解協方差和點積)有:
那么:
上式其實是一個二次型(可以參看如何通俗地理解二次型):
這里矩陣就是二次型,是一個對稱矩陣,可以進行如下的奇異值分解(可以參看如何通俗地理解奇異值分解):
其中,為正交矩陣,即。
而是對角矩陣:
其中,是奇異值,。
將代回去:
因為是正交矩陣,所以令:
所得的也是單位向量,即:
繼續回代:
最初求最大值的問題就轉化為了:
感興趣可以用拉格朗日乘子法計算上述條件極值(參看如何通俗地理解拉格朗日乘子法以及KKT條件),結果是當時取到極值。
因此可以推出要尋找的主元1,即:
4 協方差矩陣
上一節的數據:
我們按行來解讀,得到了兩個向量:
在這個基礎上推出了矩陣:
這個矩陣是求解主元1、主元2的關鍵。
如果我們按列來解讀,可以得到兩個向量:
即:
那么剛才求出來的矩陣就可以表示為:
之前說過“中心化”后的樣本方差(關于樣本方差、協方差可以參看這篇文章:如何通俗地理解協方差和點積):
樣本協方差為:
兩相比較可以得到一個新的矩陣,也就是協方差矩陣:
都可以進行奇異值分解:
可見,協方差矩陣的奇異值分解和相差無幾,只是奇異值縮小了倍,但是不妨礙奇異值之間的大小關系,所以在實際問題中,往往都是直接分解協方差矩陣。
5 實戰
回到使用之前“中心化”了的數據:
這些數據按行,在自然基下畫出來就是:
按列解讀得到兩個向量:
組成協方差矩陣:
進行奇異值分解:
根據之前的分析,主元1應該匹配最大奇異值對應的奇異向量,主元2匹配最小奇異值對應的奇異向量,即:
以這兩個為主元畫出來的坐標系就是這樣的:
如下算出新坐標,比如對于:
以此類推,得到新的數據表:
主元2整體來看,數值很小,丟掉損失的信息也非常少,這樣就實現了非理想情況下的降維。
?
總結
以上是生活随笔為你收集整理的【机器学习】主元分析(PCA)以及与SVD的区别联系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习】LR的分布式(并行化)实现
- 下一篇: 【机器学习】数据挖掘算法——关联规则(一