傳統的線性降維方法效果不佳。_機器學習西瓜書簡明筆記(11)降維與度量學習...

2750bf5f107f2c068fe8ccb40c3a337a.png

上篇主要介紹了幾種常用的聚類算法,首先從距離度量與性能評估出發,列舉了常見的距離計算公式與聚類評價指標,接著分別討論了K-Means、LVQ、高斯混合聚類、密度聚類以及層次聚類算法。K-Means與LVQ都試圖以類簇中心作為原型指導聚類,其中K-Means通過EM算法不斷迭代直至收斂,LVQ使用真實類標輔助聚類;高斯混合聚類采用高斯分布來描述類簇原型;密度聚類則是將一個核心對象所有密度可達的樣本形成類簇,直到所有核心對象都遍歷完;最后層次聚類是一種自底向上的樹形聚類方法,不斷合并最相近的兩個小類簇。本篇將討論機器學習常用的方法--降維與度量學習。

11、降維與度量學習

樣本的特征數稱為維數(dimensionality),當維數非常大時,也就是現在所說的“維數災難”,具體表現在:在高維情形下,數據樣本將變得十分稀疏,因為此時要滿足訓練樣本為“密采樣”的總體樣本數目是一個觸不可及的天文數字,謂可遠觀而不可褻玩焉...訓練樣本的稀疏使得其代表總體分布的能力大大減弱,從而消減了學習器的泛化能力;同時當維數很高時,計算距離也變得十分復雜,甚至連計算內積都不再容易,這也是為什么支持向量機(SVM)使用核函數**“低維計算,高維表現”**的原因。

緩解維數災難的一個重要途徑就是降維,即通過某種數學變換將原始高維空間轉變到一個低維的空間。在這個子空間中,樣本的密度將大幅提高,同時距離計算也變得容易。這時也許會有疑問,這樣降維之后不是會丟失原始數據的一部分信息嗎?這是因為在很多實際的問題中,雖然訓練數據是高維的,但是與學習任務相關也許僅僅是其中的一個低維子空間,也稱為一個低維嵌入,例如:數據屬性中存在噪聲屬性、相似屬性或冗余屬性等,對高維數據進行降維能在一定程度上達到提煉低維優質屬性或降噪的效果

11.1 K近鄰學習

k近鄰算法簡稱kNN(k-Nearest Neighbor),是一種經典的監督學習方法,同時也實力擔當入選數據挖掘十大算法。其工作機制十分簡單粗暴:給定某個測試樣本,kNN基于某種距離度量在訓練集中找出與其距離最近的k個帶有真實標記的訓練樣本,然后給基于這k個鄰居的真實標記來進行預測,類似于前面集成學習中所講到的基學習器結合策略:分類任務采用投票法,回歸任務則采用平均法。接下來本篇主要就kNN分類進行討論。

2aff19278f4e09a6348ecd19d3e29e50.png

從上圖【來自Wiki】中我們可以看到,圖中有兩種類型的樣本,一類是藍色正方形,另一類是紅色三角形。而那個綠色圓形是我們待分類的樣本。基于kNN算法的思路,我們很容易得到以下結論:

  • 如果K=3,那么離綠色點最近的有2個紅色三角形和1個藍色的正方形,這3個點投票,于是綠色的這個待分類點屬于紅色的三角形。
  • 如果K=5,那么離綠色點最近的有2個紅色三角形和3個藍色的正方形,這5個點投票,于是綠色的這個待分類點屬于藍色的正方形。

可以發現:kNN雖然是一種監督學習方法,但是它卻沒有顯式的訓練過程,而是當有新樣本需要預測時,才來計算出最近的k個鄰居,因此kNN是一種典型的懶惰學習方法,再來回想一下樸素貝葉斯的流程,訓練的過程就是參數估計,因此樸素貝葉斯也可以懶惰式學習,此類技術在訓練階段開銷為零,待收到測試樣本后再進行計算。相應地我們稱那些一有訓練數據立馬開工的算法為“急切學習”,可見前面我們學習的大部分算法都歸屬于急切學習。

