2011-06-15 59 views

回答

3

遺憾的是沒有。沒有一種可以設置「正確K」的簡單或複雜的統計方法。有啓發式,有時有效的拇指規則,有時不行。

由於許多聚類方法具有這些類型的參數,所以情況更爲普遍。

+1

這些經驗法則之一是什麼? – 2016-04-12 15:34:35

3

那麼有兩個實用的解決方案來解決常用的質心(k)數量的智能選擇問題 。

首先是PCA你的數據,以及從PCA的輸出 - 這是 主成分(特徵向量),並在數據中觀察到的變異 其累積貢獻 - 顯然表明的最佳數目質心。 (例如,如果數據中的變異性的95%以上是由前三個主 組分所解釋的,則k = 3爲K均值的明智選擇。)

第二常用實際的解決方案,以智能地估計k是 是k-means算法的修訂實現,稱爲k-means ++。實質上,k-means ++與初始k-means的區別在於額外的預處理步驟 。在此步驟中,質心的數量和初始位置以及估計值。

k-means ++依賴於此的算法很容易理解並在代碼中實現。兩者的良好來源是在中的2007 Post LingFipe博客,其提供了對k-means ++的優秀的 解釋以及包括對原始論文的引用, 首次引入了該技術。除了提供對k的最優選擇之外,k-均值++顯然優於原始k均值在兩種性能(大約1/2處理時間比較 與k-均值在一個公開的比較中)和準確度(在相同的比較研究中,三個數量級的差錯改善了 )。

+1

請原諒我,如果我錯了,但我明白,K-means ++提供更好的初始化,但它不確定質心的數量? – Marko 2014-10-06 11:02:39

0

unkown的最佳解決方案(通過統計參數模型等)ML問題是對數據進行採樣並找到最適合子問題的參數,然後在完全問題上使用它們。在這種情況下,爲5%的數據選擇最佳K值。

0

Bayesian k-means可能是您不知道羣集數量的解決方案。網站上提供了相關的論文,並給出了相應的MATLAB代碼。

3

如果您明確想要使用k-means,您可以研究描述x-means的文章。當使用x-means的實現方式時,與k-means相比,唯一的區別在於,不是指定單個k,而是指定k的範圍。 「最好」的選擇,重要。一些度量,在範圍內將是x-means的輸出的一部分。您還可以查看分組算法。

如果您的給定數據在計算上可行(可能使用yura建議的採樣),您可以使用各種k進行聚類,並使用某些標準聚類有效性度量來評估所得聚類的質量。這裏描述了一些經典措施:measures

@doug k-means ++在聚類分配開始之前確定聚類數量的最優k是不正確的。 k-means ++與k-means不同之處在於,它不是隨機選擇初始k個質心,而是隨機選擇一個初始質心,並連續選擇中心直到k被選中。在初始完全隨機選擇之後,選擇數據點作爲具有由潛在函數確定的概率的新質心,該潛在函數取決於與已選中心的數據點距離。 k-means ++的標準參考文獻是Arthur和Vassilvitskii的k-means++: The Advantages of Careful Seeding

此外,我不認爲一般選擇k是主要組件的數量將提高你的聚類。想象一下三維空間中的數據點都位於通過原點的平面上。您將獲得2個主要組件,但這些點的「自然」聚類可能具有任意數量的聚類。

+0

我同意你關於PCA在k-means中的作用。我認爲,PCA可能會提高算法的速度,因爲數據點之間的差異可以更快地計算得到更少的維度。但它不一定會減少集羣的數量。 – petrichor 2011-06-17 15:11:49