Clustering

k-means 聚類是否需要均值歸一化和特徵縮放?

  • January 17, 2012

在執行 k-means 之前,最好的(推薦的)預處理步驟是什麼?

如果您的變量具有不可比較的單位(例如,以厘米為單位的身高和以公斤為單位的體重),那麼您當然應該標準化變量。即使變量具有相同的單位但顯示出完全不同的方差,在 K-means 之前進行標準化仍然是一個好主意。你看,K-means 聚類在空間的所有方向上都是“各向同性的”,因此往往會產生或多或少的圓形(而不是細長的)聚類。在這種情況下,使方差不相等相當於將更多權重放在方差較小的變量上,因此集群將傾向於沿著方差較大的變量分開。

在此處輸入圖像描述

另一件值得提醒的事情是,K-means 聚類結果可能對數據集中對象的順序很敏感 $ ^1 $ . 合理的做法是多次運行分析,隨機化對象順序;然後平均這些運行之間的通信/相同集群的集群中心 $ ^2 $ 並將中心作為初始中心輸入,以進行最後一次分析。

以下是關於在聚類或其他多變量分析中標準化特徵問題的一些一般性推理。


$ ^1 $ 具體來說,(1)中心初始化的一些方法對case order很敏感;(2) 即使初始化方法不敏感,結果有時也可能取決於將初始中心引入程序的順序(特別是,當數據中的距離相等時);(3) k-means 算法的所謂運行均值版本對案例順序自然敏感(在此版本中 - 除了可能在線聚類之外不經常使用 - 在每個單獨的案例重新分配到之後重新計算質心另一個集群)。

$ ^2 $ 在實踐中,來自不同運行的哪些集群對應——通常可以通過它們的相對接近度立即看出。當不容易看到時,可以通過在中心之間進行層次聚類或通過匹配算法(例如匈牙利語)來建立對應關係。但是,要注意的是,如果對應關係如此模糊以至於幾乎消失,那麼數據要么沒有 K-means 可檢測到的簇結構,要么 K 非常錯誤。

引用自:https://stats.stackexchange.com/questions/21222

comments powered by Disqus