1. 程式人生 > >機器學習筆記——降維(dimensionality reduction)

機器學習筆記——降維(dimensionality reduction)

降維

目的

我們對資料進行降維的目的有兩個:一個是資料壓縮,對於資料壓縮我們可以大大地節省儲存空間

第二就是使得資料可以視覺化,我們將多維資料壓縮成二維可以供我們更好地觀察資料的特徵

主成分分析(PAC)

主成分分析法可以將n維的資料降為k維,實際上我們是選取了一個k維的基向量,然後將n維的資料對映到k維上,使得投影誤差最小。這k個基向量就是我們的主成分

在降維之前我們也需要對資料進行預處理

之後我們可以應用matlab中的高階庫得到一個矩陣U,U是一個n×n的矩陣,我們取前k個向量就是k維空間的基向量,得到矩陣Ureduce

因此我們可以通過矩陣相乘的形式將n維的資料對映到k維空間上。相當於我們選取了k個n維空間的向量作為k維空間的基向量,然後將需要表示的向量分別與這k個向量做點乘(即目標向量在基向量上的投影),得到k維空間的表示

以下使其在matlab中的表示,需要注意的是我們對輸入特徵有很好的向量化表示

上面我們講了如何將n維資料對映到k維,那麼我們怎麼從壓縮後的資料中提取出原資料呢?我們可以通過近似的方法將資料從原來的k維反對映到n維。具體操作也是將k維向量與Ureduce進行矩陣相乘

那我們怎麼選取主成分數量k的值呢?我們可以用投射誤差與資料方差的比值來作為k選取的依據。一般我們選取最小的k使得這個比值小於某個閾值,例如0.01,0.05。我們一般在描述k的時候不說k的具體值,而是說“99% of variance is retained”

一下是在matlab中求出這個比值的快速演算法

建議

需要注意的是降維操作得到的k個基向量應該只在訓練集上執行PCA來確定,而不能包括交叉資料集與測試集的資料。當得到了這個對映後可以將其應用在交叉資料集與測試集上

我們應該注意PCA的應用場景,例如資料壓縮與資料視覺化。但是利用PCA來防止過擬合是對PCA的誤用。雖然我們發現PCA確實在某些時候能防止過擬合的產生,但是我們知道降維操作實際上是對資料進行了一定程度的近似,丟失了部分資訊,如果我們只想防止過擬合,那麼正則化無疑是最好的方法。

因此我們時刻要注意我們的演算法是否一定要使用 PCA,如果不必要,那麼使用原資料能保證資訊不會丟失