Stanford機器學習筆記-10. 降維(Dimensionality Reduction)


10. Dimensionality Reduction

Content 

10. Dimensionality Reduction

  10.1 Motivation

    10.1.1 Motivation one: Data Compression

    10.2.2 Motivation two: Visualization

  10.2 Principal Component Analysis

    10.2.1 Problem formulation

    10.2.2 Principal Component Analysis Algorithm

    10.2.3 Choosing the Number of Principal Components

    10.2.4 Advice for Applying PCA  

10.1 Motivation

10.1.1 Motivation one: Data Compression

如果我們有許多冗余的數據,我們可能需要對特征量進行降維(Dimensionality Reduction)。

我們可以找到兩個非常相關的特征量,可視化,然后用一條新的直線來准確的描述這兩個特征量。例如圖10-1所示,x1和x2是兩個單位不同本質相同的特征量,我們可以對其降維。

圖10-1 一個2維到1維的例子

又如圖10-2所示的3維到2維的例子,通過對x1,x2,x3的可視化,發現雖然樣本處於3維空間,但是他們大多數都分布在同一個平面中,所以我們可以通過投影,將3維降為2維。

圖10-2 一個3維到2維的例子

降維的好處很明顯,它不僅可以數據減少對內存的占用,而且還可以加快學習算法的執行。

注意,降維只是減小特征量的個數(即n)而不是減小訓練集的個數(即m)。

10.2.2 Motivation two: Visualization

我們可以知道,但特征量維數大於3時,我們幾乎不能對數據進行可視化。所以,有時為了對數據進行可視化,我們需要對其進行降維。我們可以找到2個或3個具有代表性的特征量,他們(大致)可以概括其他的特征量。

例如,描述一個國家有很多特征量,比如GDP,人均GDP,人均壽命,平均家庭收入等等。想要研究國家的經濟情況並進行可視化,我們可以選出兩個具有代表性的特征量如GDP和人均GDP,然后對數據進行可視化。如圖10-3所示。

圖10-3 一個可視化的例子

10.2 Principal Component Analysis

主成分分析(Principal Component Analysis : PCA)是最常用的降維算法。

10.2.1 Problem formulation

首先我們思考如下問題,對於正交屬性空間(對2維空間即為直角坐標系)中的樣本點,如何用一個超平面(直線/平面的高維推廣)對所有樣本進行恰當的表達?

事實上,若存在這樣的超平面,那么它大概應具有這樣的性質:

  • 最近重構性 : 樣本點到這個超平面的距離都足夠近;
  • 最大可分性:樣本點在這個超平面上的投影能盡可能分開。

下面我們以3維降到2維為例,來試着理解為什么需要這兩種性質。圖10-4給出了樣本在3維空間的分布情況,其中圖(2)是圖(1)旋轉調整后的結果。在10.1節我們默認以紅色線所畫平面(不妨稱之為平面s1)為2維平面進行投影(降維),投影結果為圖10-5的(1)所示,這樣似乎還不錯。那為什么不用藍色線所畫平面(不妨稱之為平面s2)進行投影呢? 可以想象,用s2投影的結果將如圖10-5的(2)所示。

圖10-4 樣本在3維正交空間的分布

圖10-5 樣本投影在2維平面后的結果

由圖10-4可以很明顯的看出,對當前樣本而言,s1平面比s2平面的最近重構性要好(樣本離平面的距離更近);由圖10-5可以很明顯的看出,對當前樣本而言,s1平面比s2平面的最大可分性要好(樣本點更分散)。不難理解,如果選擇s2平面進行投影降維,我們會丟失更多(相當多)的特征量信息,因為它的投影結果甚至可以在轉化為1維。而在s1平面上的投影包含更多的信息(丟失的更少)。

這樣是否就是說我們從3維降到1維一定會丟失相當多的信息呢? 其實也不一定,試想,如果平面s1投影結果和平面s2的類似,那么我們可以推斷這3個特征量本質上的含義大致相同。所以即使直接從3維到1維也不會丟失較多的信息。這里也反映了我們需要知道如何選擇到底降到幾維會比較好(在10.2.3節中討論)。

讓我們高興的是,上面的例子也說明了最近重構性和最大可分性可以同時滿足。更讓人興奮的是,分別以最近重構性和最大可分性為目標,能夠得到PCA的兩種等價推導

