机器学习笔记(十)降维和度量学习
10.降維和度量學習
10.1k近鄰學習
k近鄰(k-NearestNeighbor,簡稱kNN)學習是一種常用的監督學習方法,其原理是:給定測試樣本,基于某種距離度量找出訓練集中與其最靠近的k個訓練樣本,然后基于這k個鄰居的信息來進行預測。在分類任務中,使用投票法,選擇k個樣本中出現最多的類別標記作為預測結果;在回歸任務中,使用平均法,將這k個樣本的實值輸出標記的平均值作為預測結果。自然,也可基于距離遠近進行加權平均或加權投片,距離越近的樣本權重越大。
k近鄰學習方法,沒有顯示的訓練過程,是懶惰學習(lazy learning),在訓練階段僅把樣本保存起來,訓練時間開銷為零,待收到測試樣本后在進行處理;相對應急切學習(eager learning)而言,就是在訓練階段就對樣本進行學習處理的方法。
k近鄰分類器中,k為不同值時,分類結果也就不同;同時,若采用不同的距離計算方式,則找出的近鄰也有顯著差別,導致分類結果也顯著不同。假設距離計算是恰當的,就是不考慮距離導致的差異性,而就從k這個參數的差異就最近鄰分類器在二分類問題上的性能進行分析。
 
