機器學習筆記——降維(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,如果不必要,那麼使用原資料能保證資訊不會丟失