關於機器學習中數據降維的相關方法

前言

  在之前一些文章的討論中,通過一些例子我們可以發現(主要是關於決策樹或隨機森林的相關內容)其實並不是樣本的所有屬性可能都是那麼得重要,只要不是同等重要,特別是在分類問題上可能可以去除一些屬性或特徵(一般決策樹需要進行剪枝,其實剪枝的原因就在於此)依然能夠得到較好的結果(儘管在一些場合會損失掉準確性),那麼這個問題的實質其實就是機器學習的降維問題。

  對於數據進行降維的處理,不僅可以使得在計算上可能更爲簡便或簡單,而且可以更爲節省存儲資源,如計算機的硬盤或內存等。數據對象能夠被降維,那麼它的一些可以被去除的特徵就一定不是太重要,或者說某些特徵和另外一些特徵存在一定程度的關聯,而且關聯的程度越深則去除這些特徵所導致的結果就和原來問題之間的差別越小。

   本文所涉及的降維方法其實也是比較主流的幾種,包括主成分分析(Principal ComponentsAnalysis,簡稱PCA)、奇異值分解(Singular Value Decomposition,簡稱SVD)、局部線性嵌入(Locally Linear Embedding,簡稱LLE)以及多維度尺度分析等,還會涉及到關於多分類情況下的降維方法——Fisher方法,最後還會要簡單地討論下關於降維問題的逆問題,主要是字典學習和稀疏表示,在討論這個方法時,還會涉及到SVD方法,只不過是被稱作KSVD而已。

   個人以爲數據的降維方法不能完全歸類於機器學習範疇(因爲機器學習的本質不完全是優化指令,而是從數據中獲取經驗,從而提升輸出效用),但數據降維的好處是在於可以減少運算量。

主成分分析及奇異值分解

  在闡述比較通用的奇異值分解問題之前,本文先討論下關於主成分分析的相關內容。對於主成分分析的定義是(利用數學語言):一個正交化線性變換,把數據變換到一個新的座標系統中,使得這一數據的任何投影的第一大方差在第一個座標(稱爲第一主成分)上,第二大方差在第二個座標(第二主成分)上,依次類推。

  從上述定義所涉及的相關內容上看,主成分分析(有的地方被稱爲主元分析)根本上就是找到一組正交向量把在高維座標系下的點相應地變換到低維座標系上,其變換依據其實就是特徵值及其特徵向量,在變換的過程中會捨棄一些特徵值及其特徵向量,而被捨棄的這些東西是對最終變換所形成的結果沒有特別大的影響(因爲就其表現而言,相關方差較小),所以這種方法才被成爲主成分分析。

  在較爲形式化地闡述這個問題之前,先對一些符號的使用進行約束。本文默認的認爲具有較高維度數據或對象的維度爲p,而具有較低維度的數據或對象的維度是d(網上絕大多數文章使用的分別是mr),而對象的數量(樣本的數量)依舊是N

  對於正交化的向量(也被稱作正交化的基)定義(因爲我們討論的是降維情形,故假設有p個)如下:

51d658735eb735a06df8d56763033ec5.png-wh_

   而我們還引入x0作爲原座標的原點,在後面的推導過程中可以看出這個原點其實就是原樣本的均值。

   對於相關變換,我們希望其儘量不存在差異或者差異越小越好,故有如下目標函數:

68a67b308dbe846af60a7cca31477e3e.png-wh_


   如果上式的結果爲零,就可以認爲降維的任務被完美地完成,但這幾乎是不可能的事情,故只要足夠小就可以了,所以我們在上式的基礎上加入約束,利用拉格朗日乘數法能夠對如下函數計算相關參數的取值(對於所有樣本點):

672e12d153709307322fec20d32fd508.png-wh_

             由公式6可以看出spacer.gif就是相關特徵值,而且由於上式的左半部分是一個半正定矩陣,故其特徵值一定是大於等於0的,所以我們能夠得到一個化簡後的函數:

820f49a71f9274d71d9434e2d45848b6.png-wh_


   至此我們就得到了一個主成分分析在數學上的解釋。需要注意的是,爲了使得公式8最小,則需要將這些特徵值由大至小地進行排列方能獲得正確的結果。

 

   以上的推導過程可能與網上的相關文章介紹多少有些區別,因爲大多數文章的描述主要是針對樣本的協方差進行的,這個其實和本文沒有太大的不同,只不過角度上略有差異。而且本文所使用的方法和SVD算法幾乎是一樣的,所以以下只簡單的再描述下主流方法的相關內容。


   關於主成分分析,一般的過程如下:

  1. 對於樣本矩陣X,求解其協方差矩陣Σ

  2. 對於協方差矩陣Σ,求解其特徵值spacer.gif(共p個);

  3. 對於這些特徵值計算特徵向量ξi,根據降維的需要及其大小排列組成變換矩陣Q(保留d個特徵值最大的特徵向量);

  4. 利用變換陣Q,計算降維的樣本矩陣Y中每一個樣本spacer.gifspacer.gif


   從上面的求解步驟可以看出,這個和之前的推導沒有區別,只不過之前的方法可能在原理上更爲清晰和明確,因爲它體現了在機器學習理論中對於一致性(錯誤越少越好)和緊緻性(類內差異越小越好)的要求,而其它的一般性的對於主成分分析法並沒有在原理上講述的那麼清楚(一般沒有交代爲什麼需要在p個協方差中獲取值最大的d個方差)。