一般的,將特征量從n維降到k維:

  • 以最近重構性為目標,PCA的目標是找到k個向量,將所有樣本投影到這k個向量構成的超平面,使得投影的距離最小(或者說投影誤差projection error最小)。
  • 以最大可分性為目標,PCA的目標是找到k個向量,將所有樣本投影到這k個向量構成的超平面,使得樣本點的投影能夠盡可能的分開,也就是使投影后的樣本點方差最大化

注意: PCA和線性回歸是不同的,如圖10-6所示,線性回歸是以平方誤差和(SSE)最小為目標,參見1.2.4節;而PCA是使投影(二維即垂直)距離最小;PCA與標記或者預測值完全無關,而線性回歸是為了預測y的值。

圖10-6 PCA不是線性回歸

分別基於上述兩種目標的具體推導過程參見周志華老師的《機器學習》P230。從方差的角度推導參見李宏毅老師《機器學習》課程Unsupervised Learning: Principle Component Analysis

兩種等價的推導結論是:對協方差矩陣進行特征值分解,將求得的特征值進行降序排序,再取前k個特征值對應的特征向量構成

其中

10.2.2 Principal Component Analysis Algorithm

基於上一節給出的結論,下面給出PCA算法。

輸入:訓練集:,低維空間維數k

過程:

  1. 數據預處理:對所有樣本進行中心化(即使得樣本和為0)

  2. 計算樣本的協方差矩陣(Sigma)

        (其中是n*1的向量)

    在matlab中具體實現如下,其中X為m*n的矩陣:

    Sigma = (1/m) * X'* X;

  3. 對2中求得的協方差矩陣Sigma進行特征值分解

    在實踐中通常對協方差矩陣進行奇異值分解代替特征值分解。在matlab中實現如下:

    [U, S, V] = svd(Sigma); (svd即為matlab中奇異值分解的內置函數)

  4. 取最大的k個特征值所對應的特征向量

    在matlab具體實現時,Ureduce = 認為是第3步求得的U的前k個,即有:Ureduce = U( : , 1:k); 其中Ureduce為n*k的矩陣

經過了上述4步得到了投影矩陣Ureduce,利用Ureduce就可以得到投影后的樣本值

為k*1的向量)

下面總結在matlab中實現PCA的全部算法(假設數據已被中心化)

Sigma = (1/m) * X' * X;    % compute the covariance matrix

[U,S,V] = svd(Sigma);      % compute our projected directions

Ureduce = U(:,1:k);        % take the first k directions

Z = Ureduce' * X;          % compute the projected data points

10.2.3 Choosing the Number of Principal Components

如何選擇k(又稱為主成分的個數)的值?

首先,試想我們可以使用PCA來壓縮數據,我們應該如何解壓?或者說如何回到原本的樣本值?事實上我們可以利用下列等式計算出原始數據的近似值Xapprox:

Xapprox = Z * Ureduce (m*n = m*k * k*n )

自然的,還原的數據Xapprox越接近原始數據X說明PCA誤差越小,基於這點,下面給出選擇k的一種方法:

結合PCA算法,選擇K的算法總結如下:

這個算法效率特別低。在實際應用中,我們只需利用svd()函數,如下:

10.2.4 Advice for Applying PCA

  1. PCA通常用來加快監督學習算法。
  2. PCA應該只是通過訓練集的特征量來獲取投影矩陣Ureduce,而不是交叉檢驗集或測試集。但是獲取到Ureduce之后可以應用在交叉檢驗集和測試集。
  3. 避免使用PCA來防止過擬合,PCA只是對特征量X進行降維,並沒有考慮Y的值;正則化是防止過擬合的有效方法。
  4. 不應該在項目一開始就使用PCA: 花大量時間來選擇k值,很可能當前項目並不需要使用PCA來降維。同時,PCA將特征量從n維降到k維,一定會丟失一些信息。
  5. 僅僅在我們需要用PCA的時候使用PCA: 降維丟失的信息可能在一定程度上是噪聲,使用PCA可以起到一定的去噪效果。
  6. PCA通常用來壓縮數據以加快算法,減少內存使用或磁盤占用,或者用於可視化(k=2, 3)。

 

參考:《機器學習》  周志華


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM