1. 程式人生 > >吳恩達機器學習筆記(十五)

吳恩達機器學習筆記(十五)

原創部落格,轉載請註明出處!

1、目標I :資料壓縮

開始談論第二種型別的無監督學習問題,稱為降維。有幾個不同的的原因使你可能想要做降維。一是資料壓縮,後面我們會看了一些視訊後,資料壓縮不僅允許我們壓縮資料,因而使用較少的計算機記憶體或磁碟空間,它還能讓我們加快我們的學習演算法

假設我們未知兩個的特徵:x1長度:用釐米表示;x2:是用英寸表示同一物體的長度。這給了我們高度冗餘表示,也許我們想要做的是減少資料到一維,只有一個數測量這個長度。

將資料從二維降至一維:兩種儀器對同一個東西測量的結果不完全相等(由於誤差、精度等),而將兩者都作為特徵有些重複,因而,我們希望將這個二維的資料降至一維

將資料從三維降至二維: 這個例子中我們要將一個三維的特徵向量降至一個二維的特徵向量。過程是與上面類似的,我們將三維向量投射到一個二維的平面上,強迫使得所有的資料都在同一個平面上,降至二維的特徵向量。

這樣的處理過程可以被用於把任何維度的資料降到任何想要的維度,例如將1000維的特徵降至100維。

2、目標II :視覺化

降維的第二個作用:資料視覺化

在許多及其學習問題中,如果我們能將資料視覺化,我們便能尋找到一個更好的解決方案,降維可以幫助我們。

假使我們有有關於許多不同國家的資料,每一個特徵向量都有50個特徵(如GDP,人均GDP,平均壽命等)。如果要將這個50維的資料視覺化是不可能的。

使用降維的方法將其降至2維,我們便可以將其可視化了。

視覺化

這樣做的問題在於,降維的演算法只負責減少維數,新產生的特徵的意義就必須由我們自己去發現

 

3、主成分分析問題規劃1

主成分分析(PCA)是最常見的降維演算法。

PCA中,我們要做的是找到一個方向向量,當我們把所有的資料都投射到該向量上時,我們希望投射平均均方誤差能儘可能地小。方向向量是一個經過原點的向量,而投射誤差是從特徵向量向該方向向量作垂線的長度。

多維也是類似

注意PCA與線性迴歸是兩種不同的演算法。PCA最小化的是投射誤差,而線性迴歸嘗試的是最小化預測誤差。線性迴歸的目的是預測結果,而主成分分析不作任何預測。

PCA是每個特徵量同等對待

PCA將 n 個特徵降維到 k 個,可以用來進行資料壓縮,如果100維的向量最後可以用10維來表示,那麼壓縮率為90%。同樣影象處理領域的KL變換使用PCA做影象壓縮。但PCA 要保證降維後,還要保證資料的特性損失最小。

PCA技術的一大好處是對資料進行降維的處理。我們可以對新求出的“主元”向量的重要性進行排序,根據需要取前面最重要的部分,將後面的維數省去,可以達到降維從而簡化模型或是對資料進行壓縮的效果。同時最大程度的保持了原有資料的資訊。

PCA技術的一個很大的優點是,它是完全無引數限制的。在PCA的計算過程中完全不需要人為的設定引數或是根據任何經驗模型對計算進行干預,最後的結果只與資料相關,與使用者是獨立的。

但是,這一點同時也可以看作是缺點。如果使用者對觀測物件有一定的先驗知識,掌握了資料的一些特徵,卻無法通過引數化等方法對處理過程進行干預,可能會得不到預期的效果,效率也不高。

 

4、主成分分析問題規劃2

PCA 從 n 維減少到 k 維:

第一步是均值歸一化。我們需要計算出所有特徵的均值,然後令 xj = xj - μj 。如果特徵是在不同的數量級上,我們還需要將其除以標準差 σ²。

第二步是計算協方差矩陣Σ

第三步是計算協方差矩陣 Σ 的特徵向量:

在 Octave 裡我們可以利用奇異值分解singular value decomposition)來求解

[U, S, V]= svd(sigma)

對於一個 n×n 維度的矩陣,上式中的返回值 U 是一個具有與資料之間最小投射誤差的方向向量構成的矩陣。如果我們希望將資料從 n 維降至 k 維,我們只需要從 U 中選取前 k 個向量,獲得一個 n×k 維度的矩陣,我們用U_reduce表示,然後通過如下計算獲得要求的新特徵向量zi

其中 x 是 n×1維的,因此結果為 k×1 維度。注,我們不對方差特徵進行處理。

總結:

5、主成分數量選擇

主要成分分析是減少投射的平均均方誤差:

我們希望在平均均方誤差與訓練集方差的比例儘可能小的情況下選擇盡可能小的 k 值。

如果我們希望這個比例小於1%,就意味著原本資料的偏差有99%都保留下來了,如果我們選擇保留95%的偏差,便能非常顯著地降低模型中特徵的維度了。

我們可以先令 k=1 ,然後進行主要成分分析,獲得 U_{reduce} 和 z ,然後計算比例是否小於1%。如果不是的話再令 k=2 ,如此類推,直到找到可以使得比例小於1%的最小 k  值(原因是各個特徵之間通常情況存在某種相關性)。

還有一些更好的方式來選擇$k$,當我們在Octave中呼叫“svd”函式的時候,我們獲得三個引數:

[U, S, V] = svd(sigma)

其中的 返回值 S 是一個 n×n 的矩陣,只有對角線上有值,而其它單元都是0,我們可以使用這個矩陣來計算平均均方誤差與訓練集方差的比例

6、壓縮重現

之前談論PCA作為壓縮演算法。在那裡你可能需要把1000維的資料壓縮100維特徵,或具有三維資料壓縮到一二維表示。所以,如果這是一個壓縮演算法,應該能回到這個壓縮表示,回到你原有的高維資料的一種近似

所以,給定的 zi,怎麼回到你原來的表示 xi 呢?

這個過程稱為原始資料的重構

7、應用PCA的建議

假使我們正在針對一張 100×100畫素的圖片進行某個計算機視覺的機器學習,即總共有10000 個特徵。

①第一步是運用主要成分分析將資料壓縮至1000個特徵

②然後對訓練集執行學習演算法

③在預測時,採用之前學習而來的 U_{reduce} 將輸入的特徵 x 轉換成特徵向量 z ,然後再進行預測

注:如果我們有交叉驗證集合測試集,也採用對訓練集學習而來的 U_{reduce} 。

錯誤的主要成分分析情況:

一個常見錯誤使用PCA的情況是,將其用於減少過擬合(減少了特徵的數量)。這樣做非常不好,不如嘗試正則化處理。原因在於主要成分分析只是近似地丟棄掉一些特徵,它並不考慮任何與結果變數y有關的資訊,因此可能會丟失非常重要的特徵。然而當我們進行正則化處理時,會考慮到結果變數,不會丟掉重要的資料。

另一個常見的錯誤是預設地將PCA作為學習過程中的一部分,這雖然很多時候有效果,最好還是從所有原始特徵開始,只在有必要的時候(演算法執行太慢或者佔用太多記憶體)才考慮採用主要成分分析。