PCA(1):基礎知識介紹

PCA算法思路:

        首先利用樣本集及特徵構建一個樣本矩陣,然後利用樣本矩陣計算得到一個協方差矩陣,再計算協方差矩陣的特徵值和特徵向量,保留特徵值前k個大的對應的特徵向量作爲新的維度方向,再將原始樣本數據轉換到新的空間維度。(他非常巧妙地利用協方差矩陣來計算出樣本集在不同方向上的分散程度,利用方差最大的方向作爲樣本集的主方向)

上述提到的k(k<n,n是n維特徵,)這個k維是全新的正交特徵,這k維特徵稱爲主成分,是重新構造出來的k維特徵,而不是簡單的從n維特徵中去除其餘n-k維特徵。

爲什麼要用到PCA:

         PCA算法是專門用來對高維數據進行降維,因此算法的核心就是在於找出數據變化的主方向和次方向。比如下圖二維平面內有一些點,那麼向量u1的方向可以認爲是該數據的主方向,而u2是次方向。

去均值:

爲什麼要去均值:

         這主要是去除均值對變化的影響,減去均值後數據的信息量沒有變化,即數據的區分度(方差)是不變的。如果不去均值,第一主成分,可能會或多或少的與均值有關。

歸一化:

        將不同特徵的數據範圍歸一化到同一範圍中,一般做法是將每個值除以當前維的最大值。

         (將每一維特徵的均值中心化,方差歸一化)

對於組成的協方差矩陣求取的特徵值與特徵向量:

         特徵值越大的特徵向量,樣本集在該方向上的變化越大。(因爲協方差矩陣計算出來的特徵值爲其特徵向量上的樣本集的方差,當方差越大說明數據集在該特徵向量方向上越分散,變化越大,所以該方向就可以用來作爲數據集的主方向。)對於由特徵向量組成的矩陣我們稱爲特徵矩陣U,特徵矩陣是一個正交矩陣,即滿足U^{T}U=UU^{T}=I(特徵向量之間相互正交,說明各特徵之間相關性最小,基本接近0。獨立===>不相關<===>協方差爲0

計算新維度下的每個樣本對應的新樣本數據值:

        已經得到了數據變化的主次方向,現在需要計算樣本在每個特徵向量上的長度,對於原始樣本x,其在特徵向量u1方向上的長度爲:u_{1}^{T}x

PCA具有縮放不變性:

       所有的特徵分量被放大或縮小相同的倍數,PCA輸出的特徵向量不會發生變化。

例子分析:

       比如下邊有3個維度爲4的樣本數據(X,Y,Z,A)首先假設XYZA之間互不相關。

樣本編號 X Y Z A
1 1 1 12 30
2 90 2 13 30
3 847 3 14 30

由上邊幾個簡單的樣本我們就可以看出XYZ作爲主成分,X可以作爲該樣本的第一主成分,因爲分佈比較廣。

但是如果每一個維度我們都不能明顯的看出他們分佈的差異性,意思就是在同一個維度上每個樣本之間的差值都非常小,那麼我們就不能一眼看出該樣本的主成分。

通過如下一些二維數據我們走一遍PCA的過程:

原始樣本編號 x y
1 2.5 2.4
2 0.5 0.7
3 2.2 2.9
4 1.9 2.2
5 3.1 3.0
6 2.3 2.7
7 2 1.6
8 1 1.1
9 1.5 1.6
10 1.1 0.9

第一步:求x、y的均值。\bar{x}=1.81,\bar{y}=1.91,得到去均值之後的樣本如下:

去均值後的樣本個數 x y
1 0.69 0.49
2 -1.31 -1.21
3 0.39 0.99
4 0.09 0.29
5 1.29 1.09
6 0.49 0.79
7 0.19 -0.31
8 -0.81 -0.81
9 -0.31 -0.31
10 -0.71 -1.01

第二步:求x,y的協方差矩陣:

求的協方差矩陣,對角線上分別是方差,非對角線上是協方差,協方差是衡量兩個變量同時變化的變化程度(協方差大於0表示,x和y若一個增另外一個也增;小於0表示一個增,一個相應的減。如果x和y是統計獨立的,那麼兩者之間的協方差就是0;相反協方差是0並不能說明兩者是獨立的。而且兩者協方差的絕對值越大,那麼兩者對彼此的影響就越大,反之越小。協方差是沒有單位的量。)

第三步:求協方差的特徵值和特徵向量,得到

第四步:將特徵值按照從大到小的順序排序,選擇其中最大的k個,然後將其對應的k個特徵向量分別作爲列向量組成特徵向量矩陣。

這裏特徵值只有兩個,我們選擇其中最大的那個,這裏是1.28402771,對應的特徵向量是(-0.677873399, -0.735178656)T。

第五步:將樣本點投影到選取的特徵向量上。假設樣例數爲m(此處是10),特徵數爲n(此處是2),減去均值後的樣本矩陣爲DataAdjust(m*n)(此處是10x2),協方差矩陣是n*n(此處是2x2),選取的k個特徵向量組成的矩陣爲EigenVectors(n*k)(此處是2x1)。那麼投影后的數據FinalData爲

FinalData(10*1) = DataAdjust(10*2矩陣) x 特徵向量(-0.677873399, -0.735178656)T(此步的矩陣乘法就是將原始樣本點分別往特徵向量對應的軸上做投影)

最後將每一個去均值後的數據點與選擇的k個特徵向量做乘後的結果爲:(10x2)與(2x1)矩陣得到(10x1)

Transformed Data(一個維度)
-0.828
1.778
-0.992
-0.274
-1.676
-0.913
-0.991
1.144
0.438
1.224

這樣,就將原始樣例的n維特徵變成了k維,這k維就是原始特徵在k維上的投影。

最後例子參照博客:https://blog.csdn.net/zhongkelee/article/details/44064401

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章