降维算法学习
降維的動機
首先,讓我們談論降維是什么。作為一種生動的例子,我們收集的數據集,有許多, 許多特征,我繪制兩個在這里。
假設我們未知兩個的特征 x1:長度:用厘米表示;X2,是用英寸表示同一物體的長度。
所以,這給了我們高度冗余表示,也許不是兩個分開的特征 x1 和 X2,這兩個基本的長 度度量,也許我們想要做的是減少數據到一維,只要有一個數就可以測量這個長度。
有幾個不同的的原 因使你可能想要做降維。一是數據壓縮,后面我們會看了一些視頻后,數據壓縮不僅允許我 們壓縮數據,因而使用較少的計算機內存或磁盤空間,但它也讓我們加快我們的學習算法。
動機二:數據可視化
在許多及其學習問題中,如果我們能將數據可視化,我們便能尋找到一個更好的解決方 案,降維可以幫助我們。
假使我們有有關于許多不同國家的數據,每一個特征向量都有 50 個特征(如,GDP, 人均 GDP,平均壽命等)。如果要將這個 50 維的數據可視化是不可能的。使用降維的方法 將其降至 2 維,我們便可以將其可視化了。
這樣做的問題在于,降維的算法只負責減少維數,新產生的特征的意義就必須由我們自 己去發現了。
主成分分析問題(PCA)
主成分分析(PCA)是最常見的降維算法。
在 PCA 中,我們要做的是找到一個方向向量(Vector direction),當我們把所有的數據 都 投射到該向量上時,我們希望投射平均均方誤差能盡可能地小。方向向量是一個經過原 點的向量,而投射誤差是從特征向量向該方向向量作垂線的長度。
下面給出主成分分析問題的描述:
問題是要將 n 維數據降至 k 維,目標是找到向量 u(1),u(2),...,u(k)使得總的投射誤差最小。
主成分分析與線性回顧的比較:
主成分分析與線性回歸是兩種不同的算法。主成分分析最小化的是投射誤差(Projected Error),而線性回歸嘗試的是最小化預測誤差。線性回歸的目的是預測結果,而主成分分析 不作任何預測。
PCA將n個特征降維到k個,可以用來進行數據壓縮,如果100維的向量最后可以用10維來表示,那么壓縮率為 90%。同樣圖像處理領域的 KL 變換使用 PCA 做圖像壓縮。但 PCA 要保證降維后,還要保證數據的特性損失最小。
PCA 技術的一大好處是對數據進行降維的處理。我們可以對新求出的“主元”向量的重 要性進行排序,根據需要取前面最重要的部分,將后面的維數省去,可以達到降維從而簡化 模型或是對數據進行壓縮的效果。同時最大程度的保持了原有數據的信息。
PCA 技術的一個很大的優點是,它是完全無參數限制的。在 PCA 的計算過程中完全不 需要人為的設定參數或是根據任何經驗模型對計算進行干預,最后的結果只與數據相關,與 用戶是獨立的。
但是,這一點同時也可以看作是缺點。如果用戶對觀測對象有一定的先驗知識,掌握了 數據的一些特征,卻無法通過參數化等方法對處理過程進行干預,可能會得不到預期的效果, 效率也不高。
主成分分析算法
第一步是均值歸一化。數據預處理。
我們需要計算出所有特征的均值,然后令 xj=xj?μj。如果特征是 在不同的數量級上,我們還需要將其除以標準差 σ2。
選擇主成分的數量
主要成分分析是減少投射的平均均方誤差:
訓練集的方差為:1m∑mi=1||x(i)||2
我們希望在平均均方誤差與訓練集方差的比例盡可能小的情況下選擇盡可能小的 K 值。
如果我們希望這個比例小于 1%,就意味著原本數據的偏差有 99%都保留下來了,如果
我們選擇保留 95%的偏差,便能非常顯著地降低模型中特征的維度了。
我們可以先令 K=1,然后進行主要成分分析,獲得 Ureduce 和 z,然后計算比例是否小于 1%。如果不是的話再令 K=2,如此類推,直到找到可以使得比例小于 1%的最小 K 值(原因
是各個特征之間通常情況存在某種相關性)。
還有一些更好的方式來選擇 K,當我們在 Octave 中調用“svd”函數的時候,我們獲得三
個參數:[U, S, V] = svd(sigma)。
重建的壓縮表示
在以前的視頻中,我談論 PCA 作為壓縮算法。在那里你可能需要把 1000 維的數據壓縮 100 維特征,或具有三維數據壓縮到一二維表示。所以,如果這是一個壓縮算法,應該能回 到這個壓縮表示,回到你原有的高維數據的一種近似。
所以,給定的 Z(i),這可能 100 維,怎么回到你原來的表示 x(i),這可能是 1000 維的 數組?
主成分分析法的應用建議
假使我們正在針對一張 100×100 像素的圖片進行某個計算機視覺的機器學習,即總共 有 10000 個特征。
1. 第一步是運用主要成分分析將數據壓縮至 1000 個特征
2. 然后對訓練集運行學習算法
3. 在預測時,采用之前學習而來的 Ureduce 將輸入的特征 x 轉換成特征向量 z,然后再 進行預測
注:如果我們有交叉驗證集合測試集,也采用對訓練集學習而來的 Ureduce。
錯誤的主要成分分析情況:一個常見錯誤使用主要成分分析的情況是,將其用于減少過擬合 (減少了特征的數量)。這樣做非常不好,不如嘗試歸一化處理。原因在于主要成分分析只 是近似地丟棄掉一些特征,它并不考慮任何與結果變量有關的信息,因此可能會丟失非常重 要的特征。然而當我們進行歸一化處理時,會考慮到結果變量,不會丟掉重要的數據。
另一個常見的錯誤是,默認地將主要成分分析作為學習過程中的一部分,這雖然很多時 候有效果,最好還是從所有原始特征開始,只在有必要的時候(算法運行太慢或者占用太多 內存)才考慮采用主要成分分析。
總結
- 上一篇: Verilog HDL语言实现ROM、R
- 下一篇: 李航《统计学习方法》-----支持向量机