主要內容:算法
一.降維與PCAapp
二.PCA算法過程函數
三.PCA之恢復工具
四.如何選取維數K性能
五.PCA的做用與適用場合spa
一.降維與PCA.net
1.所謂降維,就是將數據由原來的n個特徵(feature)縮減爲k個特徵(可能從n箇中直接選取k個,也能根據這n個從新組合成k個)。可起到數據壓縮的做用(於是也就存在數據丟失)。3d
2.PCA,即主成分分析法,屬於降維的一種方法。其主要思想就是:根據原始的n個特徵(也就是n維),從新組合出k個特徵,且這k個特徵能最大量度地涵蓋原始的數據信息(雖然會致使信息丟失)。有一個結論:當某一維的方差越大時,其所包含的信息量也越大,代表其越重要;反之則反。因此,PCA的主要工做就是:重構出k個特徵,使其所包含的信息量最大。blog
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來提高一下算法的性能了。