很容易看出:kNN算法的核心在于k值的選取以及距離的度量。k值選取太小,模型很容易受到噪聲數據的干擾,例如:極端地取k=1,若待分類樣本正好與一個噪聲數據距離最近,就導致了分類錯誤;若k值太大, 則在更大的鄰域內進行投票,此時模型的預測能力大大減弱,例如:極端取k=訓練樣本數,就相當于模型根本沒有學習,所有測試樣本的預測結果都是一樣的。一般地我們都通過交叉驗證法來選取一個適當的k值

ed35b665978be8c7df694fd559530e25.png

對于距離度量,不同的度量方法得到的k個近鄰不盡相同,從而對最終的投票結果產生了影響,因此選擇一個合適的距離度量方法也十分重要。在上一篇聚類算法中,在度量樣本相似性時介紹了常用的幾種距離計算方法,包括閔可夫斯基距離,曼哈頓距離,VDM等。在實際應用中,kNN的距離度量函數一般根據樣本的特性來選擇合適的距離度量,同時應對數據進行去量綱/歸一化處理來消除大量綱屬性的強權政治影響

11.2 MDS算法

不管是使用核函數升維還是對數據降維,我們都希望原始空間樣本點之間的距離在新空間中基本保持不變,這樣才不會使得原始空間樣本之間的關系及總體分布發生較大的改變。**“多維縮放”(MDS)**正是基于這樣的思想,MDS要求原始空間樣本之間的距離在降維后的低維空間中得以保持

假定m個樣本在原始空間中任意兩兩樣本之間的距離矩陣為D∈R(m*m),我們的目標便是獲得樣本在低維空間中的表示Z∈R(d'*m , d'< d),且任意兩個樣本在低維空間中的歐式距離等于原始空間中的距離,即||zi-zj||=Dist(ij)。因此接下來我們要做的就是根據已有的距離矩陣D來求解出降維后的坐標矩陣Z。

bdc5a1aa0989a4028e680f24e42dab52.png

令降維后的樣本坐標矩陣Z被中心化,中心化是指將每個樣本向量減去整個樣本集的均值向量,故所有樣本向量求和得到一個零向量。這樣易知:矩陣B的每一列以及每一列求和均為0,因為提取公因子后都有一項為所有樣本向量的和向量。

f33787bee79e49f77fbbb3194b3e4ca2.png

根據上面矩陣B的特征,我們很容易得到等式(2)、(3)以及(4):

c9e8a4fd626ba538b5cba946d7b73528.png

