Clustering

如何測試 k-means 的實現?

  • November 26, 2010

免責聲明:我在 Stackoverflow 上發布了這個問題,但我認為這可能更適合這個平台。

您如何測試自己的多維數據集的 k-means 實現?

我正在考慮在數據上運行一個已經存在的實現(即Matlab)並將結果與我的算法進行比較。但這需要兩種算法的工作方式大致相同,並且兩種結果之間的映射可能不是小菜一碟。

你有更好的主意嗎?

k-means 包含一個隨機分量,因此除非您具有完全相同的實現並使用相同的起始配置,否則您不太可能獲得相同的結果。但是,您可以查看您的結果是否與眾所周知的實現一致(不了解 Matlab,但 R 中 k-means 算法的實現已得到很好的解釋,請參閱Hartigan & Wong,1979 年)。

至於比較兩個系列的結果,如果要多次運行,標籤切換仍然存在問題。同樣,在e1071 R 包中,有一個非常方便的函數 (; matchClasses()) 可用於在雙向分類表中查找兩個類別之間的“最佳”映射。基本上,這個想法是重新排列行以最大化它們與列的一致性,或者使用貪婪方法並置換行和列,直到對角線上的總和(原始一致性)最大。還提供了Kappa統計量等協議係數。

最後,關於如何對您的實現進行基準測試,有很多免費可用的數據,或者您可以模擬專用數據集(例如,通過有限混合模型,請參閱MixSim包)。

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

comments powered by Disqus