我怎麼知道我的 k-means 聚類算法正遭受維數災難?
我相信這個問題的標題說明了一切。
它有助於思考什麼是維度的詛咒。CV上有幾個非常不錯的主題值得一讀。這是一個開始的地方: 向孩子解釋“維度的詛咒”。
我注意到您對這如何適用於- 表示聚類。值得注意的是-means 是一種最小化(僅)平方歐幾里得距離的搜索策略。有鑑於此,值得思考歐幾里得距離與維度災難的關係(請參閱:為什麼歐幾里得距離在高維中不是一個好的度量?)。
這些線程的簡短回答是,空間的體積(大小)相對於維數以令人難以置信的速度增加。甚至維度(對我來說似乎不是非常“高維度”)可以帶來詛咒。如果您的數據在該空間中均勻分佈,則所有對象彼此之間的距離大致相等。然而,正如@Anony-Mousse 在他對該問題的回答中指出的那樣,這種現象取決於數據在空間內的排列方式;如果他們不統一,你不一定有這個問題。這就引出了均勻分佈的高維數據是否非常普遍的問題(參見:“維度災難”是否真的存在於真實數據中?)。
我認為重要的不一定是變量的數量(數據的字面維度),而是數據的有效維度。在假設下尺寸“太高”-意思是,最簡單的策略是計算您擁有的功能數量。但是,如果您想考慮有效維度,您可以執行主成分分析 (PCA) 並查看特徵值如何下降。大多數變化存在於幾個維度中(通常跨越數據集的原始維度)是很常見的。這意味著您不太可能遇到問題- 意味著您的有效維度實際上要小得多。
一個更複雜的方法是檢查數據集中成對距離的分佈,沿著@hxd1011 在他的回答中建議的行。查看簡單的邊際分佈會給你一些可能的均勻性的暗示。如果您將所有變量歸一化以位於區間內, 成對距離必須在區間內. 高度集中的距離會造成問題;另一方面,多模態分佈可能是有希望的(您可以在我的回答中看到一個示例:如何在聚類中同時使用二元和連續變量?)。
然而,無論-手段將“工作”仍然是一個複雜的問題。在您的數據中存在有意義的潛在分組的假設下,它們不一定存在於您的所有維度或最大化變化的構造維度(即主成分)中。集群可以在較低變化的維度中(請參閱:PCA 的示例,其中具有低變化的 PC 是“有用的”)。也就是說,您可以在您的幾個維度上或在低變體 PC 上,在內部靠近且在它們之間很好分離的點的集群,但在高變體 PC 上卻不相似,這將導致-意味著忽略您所追求的集群並選擇人造集群(可以在此處看到一些示例:如何理解 K-means 的缺點)。