這時根據(1)--(4)式我們便可以計算出bij,即bij=(1)-(2)(1/m)-(3)(1/m)+(4)*(1/(m^2)),再逐一地計算每個b(ij),就得到了降維后低維空間中的內積矩陣B(B=Z'*Z),只需對B進行特征值分解便可以得到Z。MDS的算法流程如下圖所示:

af32185f78a7e5b2c5e0abdfeda23963.png

11.3 主成分分析(PCA)

不同于MDS采用距離保持的方法,主成分分析(PCA)直接通過一個線性變換,將原始空間中的樣本投影到新的低維空間中。簡單來理解這一過程便是:PCA采用一組新的基來表示樣本點,其中每一個基向量都是原來基向量的線性組合,通過使用盡可能少的新基向量來表出樣本,從而達到降維的目的。

假設使用d'個新基向量來表示原來樣本,實質上是將樣本投影到一個由d'個基向量確定的一個超平面上(即舍棄了一些維度),要用一個超平面對空間中所有高維樣本進行恰當的表達,最理想的情形是:若這些樣本點都能在超平面上表出且這些表出在超平面上都能夠很好地分散開來。但是一般使用較原空間低一些維度的超平面來做到這兩點十分不容易,因此我們退一步海闊天空,要求這個超平面應具有如下兩個性質:

  • 最近重構性:樣本點到超平面的距離足夠近,即盡可能在超平面附近;
  • 最大可分性:樣本點在超平面上的投影盡可能地分散開來,即投影后的坐標具有區分性。

這里十分神奇的是:最近重構性與最大可分性雖然從不同的出發點來定義優化問題中的目標函數,但最終這兩種特性得到了完全相同的優化問題

797620fdf5f84aedeb8616f604353e31.png

接著使用拉格朗日乘子法求解上面的優化問題,得到:

2b9e6379b7dd333cbe60ef2c8ba44a82.png

因此只需對協方差矩陣進行特征值分解即可求解出W,PCA算法的整個流程如下圖所示:

df509992775f40e9b91db1474849f897.png

11.4 核化線性降維

說起機器學習你中有我/我中有你/水乳相融...在這里能夠得到很好的體現。正如SVM在處理非線性可分時,通過引入核函數將樣本投影到高維特征空間,接著在高維空間再對樣本點使用超平面劃分。這里也是相同的問題:若我們的樣本數據點本身就不是線性分布,那還如何使用一個超平面去近似表出呢?因此也就引入了核函數,即先將樣本映射到高維空間,再在高維空間中使用線性降維的方法。下面主要介紹**核化主成分分析(KPCA)**的思想。

若核函數的形式已知,即我們知道如何將低維的坐標變換為高維坐標,這時我們只需先將數據映射到高維特征空間,再在高維空間中運用PCA即可。但是一般情況下,我們并不知道核函數具體的映射規則,例如:Sigmoid、高斯核等,我們只知道如何計算高維空間中的樣本內積,這時就引出了KPCA的一個重要創新之處:即空間中的任一向量,都可以由該空間中的所有樣本線性表示。證明過程也十分簡單:

2bf74abbfc34605ac03d736eac3070d0.png

這樣我們便可以將高維特征空間中的投影向量wi使用所有高維樣本點線性表出,接著代入PCA的求解問題,得到:

8b116cbbd4493ac14fa063e2aefd7ad7.png

化簡到最后一步,發現結果十分的美妙,只需對核矩陣K進行特征分解,便可以得出投影向量wi對應的系數向量α,因此選取特征值前d'大對應的特征向量便是d'個系數向量。這時對于需要降維的樣本點,只需按照以下步驟便可以求出其降維后的坐標。可以看出:KPCA在計算降維后的坐標表示時,需要與所有樣本點計算核函數值并求和,因此該算法的計算開銷十分大。

f8465e4c4b2745df6307d8fa47dc0003.png

11.5 流形學習

流形學習(manifold learning)是一種借助拓撲流形概念的降維方法流形是指在局部與歐式空間同胚的空間,即在局部與歐式空間具有相同的性質,能用歐氏距離計算樣本之間的距離。這樣即使高維空間的分布十分復雜,但是在局部上依然滿足歐式空間的性質,基于流形學習的降維正是這種**“鄰域保持”的思想。其中等度量映射(Isomap)試圖在降維前后保持鄰域內樣本之間的距離,而局部線性嵌入(LLE)則是保持鄰域內樣本之間的線性關系**,下面將分別對這兩種著名的流行學習方法進行介紹。

11.5.1 等度量映射(Isomap)

等度量映射的基本出發點是:高維空間中的直線距離具有誤導性,因為有時高維空間中的直線距離在低維空間中是不可達的。因此利用流形在局部上與歐式空間同胚的性質,可以使用近鄰距離來逼近測地線距離,即對于一個樣本點,它與近鄰內的樣本點之間是可達的,且距離使用歐式距離計算,這樣整個樣本空間就形成了一張近鄰圖,高維空間中兩個樣本之間的距離就轉為最短路徑問題。可采用著名的Dijkstra算法Floyd算法計算最短距離,得到高維空間中任意兩點之間的距離后便可以使用MDS算法來其計算低維空間中的坐標。

6b20f4f829ea9eb0e456860479baf817.png

從MDS算法的描述中我們可以知道:MDS先求出了低維空間的內積矩陣B,接著使用特征值分解計算出了樣本在低維空間中的坐標,但是并沒有給出通用的投影向量w,因此對于需要降維的新樣本無從下手,書中給出的權宜之計是利用已知高/低維坐標的樣本作為訓練集學習出一個“投影器”,便可以用高維坐標預測出低維坐標。Isomap算法流程如下圖:

9b5190eed87cf4deb70e04a774fae659.png

對于近鄰圖的構建,常用的有兩種方法:一種是指定近鄰點個數,像kNN一樣選取k個最近的鄰居;另一種是指定鄰域半徑,距離小于該閾值的被認為是它的近鄰點。但兩種方法均會出現下面的問題:

鄰域范圍指定過大,則會造成“短路問題”,即本身距離很遠卻成了近鄰,將距離近的那些樣本扼殺在搖籃。 若鄰域范圍指定過小,則會造成“斷路問題”,即有些樣本點無法可達了,整個世界村被劃分為互不可達的小部落。

11.5.2 局部線性嵌入(LLE)

不同于Isomap算法去保持鄰域距離,LLE算法試圖去保持鄰域內的線性關系,假定樣本xi的坐標可以通過它的鄰域樣本線性表出:

b250ee8b14d7da671aa53498bee518d8.png
e9b02babe7bb18981b4d99b6cfb804c1.png

LLE算法分為兩步走,首先第一步根據近鄰關系計算出所有樣本的鄰域重構系數w

5243a2258aade11be650f79a8cf3a347.png

接著根據鄰域重構系數不變,去求解低維坐標

acb2add65f0008389022054c7b5ddd89.png

這樣利用矩陣M,優化問題可以重寫為:

e4fe1c510a6a49409aeb62ad6636f7d1.png

M特征值分解后最小的d'個特征值對應的特征向量組成Z,LLE算法的具體流程如下圖所示:

fe17e9cc65a0416bc02c372dcdfdcf2e.png

11.6 度量學習

本篇一開始就提到維數災難,即在高維空間進行機器學習任務遇到樣本稀疏、距離難計算等諸多的問題,因此前面討論的降維方法都試圖將原空間投影到一個合適的低維空間中,接著在低維空間進行學習任務從而產生較好的性能。事實上,不管高維空間還是低維空間都潛在對應著一個距離度量,那可不可以直接學習出一個距離度量來等效降維呢?例如:咱們就按照降維后的方式來進行距離的計算,這便是度量學習的初衷

首先要學習出距離度量必須先定義一個合適的距離度量形式。對兩個樣本xi與xj,它們之間的平方歐式距離為:

effecaeb22ea3af2cab212ed98fedc50.png

若各個屬性重要程度不一樣即都有一個權重,則得到加權的平方歐式距離:

80ca5dd13a07e5f764dfe4d5f1456207.png

此時各個屬性之間都是相互獨立無關的,但現實中往往會存在屬性之間有關聯的情形,例如:身高和體重,一般人越高,體重也會重一些,他們之間存在較大的相關性。這樣計算距離就不能分屬性單獨計算,于是就引入經典的馬氏距離(Mahalanobis distance):

19b25e20769408eece937e604c0b0601.png

標準的馬氏距離中M是協方差矩陣的逆,馬氏距離是一種考慮屬性之間相關性且尺度無關(即無須去量綱)的距離度量

61bef516f30d9401d3c1e7467cfcac6f.png

矩陣M也稱為“度量矩陣”,為保證距離度量的非負性與對稱性,M必須為(半)正定對稱矩陣,這樣就為度量學習定義好了距離度量的形式,換句話說:度量學習便是對度量矩陣進行學習。現在來回想一下前面我們接觸的機器學習不難發現:機器學習算法幾乎都是在優化目標函數,從而求解目標函數中的參數。同樣對于度量學習,也需要設置一個優化目標,書中簡要介紹了錯誤率和相似性兩種優化目標,此處限于篇幅不進行展開。

在此,降維和度量學習就介紹完畢。降維是將原高維空間嵌入到一個合適的低維子空間中,接著在低維空間中進行學習任務;度量學習則是試圖去學習出一個距離度量來等效降維的效果,兩者都是為了解決維數災難帶來的諸多問題。也許大家最后心存疑惑,那 KNN 呢?為什么一開頭就說了KNN算法,但是好像和后面沒有半毛錢關系?正是因為在降維算法中,低維子空間的維數d'通常都由人為指定,因此我們需要使用一些低開銷的學習器來選取合適的d',KNN這家伙懶到家了根本無心學習,在訓練階段開銷為零,測試階段也只是遍歷計算了距離,因此拿kNN來進行交叉驗證就十分有優勢了~同時降維后樣本密度增大同時距離計算變易,更為kNN來展示它獨特的十八般手藝提供了用武之地。

相關人工智能與異構計算的知識分享,歡迎關注我的公眾號【AI異構】

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271431.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271431.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271431.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機系統基礎:設備管理知識筆記

1、設備管理介紹 設備管理主要包括設備分配、緩沖區管理、實際物理I/O設備操作、通過管理提高設備利用率和方便用戶使用的目的。 設備屬于計算機系統和外界交互的工具&#xff0c;不要負責計算機和外部的輸入/輸出工作&#xff0c;通常稱為外設。 2、設備分類 2.1 按數據組織分…

灌籃高手微信登錄是什么服務器,灌籃高手微信登錄版本

這款《灌籃高手》手游游戲是由同名的火爆動漫改寫而成的&#xff0c;里邊的游戲角色都是有極致的復原和保存&#xff0c;足球運動員特點都是有一定的展現。也有經典的動漫故事情節和每個高等院校足球隊的復原。現階段為大伙兒出示的是灌籃高手微信登錄版本&#xff0c;能夠和小…

寫代碼時注意的幾點

一.規范性 書寫清晰布局清晰命名合理命名盡量使用有意義的單詞; 變量常用i,j,k命名&#xff1b; 函數常用f,h,g命名。 二.完整性 完成基本功能考慮邊界條件 做好錯誤處理對應的考慮好三個測試 功能性測試 邊界測試 容錯測試 三.魯棒性 采取防御式編程 處理無效的輸入 轉載于:…

華為發布岳云鵬手機_剛剛,華為發布鴻蒙2.0!手機可用!

不凡的2020年激動人心的時刻終于到來今天下午3時華為開發者大會2020在正式開幕鴻蒙2.0發布&#xff01;本次大會包含主題演講、技術論壇、松湖對話、Codelabs、Teach.Hour、互動體驗等系列環節&#xff0c;大會將持續3天&#xff0c;眾多活動也將于線上同步直播。技術論壇環節在…

Mac下安裝jdk8

直接點擊dmg文件 安裝成功 在終端輸入 Java -vesion 提供百度云鏈接方便大家下載 鏈接: https://pan.baidu.com/s/1n2SY-61KFb6-c1UcshZt1Q 鏈接: https://pan.baidu.com/s/1n2SY-61KFb6-c1UcshZt1Q 密碼: g0mj

硬件基礎:嵌入式物聯網系統軟硬件基礎知識大全

本文主要介紹嵌入式系統的基礎知識&#xff0c;涉及嵌入式軟件和硬件的方方面面&#xff0c;希望對各位有幫助。嵌入式系統基礎1、嵌入式系統的定義&#xff08;1&#xff09;定義&#xff1a;以應用為中心&#xff0c;以計算機技術為基礎&#xff0c;軟硬件可裁剪&#xff0c;…

ctrl z撤銷后如何恢復_回收站清空后數據如何恢復?

回收站清空后數據如何恢復&#xff1f;怎么恢復回收站誤刪除文件&#xff1f;很多人為了電腦的更好運行以及其它的原因&#xff0c;都會定期清理一下桌面的回收站里的文件&#xff0c;有時候會一鍵清空&#xff0c;可能是想全部刪除又或者是想特定刪除一些而不小心全清理了&…

云上城之個服務器維護時間,云上城之歌寒冬邊界開服時間表_云上城之歌新區開服預告_第一手游網手游開服表...

今日開服15:00三十八區蒼炎之門已經開服2021-08-1010:00三十八區巨石林野已經開服2021-08-0915:00三十八區熒光要塞已經開服10:00三十八區雷神圣所已經開服2021-08-0710:00三十八區萬華天街已經開服2021-08-0615:00三十八區不朽要塞已經開服2021-08-0515:00三十八區圣靈古域已經…

java中成員變量和局部變量的區別

成員變量和局部變量的區別 (1)在類中的位置不同 成員變量&#xff1a;類中方法外 局部變量&#xff1a;在方法或者代碼塊中&#xff0c;或者方法的聲明上&#xff08;即在參數列表中&#xff09; (2)在內存中的位置不同 成員變量&#xff1a;在…

jh鋰電保護電路_鋰電池過充電、過放電、過流及短路保護電路原理及電路圖

下圖為一個典型的鋰離子電池保護電路原理圖。該保護回路由兩個MOSFET(V1、V2)和一個控制IC(N1)外加一些阻容元件構成。控制IC負責監測 電池電壓與回路電流&#xff0c;并控制兩個MOSFET的柵極&#xff0c;MOSFET在電路中起開關作用&#xff0c;分別控制著充電回路與放電回路的導…

一個串口接2個設備_重慶市有2個大觀鎮,一個鄉村旅游發達,一個特產柚子

同名的鄉鎮是很常見的現象&#xff0c;就連一個市里就有很多同名的鄉鎮&#xff0c;在之前的文章里說過&#xff0c;重慶市有2個臨江鎮、2個義和鎮等。今天繼續看看&#xff0c;重慶市內兩個同名鄉鎮——大觀鎮&#xff0c;一個屬于南川區&#xff0c;一個屬于梁平區&#xff0…

泛型入門

java集合有個缺點——將一個對象放進集合之后&#xff0c;該對象的編譯類型就會變成Object類型&#xff08;其運行時類型不變&#xff09;編譯時不檢查對象的類型。 泛型概念&#xff1a;java的參數化類型&#xff0c;即在創建集合時指定集合元素的類型。 如&#xff0c;List&l…

計算機系統基礎:設備管理采用的相關技術知識筆記

1、通道技術 設備管理的通道技術是為了數據傳輸可以獨立于CPU&#xff0c;讓CPU從繁瑣的I/O工作中解脫出來。設置通道后&#xff0c;CPU、只需要向通道發I/O指令,通道接收到指令后&#xff0c;從主存中取出本次要執行的通道程序并執行&#xff0c;只有完成了I/O任何后才會向CPU…

vue 滑動置頂功能_VUE 實現滾動監聽 導航欄置頂的方法_蠟燭_前端開發者

非重點的代碼&#xff0c;比如樣式啥的&#xff0c;我就不放上來了&#xff0c;一筆帶過簡略的寫一下1. data ()data () {paddingBottom: 1.5rem, // 給最外層div一個padding-bottom// 因為footer是fixed定位 如果padding-bottom為0 數據列表拉到最下面的時候 會有部分數據被fo…

treelist自動定位行_國內首創!金川集團千米深井雙定位補償搖臺投用

新甘肅客戶端金昌訊(新甘肅甘肅日報記者謝曉玲)近日&#xff0c;金川集團二礦區18行副井提升系統罐籠自動化改造項目順利完成并投入使用。項目研發的雙定位補償搖臺是國內同行業首創&#xff0c;可以實現罐籠在井筒內水平和豎直方向的同步定位&#xff0c;從根本上解決了傳統搖…

css樣式圖片、漸變、相關小知識

一&#xff0c;background-position&#xff1a;&#xff08;圖片定位&#xff09; 三種寫法&#xff1a; 1&#xff09;&#xff1a;按&#xff05;比&#xff0c;左上角最小&#xff08;0&#xff05;&#xff0c;0%&#xff09;&#xff0c;右下角最大&#xff08;100%&…

計算機系統基礎:磁盤調度知識筆記

1、磁盤調度介紹 磁盤可以被多個進程共享的設備&#xff0c;如果有多個進程請求訪問磁盤時&#xff0c;為了保證信息的安全&#xff0c;系統的每一時刻只允許一個進程進入磁盤進行I/O操作&#xff0c;別的進程需要等待。 磁盤需要采用一種適當的算法&#xff0c;使每個進程對磁…

freemarker 去掉最后一個逗號_從零開始做一個SLG游戲(六)游戲系統以及配置表...

本文主要是來梳理下游戲內的基本系統(雖然只是照搬polytopia的&#xff0c;但是還是要總結一下)&#xff0c;并預先做一些配置表&#xff0c;并實現讀取。一、經濟系統1.總述經濟系統可以是整個游戲的核心。在本游戲中只有一種資源&#xff1a;金幣。每個回合都會獲得一定數量的…