分类问题中的“维数灾难” - robotMax
分類問題中的“維數(shù)災(zāi)難” - robotMax
?
在看機(jī)器學(xué)習(xí)的論文時,經(jīng)常會看到有作者提到“curse of dimensionality”,中文譯為“維數(shù)災(zāi)難”,這到底是一個什么樣的“災(zāi)難”?本文將通過一個例子來介紹這令人討厭的“curse of dimensionality”以及它在分類問題中的重要性。
假設(shè)現(xiàn)在有一組照片,每一張照片里有一只貓或者一條狗。我們希望設(shè)計一個分類器可以自動地將照片中的動物辨別開來。為了實現(xiàn)這個目標(biāo),首先需要考慮如何將照片中的動物的特征用數(shù)字的形式表達(dá)出來。貓與狗的最大區(qū)別是什么?有人可能首先想到貓與狗的顏色不一樣,有人則可能想到貓與狗的大小不一樣。假設(shè)從顏色來辨別貓與狗,可以設(shè)計三個特征:紅色的平均值,綠色的平均值和藍(lán)色的平均值,來決定照片中的動物屬于哪一個類:
1 if 0.5 * red + 0.3 * green + 0.2 * blue > 0.6: 2 return cat 3 else: 4 return dog
但是,僅僅通過這三個特征進(jìn)行分類可能無法得到一個令人滿意的結(jié)果。因此,可以再增加一些特征:大小,紋理等。也許增加特征之后,分類的結(jié)果會有所提高。但是,特征是不是越多越好?
圖1 過了某一個值后,分類器的性能隨著維數(shù)的增加不升反降
從圖1可以看到分類器的性能隨著特征個數(shù)的變化不斷增加,過了某一個值后,性能不升反降。這種現(xiàn)象稱為“維數(shù)災(zāi)難”。
繼續(xù)之前的例子。假設(shè)地球上貓和狗的數(shù)量是無限的。由于有限的時間和計算能力,我們僅僅選取了10張照片作為訓(xùn)練樣本。我們的目的是基于這10張照片來訓(xùn)練一個線性分類器,使得這個線性分類器可以對剩余的貓或狗的照片進(jìn)行正確分類。我們從只用一個特征來辨別貓和狗開始:
圖2?
從圖2可以看到,如果僅僅只有一個特征的話,貓和狗幾乎是均勻分布在這條線段上,很難將10張照片線性分類。那么,增加一個特征后的情況會怎么樣:
圖3
?
增加一個特征后,我們發(fā)現(xiàn)仍然無法找到一條直線將貓和狗分開。所以,考慮需要再增加一個特征:
圖3
圖4
此時,我們終于找到了一個平面將貓和狗分開。需要注意的是,只有一個特征時,假設(shè)特征空間是長度為5的線段,則樣本密度是10/5=2。有兩個特征時,特征空間大小是5*5=25,樣本密度是10/25=0.4。有三個特征時,特征空間大小是5*5*5=125,樣本密度是10/125=0.08。如果繼續(xù)增加特征數(shù)量,樣本密度會更加稀疏,也就更容易找到一個超平面將訓(xùn)練樣本分開。因為隨著特征數(shù)量趨向于無限大,樣本密度非常稀疏,訓(xùn)練樣本被分錯的可能性趨向于零。當(dāng)我們將高維空間的分類結(jié)果映射到低維空間時,一個嚴(yán)重的問題出現(xiàn)了:
圖5
從圖5可以看到將三維特征空間映射到二維特征空間后的結(jié)果。盡管在高維特征空間時訓(xùn)練樣本線性可分,但是映射到低維空間后,結(jié)果正好相反。事實上,增加特征數(shù)量使得高維空間線性可分,相當(dāng)于在低維空間內(nèi)訓(xùn)練一個復(fù)雜的非線性分類器。不過,這個非線性分類器太過“聰明”,僅僅學(xué)到了一些特例。如果將其用來辨別那些未曾出現(xiàn)在訓(xùn)練樣本中的測試樣本時,通常結(jié)果不太理想。這其實就是我們在機(jī)器學(xué)習(xí)中學(xué)過的過擬合問題。
圖6
盡管圖6所示的只采用2個特征的線性分類器分錯了一些訓(xùn)練樣本,準(zhǔn)確率似乎沒有圖4的高,但是,采用2個特征的線性分類器的泛化能力比采用3個特征的線性分類器要強(qiáng)。因為,采用2個特征的線性分類器學(xué)習(xí)到的不只是特例,而是一個整體趨勢,對于那些未曾出現(xiàn)過的樣本也可以比較好地辨別開來。換句話說,通過減少特征數(shù)量,可以避免出現(xiàn)過擬合問題,從而避免“維數(shù)災(zāi)難”。
圖7
圖7從另一個角度詮釋了“維數(shù)災(zāi)難”。假設(shè)只有一個特征時,特征的值域是0到1,每一只貓和狗的特征值都是唯一的。如果我們希望訓(xùn)練樣本覆蓋特征值值域的20%,那么就需要貓和狗總數(shù)的20%。我們增加一個特征后,為了繼續(xù)覆蓋特征值值域的20%就需要貓和狗總數(shù)的45%(0.45^2=0.2)。繼續(xù)增加一個特征后,需要貓和狗總數(shù)的58%(0.58^3=0.2)。隨著特征數(shù)量的增加,為了覆蓋特征值值域的20%,就需要更多的訓(xùn)練樣本。如果沒有足夠的訓(xùn)練樣本,就可能會出現(xiàn)過擬合問題。
通過上述例子,我們可以看到特征數(shù)量越多,訓(xùn)練樣本就會越稀疏,分類器的參數(shù)估計就會越不準(zhǔn)確,更加容易出現(xiàn)過擬合問題。“維數(shù)災(zāi)難”的另一個影響是訓(xùn)練樣本的稀疏性并不是均勻分布的。處于中心位置的訓(xùn)練樣本比四周的訓(xùn)練樣本更加稀疏。
圖8
假設(shè)有一個二維特征空間,如圖8所示的矩形,在矩形內(nèi)部有一個內(nèi)切的圓形。由于越接近圓心的樣本越稀疏,因此,相比于圓形內(nèi)的樣本,那些位于矩形四角的樣本更加難以分類。那么,隨著特征數(shù)量的增加,圓形的面積會不會變化呢?這里我們假設(shè)超立方體(hypercube)的邊長d=1,那么計算半徑為0.5的超球面(hypersphere)的體積(volume)的公式為:
公式1
圖9
從圖9可以看出隨著特征數(shù)量的增加,超球面的體積逐漸減小直至趨向于零,然而超立方體的體積卻不變。這個結(jié)果有點出乎意料,但部分說明了分類問題中的“維數(shù)災(zāi)難”:在高維特征空間中,大多數(shù)的訓(xùn)練樣本位于超立方體的角落。
圖10
圖10顯示了不同維度下,樣本的分布情況。在8維特征空間中,共有2^8=256個角落,而98%的樣本分布在這些角落。隨著維度的不斷增加,公式2將趨向于0,其中dist_max和dist_min分別表示樣本到中心的最大與最小距離。
公式2
因此,在高維特征空間中對于樣本距離的度量失去意義。由于分類器基本都依賴于如Euclidean距離,Manhattan距離等,所以在特征數(shù)量過大時,分類器的性能就會出現(xiàn)下降。
所以,我們?nèi)绾伪苊狻熬S數(shù)災(zāi)難”?圖1顯示了分類器的性能隨著特征個數(shù)的變化不斷增加,過了某一個值后,性能不升反降。這里的某一個值到底是多少呢?目前,還沒有方法來確定分類問題中的這個閾值是多少,這依賴于訓(xùn)練樣本的數(shù)量,決策邊界的復(fù)雜性以及分類器的類型。理論上,如果訓(xùn)練樣本的數(shù)量無限大,那么就不會存在“維數(shù)災(zāi)難”,我們可以采用任意多的特征來訓(xùn)練分類器。事實上,訓(xùn)練樣本的數(shù)量是有限的,所以不應(yīng)該采用過多的特征。此外,那些需要精確的非線性決策邊界的分類器,比如neural network,knn,decision trees等的泛化能力往往并不是很好,更容易發(fā)生過擬合問題。因此,在設(shè)計這些分類器時應(yīng)當(dāng)慎重考慮特征的數(shù)量。相反,那些泛化能力較好的分類器,比如naive Bayesian,linear classifier等,可以適當(dāng)增加特征的數(shù)量。
如果給定了N個特征,我們該如何從中選出M個最優(yōu)的特征?最簡單粗暴的方法是嘗試所有特征的組合,從中挑出M個最優(yōu)的特征。事實上,這是非常花時間的,或者說不可行的。其實,已經(jīng)有許多特征選擇算法(feature selection algorithms)來幫助我們確定特征的數(shù)量以及選擇特征。此外,還有許多特征抽取方法(feature extraction methods),比如PCA等。交叉驗證(cross-validation)也常常被用于檢測與避免過擬合問題。
?
參考資料:
[1] Vincent Spruyt. The Curse of Dimensionality in classification. Computer vision for dummies. 2014. [Link]
轉(zhuǎn)載于:https://www.cnblogs.com/zhehan54/p/6589213.html
總結(jié)
以上是生活随笔為你收集整理的分类问题中的“维数灾难” - robotMax的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重庆无痛人流最好的医院,做一次要花多少钱
- 下一篇: 易语言收费课程