機器學習中的維度災難(一)

2021-07-08 13:22:51 字數 3285 閱讀 2520

作為乙個挖掘小白,好不容易有了資料,第一步就死在高維度上了,本以為直接上來**資料缺失值、資料分布等,但是上千維度腫麼看,在網上搜尋看到了這篇好文章,感謝原文作者的翻譯

一.引言

這裡我們將要討論所謂的「維數災難」,同時結合過擬合現象來解釋它在分類器學習中的重要性。

舉乙個分類應用的簡單例子,假設我們有一系列的,每張的內容可能是貓也可能是狗;我們需要構造乙個分類器能夠對貓、狗自動的分類。首先,要尋找到一些能夠描述貓和狗的特徵,這樣我們的分類演算法就可以利用這些特徵去識別物體。貓和狗的皮毛顏色可能是乙個很好的特徵,考慮到紅綠藍構成影象的三基色,因此用三基色各自的平均值稱得上方便直觀。這樣就有了乙個簡單的fisher分類器:

if  0.5*red + 0.3*green + 0.2*blue > 0.6 : return cat;

else return dog;

但是,使用顏色特徵可能無法得到乙個足夠準確的分類器,如果是這樣的話,我們不妨加入一些諸如影象紋理(影象灰度值在其x、y方向的導數dx、dy),我們就有5個特徵(red、blue、green、dx、dy)來設計我們的分類器了。

接下來,也許分類器準確率依然無法達到要求,我們可以加入更多的特徵,比如顏色、紋理的統計資訊等等,如此下去,我們也許可能會得到上百個特徵。那是不是我們的分類器效能會隨著特徵數量的增加而逐步提高呢?答案也許有些讓人沮喪,事實上,當特徵數量達到一定規模後,分類器的效能是在下降的。隨著維度(特徵數量)的增加,分類器的效能可以用下圖來描述:

figure 1 隨著維度的增加,分類器效能逐步上公升,到達某點之後,其效能便逐漸下降

接下來,我們簡要介紹這種現象發生的原因,進一步討論如何避免維數災難的發生:

維數災難與過擬合:

在上面這個分類的例子中,我們假設貓和狗的數量是有限的(實際上也確實如此,樣本數量總是有限的),就假設有10張吧,接下來我們就用這僅有的10張來訓練我們的分類器。

首先從乙個最為簡單的線性分類器開始,這裡我們僅僅使用單一特徵(1維),比如紅色,來進行訓練

figure 2    單一特徵的分類器,在訓練集上表現並不好

接下來,我們增加乙個特徵,比如綠色,這樣特徵維數擴充套件到了2維:

figure 3  增加乙個特徵後,我們依然無法找到一條簡單的直線將它們有效分類

為此,我們再增加乙個特徵,比如藍色,擴充套件到3維特徵空間後:

figure 4  增加乙個特徵形成的3維特徵空間及樣本分佈

在3維特徵空間中,我們很容易找到乙個分類平面,能夠在訓練集上有效的將貓和狗進行分類:

figure 5 在高維空間中,我們似乎能得到更優的分類器效能

從1維到3維,給我們的感覺是:維數越高,分類效能越優。然而,在figure 1中,我們說維數過高將導致一定的問題:具體來說,在一維特徵空間下,我們假設乙個維度的寬度為5個單位,這樣樣本密度為10/5=2;在2維特徵空間下,10個樣本所分布的空間大小5*5=25,這樣樣本密度為10/25=0.4;在3維特徵空間下,10個樣本分佈的空間大小為5*5*5=125,樣本密度就為10/125=0.08.

如果我們繼續增加特徵數量,隨著維度的增加,樣本將變得越來越稀疏,在這種情況下,也更容易找到乙個超平面將目標分開。然而,如果我們將高維空間向低維空間投影,高維空間隱藏的問題將會顯現出來:

figure 6  過多的特徵導致的過擬合現象:訓練集上表現良好,但是對新資料缺乏泛化能力

