降維與度量學習
這是我第一次看這一章節,所以我的理解應該都是比較淺顯的,寫這篇部落格一是寫一下自己學習的感受,好記性不如爛筆頭。二是為了與大家交流,希望大家給我指正。
降維學習的原因
k近鄰學習是一種簡單的學習方法,就是採用一種監督的學習方法,給定測試樣本,基於某種距離找到距離樣本最近的k個訓練樣本。可以採用投票法(選擇樣本中出現最多的類別作為最終的預測結果),或者採用平均法(就是採用樣本中平均值作為預測結果)但是k近鄰有個不好的地方,沒有訓練的過程,整個過程都是一個懶惰的學習過程。
影響k近鄰分類結果的因素主要有倆個:
1是k值的選取不同,取得的結果會有一個顯著的差距
2是採用不同的距離計算方式,找出的“近鄰”也有很大的差距。
得出一個結論:
最近鄰分類器雖然簡單,但是他的泛化錯誤率不超過貝葉斯最優分類器的兩倍。
重點來了,為什麼要降維呢?
因為高維空間會出現資料樣本稀疏,距離計算困難等問題,面臨這維數災難。化解維數災難最好的方法就是降維,就是將原始高維空間轉變為一個低維的空間,這個空間樣本的密度就會增大,距離計算就會變得容易起來。
降維學習的方法
- MDS
通過一個變換矩陣,對於原始的高維空間進行線性變換。因為原始空間的距離都可以在更低維的空間通過歐式距離進行計算。這是演算法過程。
- 主成分分析
存在一個超平面:
1,最近重構性(樣本點到這個超平面的距離都足夠近)
2,最大可分性(樣本點在這個超平面上的投影都儘可能的分開)
例如某個樣本x在低維空間的投影是z,zij是樣本在低維空間的第j維的坐 標,就用z 來重構x,得到X,這時候就是那x和X之間的距離。得到主成分分析的優化目標。為了使得樣本點之間的投影儘可能的分開就得使得投影后樣本之間的方差最大化。
PCA捨棄了部分空間是有必要的因為這樣的話,一方面捨棄這些資訊可以捨得樣本密度變大,方便計算樣本點之間的距離。另一方面,就是最小特徵值對應的特徵向量一般與噪聲有關,捨棄他們可以達到一定的去燥作用。 - 核化線性降維
為什麼進行核化線性降維呢,因為,原來的高維空間的低維結構與變換後的低維結構是不一樣的。這樣就會丟失原本的低維結構,這個時候就會進行核變換
- 流行學習
流行具有一個結構,就是他可以在區域性使用歐式距離計算距離,如果低維空間巢狀到高維就有一個很好的性質,這個低維對映到高維可以仍可以在區域性使用歐式距離進行計算。另一面就是可以進行視覺化。
等度量對映
測地線距離就是指的曲面上兩點之間的本真距離。因為直接在高維空間上計算本真距離是不適當的。這個測地線距離很好的轉換成了計算近鄰接圖的兩點之間的最近距離,可以使用dijkstra’計算,
近鄰圖的構建有兩種方法
1,指定近鄰點的距離
2,指定緊鄰點的距離
區域性線性嵌入
假定樣本xi的座標可以通過它的鄰域樣本線性表出:
- 度量學習
不管低維還是高維空間都有一個距離的問題,怎樣計算這個距離呢,去學習一個合適的距離。
這個距離主要有歐氏距離,馬氏距離
總結
這個後面我借鑑一下一篇部落格說的吧
在此,降維和度量學習就介紹完畢。降維是將原高維空間嵌入到一個合適的低維子空間中,接著在低維空間中進行學習任務;度量學習則是試圖去學習出一個距離度量來等效降維的效果,兩者都是為了解決維數災難帶來的諸多問題。也許大家最後心存疑惑,那kNN呢,為什麼一開頭就說了kNN演算法,但是好像和後面沒有半毛錢關係?正是因為在降維演算法中,低維子空間的維數d’通常都由人為指定,因此我們需要使用一些低開銷的學習器來選取合適的d’,kNN這傢伙懶到家了根本無心學習,在訓練階段開銷為零,測試階段也只是遍歷計算了距離,因此拿kNN來進行交叉驗證就十分有優勢了~同時降維後樣本密度增大同時距離計算變易,更為kNN來展示它獨特的十八般手藝提供了用武之地。
如果你們有什麼疑問,可以參考這篇部落格吧。
周志華《Machine Learning》學習筆記(12)–降維與度量學習 - VAY-長跑 - CSDN部落格 https://blog.csdn.net/u011826404/article/details/72123031
相關文章
- 無監督學習之降維
- 距離度量學習
- 機器學習: Metric Learning (度量學習)機器學習
- 機器學習(五):混合高斯聚類GMM(求聚類標籤)+PCA降維(3維降2維)習題機器學習聚類PCA
- 【機器學習基礎】無監督學習(2)——降維之LLE和TSNE機器學習
- 非度量多維尺度分析
- [譯] 降維技術中常用的幾種降維方法
- 度量學習筆記(一) | Metric Learning for text categorization筆記Go
- (十一)KPCA非線性降維與核函式PCA函式
- 人人都能讀懂的無監督學習:什麼是聚類和降維?聚類
- 【機器學習】李宏毅——線性降維機器學習
- 機器學習降維之主成分分析機器學習
- 機器學習基礎-資料降維機器學習
- 08 特徵工程 - 特徵降維 - LDA特徵工程LDA
- 奇異值分解(SVD)原理與在降維中的應用
- 向量點乘為降維,叉乘為升維點乘
- 《面試補習》-熔斷降級我學會了!面試
- 轉行Linux運維需要學習嗎?學習Linux運維Linux運維
- 物聯網學習教程— 多維陣列與指標陣列指標
- 學習Linux運維有哪些學習方法?Linux運維
- 利用PCA進行資料降維PCA
- JS演算法——陣列降維JS演算法陣列
- 將一個多維陣列徹底的降維陣列
- 多維陣列轉一維陣列(降維的多種方式)陣列
- 聊聊效能度量的作弊經濟學
- 雲原生運維工程師學習路線與資料運維工程師
- 圖解二維完全揹包問題——降維打擊圖解
- 機器學習降維之線性判別分析機器學習
- 簡述多種降維演算法演算法
- apply的理解和陣列降維APP陣列
- 吳恩達機器學習筆記 —— 15 降維吳恩達機器學習筆記
- 人工稚能之sklearn資料降維
- 資料分析中的降維方法初探
- 用scikit-learn進行LDA降維LDA
- 資料預處理–資料降維
- DevOps 與研發效能資深技術專家張樂:研發效能的升維思考與降維執行dev
- 運維學習有什麼好的學習方法嗎?運維
- Linux運維繫統工程師與java基礎學習Linux運維工程師Java