主要內容:
一.降維與PCA
二.PCA算法過程
三.PCA之恢復
四.如何選取維數K
五.PCA的作用與適用場合
一.降維與PCA
1.所謂降維,就是將數據由原來的n個特征(feature)縮減為k個特征(可能從n個中直接選取k個,也能根據這n個重新組合成k個)。可起到數據壓縮的作用(因而也就存在數據丟失)。
2.PCA,即主成分分析法,屬於降維的一種方法。其主要思想就是:根據原始的n個特征(也就是n維),重新組合出k個特征,且這k個特征能最大量度地涵蓋原始的數據信息(雖然會導致信息丟失)。有一個結論:當某一維的方差越大時,其所包含的信息量也越大,表明其越重要;反之則反。所以,PCA的主要工作就是:重構出k個特征,使其所包含的信息量最大。
3.以下兩個例子:
第一幅圖:將平面上(二維)的點映射到一直線或向量上(一維),其丟失的信息量就是:每個點到直線上的距離。因為降維之后,就認為所有點都在直線上了。同理第二幅圖將空間上投影到一個平面上。注意:這兩個例子都選取了與原始數據盡可能“靠近”的直線或者平面,使得其保存下來的信息量最大。
二.PCA算法過程
1.首先,需要對數據特征進行歸一化
2.求出特征的協方差矩陣
3.求出協方差矩陣的特征值及特征向量,這里可直接調用函數庫
其中,S為對角矩陣,其對角線上的數就是協方差矩陣的特征值,而U就是協方差矩陣的特征向量。
而U的前k列就是我們要求的新特征(用於代替原來的n個特征,起到數據壓縮的作用)。
所以,假設原始的數據特征為x(n維),經過用變換后變為z(k維),則有如下公式:
綜上,PCA算法可總結為:
注:至於為什么要用到協方差矩陣,以及為什么要求特征向量等等一系列數學問題,這篇博客:PCA算法原理:為什么用協方差矩陣 可以很好地解釋。
(自己還沒看懂,只有個感性的認識)
三.PCA之恢復
1.對人臉圖像進行降維壓縮的效果如下:
(這里只取了部分)
2.那么壓縮后,是否可以再還原了?是可以的,只是在壓縮時丟失的那部分數據找不回來了。恢復方式如下:
即:X(approx) = U(reduce) * Z
由圖像可知:恢復后,所有的點后落在了直線上,所以丟失的數據即為原始點與直線的距離。
四.如何選取維數K
如果可能,k當然越小越好,k越小表明壓縮的程度越高,但同時又要保證足夠多的數據量。因此,選出最小的k,滿足:
以下為其求解求解過程,並且我們可以直接調用函數庫:
五.PCA的作用與適用場合
1.PCA用甚好好處?或者說有哪些應用?
1) 可以減少內存空間
2) 可以對算法進行提速
3) 可以用於數據可視化
2.既然PCA這么好用?那是不是可以隨便用呢?答案否:
個人認為,PCA其實是個輔助工具,用不用它,從功能上而言沒有太大區別,其區別就在於性能。也就是說,在用線性回歸或者Logistic回歸做一些事情時,如果直接運行,其效果或者說性能都比價可觀了,那就無謂使用PCA了。當出現占用內存過大,或者運算時間過長等,這時就可以利用PCA來提升一下算法的性能了。