高維空間訓練形成的分類器,相當於在低維空間的乙個複雜的非線性分類器,這種分類器過多的強調了訓練集的準確率甚至於對一些錯誤/異常的資料

也進行了學習,而正確的資料卻無法覆蓋整個特徵空間。為此,這樣得到的分類器在對新資料進行**時將會出現錯誤。這種現象稱之為過擬合,同時也是維災難的直接體現。

下圖展示了用2個特徵代替三個特徵進行分類器的學習:

figure 7  儘管訓練集上分類準確率不如3維下的高,但是具備更好的泛化能力

儘管如圖7中所示,乙個簡單的線性分類器在訓練資料上的表現不如非線性分類器,但由於線性分類器的學習過程中對雜訊沒有對非線性分類器敏感,因此對新資料具備更優的泛化能力。換句話說,通過使用更少的特徵,避免了維數災難的發生(也即避免了高維情況下的過擬合)

在換個角度來解釋維數災難,圖8展示了由於高維而帶來的資料稀疏性問題:假設有乙個特徵,它的取值範圍d在0到1之間均勻分布,並且對狗和貓來說其值都是唯一的,我們現在利用這個特徵來設計分類器。如果我們的訓練資料覆蓋了取值範圍的20%(e.g 0到0.2),那麼所使用的訓練資料就佔總樣本量的20%。上公升到二維情況下,覆蓋二維特徵空間20%的面積,則需要在每個維度上取得45%的取值範圍。在三維情況下,要覆蓋特徵空間20%的體積,則需要在每個維度上取得58%的取值範圍...在維度接近一定程度時,要取得同樣的訓練樣本數量,則幾乎要在每個維度上取得接近100%的取值範圍,或者增加總樣本數量,但樣本數量也總是有限的。

figure 8  取得相同數量樣本需要的空間大小

換句話說,如果一直增加特徵維數,由於樣本分佈越來越稀疏,如果要避免過擬合的出現,就不得不持續增加樣本數量。

先翻譯到這裡,後續還有高維空間的樣本分佈與如何避免維數災難的問題。

原文:分類中的維數災難

接上文:

在上面的例子中,我們通過演示資料的稀疏性展示了維數災難,即:在分類中我們使用的特徵數量越多,那麼由於高維下資料的稀疏性我們不得不需要更多的訓練資料來對分類器的引數進行估計(高維數下分類器引數的估計將變得更加困難)。維數災難造成的另外乙個影響是:資料的稀疏性致使資料的分布在空間上是不同(實際上,資料在高維空間的中心比在邊緣區域具備更大的稀疏性,資料更傾向於分布在空間的邊緣區域)。舉個栗子更好理解:

考慮乙個二維情況下(即二特徵)的單位空間,

機器學習(五) KNN與維度災難

作為乙個過渡,這一節記錄關於knn的知識。這篇部落格不貼關於knn的具體細節了,knn是十分容易理解的,關於knn可參考的部落格一大堆,貼乙個講的好的吧乙隻兔子理解knn 選擇樣本資料集中與待 值前k個最相似的樣本,取其中最多的作為該待 值的類 如果希望knn不給出所述的類,給出可能所述類的概率也是...

機器學習中的維數災難

在看機器學習的 時,經常會看到有作者提到 curse of dimensionality 中文譯為 維數災難 這到底是乙個什麼樣的 災難 本文將通過乙個例子來介紹這令人討厭的 curse of dimensionality 以及它在分類問題中的重要性。假設現在有一組 每一張 裡有乙隻貓或者一條狗。我...

機器學習中的維數災難

在看機器學習的 時,經常會看到有作者提到 curse of dimensionality 中文譯為 維數災難 這到底是乙個什麼樣的 災難 本文將通過乙個例子來介紹這令人討厭的 curse of dimensionality 以及它在分類問題中的重要性。假設現在有一組 每一張 裡有乙隻貓或者一條狗。我...