PCA(Principal Component Analysis,主成分分析)是一種常用的數據分析方法。PCA被稱為應用線性代數的最有價值的成果之一,在從神經科學到計算機圖形學的各種分析中都得到了廣泛使用。PCA通過線性變換將原始數據變換為一組各維度線性無關的表示,可用於提取數據的主要特徵分量,常用於高維數據的降維。
PCA經常被用於機器學習之中,但是一般來說PCA只是作為機器學習系統的一個組件,與機器學習算法沒有依賴關係。所以,即使沒有了解過機器學習,也不妨礙對PCA的理解。
本文會涉及較多的基礎線性代數的內容,但是圖很多(
會有線代複習(
如果真的想不起來,可以只看文字以及圖片,領會PCA的主要思想。
PCA能用來幹些啥降低特徵向量的維度,提升算法的運行速度。
比如信息來源是一張100*100px的圖片,如果把每個像素都作為一維特徵,維度就高達10000,但是圖片其實沒有提供10000維這麼多的信息,時間大部分被浪費在處理冗餘的信息上。這時加入PCA可以顯著提升算法運行速度。
研究未知、複雜、混沌的系統。
比如讓一個人研究彈簧上小球的簡諧運動,出於某種原因他不能直觀觀察到小球的運動情況。於是他設置了三個攝像機從不同角度記錄小球的運動。但是實際上這只是一個一維運動,冗餘的數據是無用的,這時PCA就能起到作用。
這看起來有點蠢,但是在對神經系統,氣象學和海洋學等複雜系統的分析中我們其實會面對類似的情況。
進行數據可視化。
如果要分析一份十幾維或者幾十維的數據,由於維度過高,沒有辦法把它畫出來。運用PCA將數據降到三維或者二維之後,可以通過可視化觀察數據之間的相對分布等情況得出一些結論。
特徵向量以及降維在數據分析中,將樣本的某種屬性或某項數據稱為特徵。
比如,如果我們希望通過採集到的數據來預測房子的價格,那麼對於房子(樣本),其特徵可能有:面積、樓層、到市中心的距離、五百米內的公交站數目等等。
為了便於分析運算,在表示這些特徵的時候我們往往將其寫為向量的形式,如
這裡的
在特徵數目很多的時候,大量的特徵可能是高度相關甚至是冗餘的。我們可以針對這些特徵進行降維。
比如預測房價的時候,拿到這樣一個特徵向量:
很容易發現這兩個特徵其實描述的是一個東西,他們基本上是相等的,如果把圖畫出來可能是這個樣子
如果對這樣一個數據進行降維,我們可以直接刪除
當然這個情況十分極端,實際情況中很難遇到。不過實際應用中有很多特徵相關性很高,比如淘寶中店鋪的下單量和成交量,再比如學生的數學成績與物理成績,刪除其中一個特徵對後續算法的影響也許不會太大。
在面對大量數據的時候,我們難以直接判斷出兩個數據是否相關、相關程度有多高,也不會像上面那樣直接暴力樸素地刪除一個特徵。這時,我們就需要藉助一些工具。
一點數學線代複習課
別走啊真的都是課內學過的
其中前三小節內容為線性代數基礎內容,學過的同學可以跳過。
向量內積兩個向量的內積定義為
其幾何意義為向量
或者可以寫為
基與基向量n維空間中的任意向量可以唯一表示為n個相互線性無關的向量的線性組合,這n個向量的集合叫做基,這些向量叫做基向量。
基向量兩兩正交且都是單位向量的基叫做標準正交基。
比如二維空間中我們一般使用的基是
某個向量A可以寫作這樣
如果改變使用的基,使
那麼同一個向量A就要寫作
像這樣
可以看到,如果改變後的基仍是標準正交基,那麼向量A的新坐標就為在各個新的基向量上投影的長度,即
批量線性變換上面的公式其實可以寫成(其中
如果有很多個特徵向量
協方差突然引入這樣一個概念可能會很突兀,但是別著急,在下一節中就能看到它發揮作用。
對於兩組數據
如何描述他們的相關程度呢?
如下定義兩組數據的協方差
其中
如果協方差大於0,那麼兩組數據成正相關;如果協方差小於0,那麼兩組數據成負相關;如果協方差等於0,那麼兩組數據不相關。
直觀理解:
如果兩組數據成正相關,一般情況下,
如果兩組數據成負相關,一般情況下,
如果兩組數據不相關,可以這麼考慮:當a取某一值的時候,b的取值是隨機的,此時
**太長不看版:**當協方差為0時,表示兩組數據完全獨立。
開始降維工作優化目標:從二維到一維假設我們拿到如下一組處理過的數據,要把它從二維降到一維:
"處理"是指:將原始數據中每個特徵的值減去該特徵的平均值,確保平移後的數據的均值為0。這樣處理的優勢很快就能體現出來。
要將這樣的數據降成一維,我們考慮將數據從原來的位置投影到某個方向上,將這個新的方向作為新的特徵。那麼選取什麼樣的方向才能使損失的信息最少呢?
如果像這樣投影那顯然不是很對勁,原本圖中相差很遠的點在新的方向上卻離得很近,許多本來應該有的信息被丟失了。
而投影成這樣就比較合理,數據的分布情況和原始數據差別不大。
那如何衡量一個投影的方向是否合理呢?直觀上,我們認為投影后數據越分散,丟失的信息越少,分散程度用方差來表示。
由於我們已經將數據的均值都變化成0了,方差可以寫成
那麼從二維到一維的優化目標可以這樣描述:重新選擇一個一維的基,將二維的數據變換到新的基上,使得變換後的數據方差最大。
更高維的優化目標一般而言,使用PCA的時候我們並不是要將二維的數據降為一維的,而是對數千維的數據進行降維。對於更高的維度,這裡用三維降為二維來類比舉例。
按照之前總結的方法,我們先選出一個基向量,使投影到這個基向量上的點的方差最大。由於要將數據降到二維,我們還需要選擇第二個基向量。
這個時候我們會發現「方差最大」的優化目標不好用了,因為如果我們尋找第二個方向使得投影的方差最大,會得到和第一個基向量完全一樣的結果——因為優化的目標完全沒有改變。
這時就要用到我們剛才講的協方差。
我們已經通過對第一個基向量的投影找到了一組新的特徵
由於均值為0,協方差可以被寫成
比剛才好看了不少。
於是,從n維降到r維的優化目標是:
重新選擇一個基向量,將原始數據變換到新的基上,使得變換後的數據方差最大。依次另選