【機器學習】【PCA-1】PCA基本原理和原理推導 + PCA計算步驟講解 + PCA實例展示數學求解過程

簡單講:PCA是一個降維的過程,ICA則是幫助你從多個維度分離有用數據的過程。

特徵降維:去掉可分性不強和冗餘的特徵

經過X的降維轉換Z = XU,X 是 m × n 的矩陣, U 是 n × k 的矩陣,Z 是 m × k 的矩陣,就得到X降維後的降維矩陣Z。

Z的shape=(m, k),記住這裏的降維是降低樣例的特徵維度,所以Z的shape=(m, k),其中m還是樣本矩陣的樣例總數,k是降維後的特徵維度總數。

1.PCA主成分分析原理

PCA的主要支撐理論是協方差以及協方差矩陣,協方差等知識點詳見以前文章的介紹:【機器學習】【線性代數】均值,無偏估計,總體/樣本方差,樣本標準差,矩陣中心化/標準化、協方差,正/不/負相關等,協方差矩陣

在信號處理中認爲信號具有較大的方差,噪音有較小的方差,信噪比就是信號與噪音的方差比,信噪比越大越好。

2.PCA原理和PCA降維原理

此部分先關圖形來自:https://www.jisilu.cn/question/252942

PCA降維原理是基於訓練數據集X的協方差矩陣C的特徵向量組成的K階矩陣U,XU得到X的k階降維矩陣Z。

主要原理用的是協方差矩陣C是一個實對角矩陣的性質!!!!

用到的最重要的性質是:實對角陣的不同特徵值對應的特徵向量是正交的!!!

再結合訓練樣本集X的理想降維矩陣的特點:每個維度特徵線性不相關,即每個維度特徵的協方差=0。

利用以上知識就得到PCA降維的公式啦~~~~,詳細推導過程見下所示:

2.1訓練樣本集

樣本集X=m×n矩陣,表示m個樣例,n個特徵維度


2.2求樣本集X的協方差矩陣C



(1)協方差矩陣是一個實對稱陣

(2)協方差矩陣的對角線上的元素是每個維度的方差

(3)協方差矩陣計算的是一個樣本中不同維度之間的協方差,而不是兩個或多個樣本之間的協方差

2.3用到的協方差矩陣C的一些關鍵性質

因爲協方差矩陣C是一個實對稱陣,所以協方差矩陣C具有實對稱陣的一些特徵:

(1)協方差矩陣C可以對角化

(2)協方差矩陣C的特徵值都是實數

(3)協方差矩陣C的特徵向量都是實向量

(4)協方差矩陣C的相似對角陣上的元素=協方差矩陣C的特徵值

(5)協方差矩陣C的不同特徵值對應的特徵向量是正交的!!!!

2.4根據2.3中C的關鍵性質得到一個對角陣

根據協方差矩陣C是實對稱陣的性質,可以輕鬆得到n 個線性無關的非零特徵向量,這些特徵向量構成的特徵矩陣E滿足:


Λ 是一個對角矩陣,除了對角線λ1,λ2,....,λn是非零值,其他位置都是0。

2.5樣本集理想的降維矩陣

訓練樣本集X理想的降維矩陣,應該是一個這樣的矩陣:降維矩陣的每個維度特徵都是線性無關的(即協方差爲0),即降維特徵的每個特徵向量是正交的,集合上說就是垂直的,代數上說就是線性無關的。

下面我們假設:

訓練數據集轉換爲理想的降維矩陣的公式爲 Z=XU,U我們還不知道是什麼,現在也不用知道U具體是什麼,在下面2.6節會求出。

記我們得到訓練樣本集X理想的降維矩陣爲Z,如下所示:


降維矩陣的每個維度特徵都是線性無關的,也就是每個維度特徵相互的協方差爲0,即cov(X,Y)=0,則可知降維矩陣的協方差矩陣爲一個對角陣,記降維矩陣Z的協方差矩陣爲D,是一個對角陣,結果應該如下所示:


以前文章有介紹,協方差矩陣對角線上的值是對應維度特徵的方差,其他位置上的值是對應倆維度特徵的協方差,容易知道,除了對角線上值非0,其他位置上的協方差都爲0,因爲前面說了:降維矩陣的每個維度特徵都是線性無關的,也就是每個維度特徵相互的協方差爲0,即cov(X,Y)=0

2.6樣本集理想的降維矩陣的求解

在前面2.5節我們有假設:訓練數據集轉換爲理想的降維矩陣的公式爲 Z = XU,帶入降維矩陣Z的協方差矩陣D的公式中,得到:


可知

(1)訓練數據集轉換爲理想的降維矩陣的公式爲 Z = XU中的U是E

(2)U就是由訓練樣本集X的協方差矩陣C的特徵向量組成的矩陣

(3)降維矩陣Z的協方差矩陣D的對角線上元素就是訓練樣本集X的協方差矩陣C的特徵值

