ML——降維與度量學習
KNN學習
k近鄰(KNN)學習是一種常用的監督學習方法,可用于分類與回歸任務中。基本思想是:給定測試樣本,基于某種距離度量找出訓練集中與其最靠近的k個訓練樣本,然后基于這k個“鄰居”的信息進行預測。
通常,在分類任務中使用“投票法”,即選擇k個樣本中出現最多的類別標記作為預測結果;在回歸任務中使用“平均法”,即將k個樣本的實值輸出標記的平均值作為預測結果。還可基于距離遠近加權平均或加權投票。距離越近樣本權重越大。
k近鄰法三要素
距離度量、k值的選擇及分類決策規則是k近鄰法的三個基本要素。距離度量可計算測試實例與每個訓練實例的距離,根據k值選擇k個最近鄰點,最后根據分類決策規則將測試實例分類。
距離度量:特征空間中兩個樣本點的距離可看成是兩個樣本點相似程度的反映。樣本點的
距離定義為:
? ? ? ? ? ? ? ? ? ? ?
當p=1時,稱為曼哈頓距離(Euclidean distance);當p=2時,稱為歐氏距離(Euclidean distance);當p=∞時,它是各個坐標距離的最大值。
k值選擇:k值的選擇會對k近鄰法的結果產生重大影響。一般k值取一個比較小的數值,通常采用交叉驗證法選取最優的k值。
分類決策規則:KNN中的分類決策規則往往是多數表決,即由輸入樣本的k個近鄰的訓練樣本中的多數類,決定輸入樣本的類。
KNN算法流程:
優點:1)理論成熟,思想簡單,既可做回歸也可做分類,且適用于非線性分類;2)訓練時間復雜度低,僅為O(n)(n為特征數);3)與NB相比對數據沒有假設,準確度高,對異常點不敏感等。
缺點:1)當特征數很多時,計算量巨大;2)樣本不平衡時,對稀有類別的預測準確率降低;3)使用懶惰學習,預測時速度要慢于LR之類的算法等。
低維嵌入
樣本的特征數稱為維數,在高維情形下出現的樣本數據稀疏、距離計算困難等問題常會導致“維數災難”。而緩解維數災難的一個重要途徑就是降維(維數約簡),即通過某種數學變換將原始高維屬性空間轉變為一個低維子空間。在這個子空間中,樣本密度大幅提高,同時簡化距離計算,高維空間中的樣本點在低維嵌入子空間中更易學習。
MDS算法
多維縮放(MDS)算法是一種經典的降維方法,它要求原始空間樣本之間的距離在降維后的低維空間中得以保持。
假設m個樣本在原始空間距離矩陣為,其第i行j列元素
為樣本
到
的距離,要獲得樣本在d'維空間的表示Z(d'×m維,d'<=d),且任意兩樣本在d'維空間的歐氏距離等于原始空間中的距離,
。令
,其中B為降維后樣本的內積矩陣,
,有
為便于討論,令降維后的樣本Z被中心化,即。顯有B的行與列之和均為0,即
,易知
由上式可得。逐一計算,就得到降維后低維空間中內積矩陣B,只需對B進行特征值分解就可得到Z。MDS算法流程如下:
主成分分析(PCA)
PCA是最常用的一種線性降維方法,如圖要將數據從二維降到一維,用某一個維度方向代表這兩個維度的數據。圖中列出的兩個向量方向u1和u2,直觀來看u1更好,因為樣本點到它的距離更近,或者說樣本點在這個直線上的投影能盡可能的分開。這也就得到了PCA兩種等價推導:
最近重構性:樣本點到這個超平面的距離都足夠近;
最大可分性:樣本點在超平面上的投影盡可能分散開來。
雖然以上兩種方法從不同的出發點來定義優化問題中的目標函數,但最終它們都得到了相同的優化問題:
使用Lagrange乘子法求解上述優化問題得:
故只需對協方差矩陣進行特征值分解求解出W。PCA算法流程如下:
有時候不指定降維后d'的值,而是指定一個降維到主成分比重閾值t,。若d個特征值為
,則d'可通過下式取得:
優點:1)僅以方差衡量信息,不受數據集以外因素的影響;2)各主成分之間正交,消除原始數據成分間相互影響的因素;3)計算方法簡單,易于實現。
缺點:1)主成分各特征維度含義解釋性差;2)丟棄的方差小的非主成分可能含有樣本差異的重要信息。
核化線性降維
線性降維方法假設從高維空間到低維空間的函數映射是線性的,然而現實任務中可能需要非線性映射才能找到恰當的低維嵌入,核主成分分析(KPCA)就是一種基于核技巧的非線性降維方法。
若核函數形式已知,即知曉如何將低維的坐標變換為高維坐標,此時只需先將數據映射到高維特征空間,再在高維空間中運用PCA即可。但一般情形下并不知道核函數具體映射規則,只知如何計算高維空間中的樣本內積。對此,KPCA的創新之處在于:空間中的任一向量,都可由該空間中的所有樣本線性表示。
假定是由原始特征空間中的樣本點
通過映射產生,即
,高維特征空間中的投影向量
可用所有高維樣本點線性表出,接著代入PCA求解問題:
由上式發現只需對核矩陣K進行特征分解,便可得出投影向量wi對應的系數向量,因此取K最大的d'個特征值對應的特征向量即可。對新樣本x,其降維后的坐標為:
由上式也可以看出,為獲得投影后的坐標,KPCA需對所有樣本求和,其計算開銷較大。
流形學習
設是一個低維流形,
是一個光滑嵌入,其中
。數據集
是隨機生成的,且經過f映射為觀察空間的數據
。流形學習就是在給定觀察樣本集
的條件下重構f和
,以實現維數約簡或者數據可視化。下面介紹幾種代表算法。
等度量映射(Isomap)
Isomap引入測地線距離來表示潛在流形上點與點之間的距離,并在降維過程中保持該距離不變。如圖(a)中的紅色線段表示的就是流形上的測地線距離。Isomap建立在MDS的基礎上,保留的是非線性數據的本質幾何結構,即任意點對之間的測地線距離。
為計算測地線距離,可利用流形在局部上與歐式空間同胚的性質,對每個點基于歐式空間距離找出其近鄰點,在每個數據點和其近鄰點間添加加權邊,得到一個連接圖。距離較遠的數據點間的測地線距離可通過最短距離近似。
在計算近鄰時,若近鄰范圍指定得較大,則距離較遠的點可能被誤認為近鄰,出現“短路”;若近鄰范圍指定的較小,則圖中有些區域可能與其他區域不存在連接,出現“斷路”。都會誤導后面計算最短路徑。
局部線性嵌入(LLE)
與Isomap試圖保持近鄰樣本間的距離不同,LLE試圖保持近鄰內樣本間的線性關系。
如圖,假定樣本點xi的坐標能通過其近鄰樣本線性重構,即,LLE希望該式關系在低維空間中得以保持。
LLE算法分為兩步,step1 根據近鄰關系計算出所有樣本的鄰域重構系數w:
step2 根據鄰域重構系數不變,求解低維坐標:
利用矩陣M,優化問題可重寫為:
對上式進行特征值分解,M最小的d'個特征值對應的特征向量組成的矩陣即為。LLE具體算法流程如下:
度量學習
在ML中,對高維數據進行降維是希望找到一個合適的低維空間,在此空間中進行學習能比原始空間性能更好。尋找合適的空間,實質上就是找一個合適的距離度量,因此衍生了度量學習。
欲對距離度量進行學習,須有便于學習的距離度量表達形式。對d維樣本xi和xj,它們之間的平方歐式距離記做:
其中表示
與
在第k維上的距離。若假定不同屬性重要性不同,可引入屬性權重w得:
其中是一個對角矩陣,
。
此時各個屬性之間都是相互獨立無關的,但現實中往往存在屬性相關的情形,因此將W替換為半正定對稱陣,得到馬氏距離:
標準馬氏距離中M是協方差矩陣的逆,馬氏距離是一種考慮屬性相關且尺度無關(無需去量綱)的距離度量:
? ? ? ? ? ? ? ? ? ? ?
矩陣M也叫“度量矩陣”,度量學習就是對M進行學習,為保證距離度量的非負性與對稱性,M必須為(半)正定對稱陣,即必有正交基P使得。
總結
降維是將高維空間嵌入到一個合適的低維子空間中,接著在低維空間中進行學習任務;
度量學習則是試圖去學習出一個距離度量來等效降維的效果;
兩者都是為了解決維數災難引發的問題。在降維算法中,低維子空間的維數d’通常人為指定,因此需用一些低開銷的學習器選取合適的d’,kNN屬于懶惰學習,在訓練階段開銷為零,測試階段也只是遍歷計算了距離,因此拿kNN來進行交叉驗證就十分有優勢,同時降維后樣本密度增大同時距離計算變易。
周志華《機器學習》
https://blog.csdn.net/u011826404/article/details/72123031
https://www.cnblogs.com/pinard/category/894692.html