順便說一下,其實很多工具都提供了計算相關工具,比如說計算矩陣的特徵值、特徵向量,如在R中,就可以使用函數eigen來計算。


在討論完主成分分析後,我們在來看下關於奇異值分解問題(其實這個問題在討論完主成分分析後再進行論述的意義不是太大,或者我們可以先討論SVD再講述PCA,但考慮到完整性,這裏還是再次簡要的闡述其方法)。

    奇異值分解就是基於如下的一個公式:

32564417bacb21714f8f7f18c9700fd2.png-wh_


   爲了與前面保持一致,其中X是樣本矩陣,其維度是p,共有N列(樣本的數量),而U則是一個p*p的正交方陣,其向量被稱作左奇異向量;而Σ是一個p*N的矩陣,其對角線上爲奇異值(這些奇異值應被從大到小進行排列),其它元素爲0;最後Y則是以一個N*N的正交方陣,其向量被稱作右奇異向量。

  那麼有了上述公式,改如何降維?我們可以將公式9改成一個對近似公式的求解:

43db999f967a3b4b59555d670f1d2968.png-wh_

   

數據降維的結構性保證

   在對數據降維後,如何保證降維後的在結構上一些不變特性,從而達到數據不至於被過多地扭曲或變形,本節主要就是從局部和全局角度來討論這個問題。

局部線性嵌入

   局部線性嵌入的目標就是在數據降維後仍然保留原始的高維數據的拓撲結構,這種拓撲結構主要表現在數據點局部的鄰接關係上。

             而描述這種鄰接關係,主要是利用數據點局部的鄰接點之間的線性組合,即我們希望最小化如下的目標函數:

d2c8fcfdd66296beb756e5ce6469bc3d.png-wh_

   其中N(k)是樣本點spacer.gif的鄰接樣本點,而spacer.gif是連接權值,它們的和等於1那麼對於公式11的在約束下的求解就能夠得到相關參數的解。

   以下令spacer.gifspacer.gifK個近鄰所構成的矩陣,而令spacer.gifspacer.gif爲向量係數,則公式11可以改寫爲如下形式:

9b516b03785316aad0b1da68acb3d567.png-wh_

f52a92afe4c3d7983a59a9d41cad557e.png-wh_


    那麼利用上述被求出的相關連接參數,當數據點嵌入到低維空間時,有如下目標函數:

777db890380b23674670754b5a88f706.png-wh_

   注意公式18所求取的目標函數是一個Frobenius範數,這個範數又被稱作F範數,它和矩陣的1範數、2範數、p範數以及無窮範數均不相同,讀者可以參看相關文檔。

    通過對上式求解,我們可以得到相關結論爲:

3be07594b60621193604fed6d17f2cf8.png-wh_

   通過推導,可以看出如若想公式19的值儘量得小,則應取矩陣M的最小d個特徵值,但其最小值一般非常接近於0,則應取2d+1個特徵值及其對應的特徵向量。

  不過局部線性嵌入的應用存在一定侷限性,主要是將其用於開放式的流型處理,而且對於k緊鄰的選擇需要注意,不能過小也不宜過大(一般認爲至少不能超過降維後的維度大小)。目前有多種對於這個算法的改進,主要在於對於鄰接點的選擇,最好是在以嵌入點爲中心的超球體的周邊均勻地尋找鄰居樣本(可利用餘弦夾角),則這樣的效果更好。

多維度尺度分析及等距映射

  上節的局部線性嵌入着重從局部出發,保證降維後的數據仍然保留原始數據的局部鄰接特徵,而多維度尺度分析及等距映射乃是從全局角度出發對數據進行降維,也就是說降維後的數據仍能保持在高維座標下的任意兩點間距離關係。

           現令數據在高維下的距離爲DX,而數據在低維下的數據爲DY,那我們的目標函數就是:

7b1a76ada9978d414020c3b6e43a5783.png-wh_


   也就是說降維之前的距離和降維之後的距離差異儘量得小,上式也可以寫成如下形式:

eeaea69212dbb7e7356eaab5d8000b97.png-wh_

   其中,spacer.gifspacer.gif分別是降維之前點kl之間的距離以及降維之後兩點之間的距離。這兩點之間的距離可以採用歐式距離。

 

   現定義矩陣T,它是N*N方陣,且矩陣的元素:

b09a1dfc9c894a54fe6206bca0603dc0.png-wh_

   是樣本均值向量然後展開上式,最終可以得到如下公式:

c787fa1b23c553e719731f0620828b42.png-wh_


    求解上述問題只要對矩陣T進行特徵分解即可,如把數據降到d維,則只需提取前d個特徵向量。

多分類數據降維

   不知讀者是否注意,本文之前的相關降維討論,除了對於特徵及特徵向量求取,其實也大都會涉及到均值的計算或使用,而之前我們只是默認這些待降維的樣本都是來自同一類別,而本節會討論下多分類的降維問題。

   在推導多分類降維公式前,根據由簡到難的研究思路,首先研究下二分類的數據降維。

以下就是根據Fisher線性判別式進行討論的。

   設若樣本集合爲spacer.gif,其中spacer.gif是樣本的類標,在二分類的情況下就是10,每個樣本表示爲p維特徵向量。Fisher線性判別分析將N個樣本投影到低維空間而得到spacer.gif

   而分類線性判別分析希望找到一個由d維向量w定義的投影方向,將樣本x投影到向量w上,從而樣本維度由p維降到1維,而在降維後樣本的可分性更好。

   假設v1v2分別是樣本X兩個分類的均值,則我們希望這兩個類中的樣本和其均值具有最小的差異。以下給出兩個類的類內差異:

c4d3a0179fdcde2c92605460182be3a4.png-wh_


   對於公式27而言,在二分類情況下i的取值範圍只是12

   根據上式定義類內散佈差異矩陣:

04931bba417e9e3639e1dc5055275ce4.png-wh_


    通過對於公式28的求解即可得v1v2分別就是類1和類2的樣本均值。

   既然有了類內差異評估公式,很自然的也有類間差異評估,而我們要求這個類間差異越大越好:

3d59a74199d9ead00e365515654712b3.png-wh_


   在分析了二分類線性判別之後,關於多分類線性判別相關內容就呼之欲出了,其公式與而分類在形式上幾乎沒有太大差別,只不過在分析類間差異時使用了樣本總體均值v

  對於c個類的類內差異定義如下:

8f20642fc96d81608a29f44f61f4fcea.png-wh_


   在公式33中,v就是樣本總體的均值。

             故通過上述推導,可知只要最大化如下函數即可:

223c19c1bf0828c754e7d283367ac135.png-wh_


字典學習和稀疏表示

   有時我們需要考慮對於稠密的樣本點時,如何在更高維獲取其相對稀疏的表示(這樣做的目的是什麼?),而進行這類變換的矩陣中的向量就被稱作字典。更爲形式化的表達就是,對於在維度爲d的空間中的若干樣本組成的矩陣Y,需要尋找字典矩陣W=[w1,w2,...,wp]進行相應地轉換(字典中的向量是d維的,共p個向量),轉換後的相對稀疏的矩陣輸出爲X,這個輸出矩陣的維度爲p,而且p > d,整個過程被稱作字典學習。

               綜上所述,對於結果,我們希望最小化如下目標函數:

3be316a2bbd170f2bc9a126b69da6386.png-wh_

    但是能滿足上式的座標系過多,我們應該選擇一個最爲簡單的形式,即在高維空間中向量所含0的個數越多越好(當然不一定是全0,否則沒有任何意義;這裏就看出對於稀疏的要求),而這個要求恰是矩陣的0範數,但由於0範數沒有相關的解析式,也無法直接求解,故我們轉而求其次使用1範數,所以公式35被寫作如下形式:

4a709f390f064b5ef211835d5e56874f.png-wh_


   在公式36中,可以看出需要最小的參數實際上包含了字典和Y在高維空間稀疏的表示形式X。而如何求解此公式中的spacer.gif?因爲其中包含了1範數,故公式不可導,只能使用和LASSO迴歸類似的方式求解(即FIST方法)。

              對於如何求解公式36中的字典?這裏需要使用所謂的KSVD方法,如下:

c2cf288247f7f8680136d68c54251dd1.png-wh_


   spacer.gifX的第i行(不是i列,否則就是一個樣本了),而spacer.gif是字典向量。那麼,該如何理解上式?實際上就是評估待求字典的第i列對於輸出的相關影響。

  KSVD的運作過程如下:

  1. 將矩陣Ei進行SVD分解;

  2. 使用分解後的第一個左奇異向量(列向量)更新字典spacer.gif

  3. 使用分解後的第一個右奇異向量(列向量)乘以第一個特徵值更新spacer.gif

  4. 選取下一個進行分解。

 

   這樣交叉更新spacer.gif和字典,直至整體收斂爲止。

 

   注意在更新字典和spacer.gif時,應只更新對應的非0元素(故其實對於spacer.gif也應進行收縮,即刪去元素爲0的部分,重新組織成一個新的矩陣),否則無法保證矩陣X的稀疏性質。對於這個算法而言,筆者的理解就是評估最爲顯著部分對於升維的影響,因爲對於矩陣進行SVD分解後,其第一個特徵值是最大的(相應的,其特徵向量也是最爲顯著或可以說其顯著水平最高)。













 



 

 



 











 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章