哈哈,是不是很拗口。

我們稱Z = XU中的U爲訓練樣本集X的k階降維矩陣Z的降維轉換矩陣,

從X到Z的這個過程稱爲X的降維過程,U稱爲X的降維轉換矩陣,Z稱爲X的降維矩陣,X是訓練樣本集。

2.7的任務就是給出U的求解過程和Z的求解結果~~~

2.7訓練樣本集X的降維矩陣Z的公式

Step1:計算訓練數據集X的協方差矩陣C

Step2:計算C的特徵值和特徵向量

Step3:特徵值按照數值降序排列,特徵向量按照自己特徵值的順序也依次排列

Step4:如果要得到訓練數據集X的k階降維矩陣,則取前K個特徵向量u1,u2,...,uk,組成降維轉換矩陣U={u1, u2, ..., uk}

Step5:然後經過X的降維轉換Z = XU,X 是 m × n 的矩陣, U 是 n × k 的矩陣,Z 是 m × k 的矩陣,就得到X降維後的降維矩陣Z:

3.PCA計算步驟,實例講解

下面給出PCA降維的計算步驟。

3.1給出訓練樣本集X

    '10樣本3特徵的樣本集'
    X = np.array([[10, 15, 29],
                        [15, 46, 13],
                        [23, 21, 30],
                        [11, 9,  35],
                        [42, 45, 11],
                        [9,  48, 5],
                        [11, 21, 14],
                        [8,  5,  15],
                        [11, 12, 21],
                        [21, 20, 25]])

3.2樣本集矩陣X中心化

中心化就是每個特徵值減去所在維度特徵的平均值。以X爲例的話就是每個元素減去所在列的平均值。

樣本集的特徵均值:
 [ 16.1  24.2  19.8]
樣本集的中心化(每個元素將去當前維度特徵的均值):
 [[ -6.1  -9.2   9.2]
 [ -1.1  21.8  -6.8]
 [  6.9  -3.2  10.2]
 [ -5.1 -15.2  15.2]
 [ 25.9  20.8  -8.8]
 [ -7.1  23.8 -14.8]
 [ -5.1  -3.2  -5.8]
 [ -8.1 -19.2  -4.8]
 [ -5.1 -12.2   1.2]
 [  4.9  -4.2   5.2]]

3.3計算樣本矩陣的協方差矩陣C

 C=[[ 108.32222222   74.53333333  -10.08888889]
    [  74.53333333  260.62222222 -106.4       ]
    [ -10.08888889 -106.4          94.17777778]]

3.4求樣本集矩陣X的協方差矩陣C的特徵值和特徵向量

樣本矩陣X的協方差矩陣C的特徵值:
 [ 335.15738485   95.32771231   32.63712506]
樣本矩陣X的協方差矩陣C的特徵向量:
 [[-0.30253213 -0.87499307 -0.37797014]
 [-0.86718533  0.08811216  0.49012839]
 [ 0.39555518 -0.47604975  0.78543792]]

3.5構建降維轉換矩陣U

假設K=2,則

按照特徵值最大的top2特徵值對應的特徵向量u1,u2組成U,u1,u2都是列向量

可知u1= (-0.30253213, -0.86718533, 0.39555518), u2=(-0.87499307,0.08811216,-0.47604975)

U=(u1, u2),shape=n×k=3×2

3.6有降維轉換公式Z=XU求得X的降維矩陣Z

    U =  np.array([[-0.30253213, -0.87499307],
                   [-0.86718533,  0.08811216],
                   [ 0.39555518, -0.47604975]])
    Z = np.dot(samples, U)
    print('樣本矩陣X的2階降維矩陣Z爲:\n', Z)
求得結果爲:
樣本矩陣X的2階降維矩陣Z爲:
 [[ -4.56200104 -21.2336912 ]
 [-39.28629002 -15.26038349]
 [-13.30247561 -32.55597794]
 [  2.71190993 -25.49365577]
 [-47.37858268 -38.02120912]
 [-42.36990935  -6.0258027 ]
 [-16.00097294 -14.43926499]
 [ -0.822856   -13.7001301 ]
 [ -5.42741864 -18.56462272]
 [-13.80800193 -28.51385518]]

到此通過以上的步驟,應該很容易和熟練求訓練樣本集矩陣X的K階降維矩陣Z了,Z的shape=(m, k),記住這裏的降維是減少特徵維度,所以Z的shape=(m, k)其中m還是樣本矩陣的樣例總數,k是降維後的特徵維度總數。

參考文獻:

[1]PCA主成分分析(Principal components analysis)

[2]機器學習筆記033|主成分分析法(PCA)

[3][機器學習]-PCA數據降維:從代碼到原理的深入解析

[4]PCA降維算法詳解 以及代碼示例

(end)


發佈了248 篇原創文章 · 獲贊 189 · 訪問量 41萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章