?
10.2低維嵌入
k近鄰學習方法基于一個重要的假設:任意測試樣本x附近任意小的 距離范圍內總能找到一個訓練樣本,即訓練樣本的采樣密度足夠大,或稱為密采樣(dense sample)。不過這在現實任務中一般很難滿足,假設 ,在單個屬性情況下,僅需1000個樣本點平均分布在歸一化后的屬性取值范圍內[0,1],即可使得任務測試樣本在其附近0.001距離范圍內總能找到一個訓練樣本,此時最近鄰分類器的錯誤率不超過貝葉斯最優分類器的錯誤率的兩倍;但若在多個屬性情況下,如假定屬性維數是20,按照密采樣條件要求,至少需要 (〖10〗^3 )^20=〖10〗^60個樣本。現實應用中屬性維數眾多,要滿足密采樣條件,所需的樣本數目將是天文數字。而且還要考慮距離度量計算,高維空間對距離計算來說不是簡單的開銷,當維數很高時,連計算內積都不容易。
小貼士:宇宙間基本粒子的總數約為〖10〗^80 ,一粒灰塵中含有幾十億個基本粒子。宇宙之宏大,數學之簡單,令人瞠目結舌。
上文的分析暴露一個很嚴重的問題,就是高維情形下,樣本數的采樣以及距離計算問題。在高維情形下出現的數據樣本稀疏、距離計算困難等問題,是所有機器學習方法共同面臨的嚴重障礙,被稱為維數災難(curse of dimensionality)。
緩解維數災難的兩個途徑:一是特征選擇;二是本文要重點介紹的降維(dimension reduction)。思路上,這兩種途徑都是減少維數,不過一個是在事前,一個是在事中。降維,也稱維數約簡,通過某種數學變換將原始高維屬性空間轉變為一個低維子空間(subspace),在子空間中,樣本密度可以大幅提高,距離計算也相對容易。事實上,觀測或收集到的數據樣本雖然是高維的,但與學習任務相關的或許只是某個低維分布,這也是特征選擇可以事前根據業務來定義的。
那么問題自然是?為什么可以降維?降維后的是否影響樣本距離呢?降維后要求樣本空間中樣本之間的距離在低維空間中得以保持,多維縮放(multiple dimensional scaling,MDS)是一種經典的降維方法,證明如下。
 
 
維屬性向量。若wi與wj(i≠j)正交,則新坐標系是一個正交坐標系,此時W為正交變換。可見,新空間中的屬性是原空間中屬性的線性組合。
對降維效果的評估,通常是比較降維前后學習器的性能,若性能有所提高,則認為降維起到了作用。若將維數降至二維或三維,則可通過可視化技術來直觀地判斷降維效果。
基于線性變換來進行降維的方法稱為線性降維方法,符合Z=WTX形式,不同之處是對低維空間的性質有不同要求,相當于對W施加了不同的約束。若要求低維子空間對樣本具有最大可分性,則將得到一種極為常用的線性降維方法,見下節。
10.3主成分分析
主成分分析(PrincipalComponent Analysis,PCA)是最常用的一種降維方法。對于正交屬性空間中的樣本點,如何用一個超平面(直線的高維推廣)對所有樣本進行恰當的表達?若存在這樣的超平面,應具有如下兩點性質:
1)最近重構性,樣本點到這個超平面的距離都足夠近;
2)最大可分性:樣本點在這個超平面上的投影能盡可能分開。
基于最近重構性和最大可分性,能分別得到主成分分析的兩種等價推導。
 
 
PCA僅需保留W與樣本的均值向量即可通過簡單的向量減法和矩陣-向量乘法將新樣本投影至低維空間中。顯然,低維空間與原始高維空間必有不同,因為對應于最小的d-d*個特征值的特征向量被舍棄了,這是降維導致的后果。但舍棄這部分信息卻又是必要的,一方面是舍棄后可使樣本的采樣密度增大,這是降維的初衷;另一方面,當數據受到噪聲影響時,最小特征值所對應的特征向量往往與噪聲有關,一定程度上舍棄后可以起到去噪效果。
10.4核化線性降維
線性降維方法假設從高維空間到低維空間的函數映射是線性的,不過,在現實任務中可能需要非線性映射才能找到恰當的低維嵌入。這一節主要就是說非線性降維,以為保持本真(intrinsic)低維空間。非線性降維方法的一種常用方法,是基于核技巧對線性降維方法進行核化(kernelized)。下文說明核主成分分析(Kernelized PCA,KPCA)。
 
 
?
10.5流形學習
流形學習(manifoldlearning)是一類借鑒了拓撲流形概念的降維方法。流形是在局部與歐式空間同胚的空間,換言之,它在局部具有歐式空間的性質,能用歐式距離來進行距離計算。若低維流形嵌入到高維空間中,則數據樣本在高維空間的分布雖然看上去非常復雜,但在局部上仍具有歐式空間的性質,如此,可以容易地在局部建立降維映射關系,然后再設法將局部映射推廣到全局。當維數被降至二維或三維時,能對數據進行可視化展示。
對此,我的理解是,在一個曲面上,跨越彎曲的兩點,無法用歐式距離,但在曲面的某部分切面是可以用歐式距離來計算。
1)等度量映射
等度量映射(IsometricMapping,Isomap)的基本出發點,是認為低維流形嵌入到高維空間之后,直接在高維空間中計算直線距離具有誤導性,因為高維空間中的直線距離在低維嵌入流形上是不可達的。S曲面上的測地線距離是兩點之間的本真距離,直接在高維空間中計算直線距離是不恰當的,因為跨越了彎曲區域。那么如何計算測地線距離呢?可利用流形在局部上與歐式空間同胚的性質,對每個點基于歐式距離找出其近鄰點,然后就能建立一個近鄰連接圖;圖中近鄰點之間存在連接,而非近鄰點之間不存在連接;于是,兩點之間測地線的距離,就轉變為計算近鄰連接圖上兩點之間的最短路徑問題。
這樣理解,在曲面上的一定平滑區域內基于歐式距離找出近鄰點,構成一個圖,然后求解圖中兩個點的最短距離,這個思想就是用近鄰距離來接近測地線距離。在近鄰接圖上計算兩點間的最短路徑,可采用著名的Dijkstra算法或Floyd算法(http://blog.csdn.net/fjssharpsword/article/details/52953640),得到兩點距離之后,可用MDS方法來獲得樣本點在低維空間中的坐標。算法描述如下:
輸入:樣本集D={x1,x2,…,xm};
????? 近鄰參數k;???????
????? 低維空間數d*;
過程:fori=1,2,…,m do
????????? 確定xi的k近鄰;
????????? xi與k近鄰點之間的距離設置為歐式距離,與其他點的距離設置為無窮大;
????? end for
????? 調用最短路徑算法計算任意兩樣本點之間的距離dist(xi,xj);
????? 將dist(xi,xj)作為MDS算法的輸入;
????? return MDS算法的輸出
輸出:樣本集D在低維空間的投影Z={z1,z2,…,zm}
Isomap得到了訓練樣本在低維空間的坐標,對于新樣本,如何將其映射到低維空間?常用解決方案是,將訓練樣本的高維空間坐標作為輸入、低維空間坐標作為輸出,訓練一個回歸學習器來對新樣本的低維空間坐標進行預測。文中說不是最佳之法,卻也沒有更好的。
對近鄰圖的構建有兩種做法:一種是指定近鄰點個數,如歐式距離最近的k個點為近鄰點,稱為k近鄰圖;另一種是指定距離閾值 ,距離小于閾值的點被認為是近鄰點,稱為 近鄰圖。兩種方法均有不足,若近鄰范圍指定過大,則距離很遠的點可能被誤認為是近鄰,出現短路問題;近鄰范圍指定過小,則圖中有些區域可能與其他區域不存在連接,出現斷路問題。斷路和短路都會給后續的最短路徑計算造成誤導。
2)局部線性嵌入
與Isomap試圖保持近鄰樣本之間的距離不同,局部線性嵌入(Locally Linear Embedding,LLE)試圖保持鄰域內樣本間的線性關系。假定樣本點x i的坐標能通過它的鄰域樣本x j、x k、x l的坐標通過線性組合而重構出來,即:x i=w ijx j+ w ikx k+w ilx l,自然該式在低維空間中需要保持。
 
 
算法中對于不在樣本xi鄰域區域的樣本xj,無論其如何變化都對xi和zi沒有任何影響,這種將變動限制在局部的思想在許多地方都很有用。可以發現算法思想的重要性,如近似、貪心、局部等概念。
10.6度量學習
在機器學習中,對高維數據進行降維的主要目的是找到一個合適的低維空間,在該空間中進行學習能比原始空間性能更好。每個空間對應了在樣本屬性上定義的一個距離度量,而尋找合適的空間,本質上就是尋找一個合適的距離度量。度量學習(metric learning)的基本動機就是去學習一個合適的距離度量。
降維的核心在在于尋找合適空間,而合適空間的定義就是距離度量,所以學習合適的距離度量就是度量學習的目的。要對距離度量進行學習,要有一個便于學習的距離度量表達形式。
 
其中M稱為度量矩陣,度量學習就是對M進行學習。為保持距離非負且對稱,M須是半正定對稱矩陣,即必有正交基P使得M能寫為M=PPT。
至此,已構建了學習的對象是M這個度量矩陣,接下來就是給學習設定一個目標從而求得M。假定是希望提高近鄰分類器的性能,則可將M直接嵌入到近鄰分類器的評價指標中去,通過優化該性能指標相應地求得M,以近鄰成分分析(Neighbourhood Component Analysis,NCA)進行討論。
近鄰分類器判別時通常采用多數投票法,領域中的每個樣本投1票,領域外的樣本投0票。將其替換為概率投票法,對任意樣本xj,它對xi分類結果影響的概率為:
 
本章的核心是降維,涉及到最基礎的PCA及其非線性核化,再而就是流形學習和度量學習,都可起到降維的目標。為什么要降維呢?因為高維無法滿足密采樣以及計算開銷大。
 
 
 
總結
以上是生活随笔為你收集整理的机器学习笔记(十)降维和度量学习的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 【正一专栏】里皮神奇不再,国足梦断伊朗魔
 - 下一篇: 机器学习知识点(十九)矩阵特征值分解基础