Clustering
如何測試 k-means 的實現?
免責聲明:我在 Stackoverflow 上發布了這個問題,但我認為這可能更適合這個平台。
您如何測試自己的多維數據集的 k-means 實現?
我正在考慮在數據上運行一個已經存在的實現(即Matlab)並將結果與我的算法進行比較。但這需要兩種算法的工作方式大致相同,並且兩種結果之間的映射可能不是小菜一碟。
你有更好的主意嗎?
k-means 包含一個隨機分量,因此除非您具有完全相同的實現並使用相同的起始配置,否則您不太可能獲得相同的結果。但是,您可以查看您的結果是否與眾所周知的實現一致(不了解 Matlab,但 R 中 k-means 算法的實現已得到很好的解釋,請參閱Hartigan & Wong,1979 年)。
至於比較兩個系列的結果,如果要多次運行,標籤切換仍然存在問題。同樣,在e1071 R 包中,有一個非常方便的函數 (;
matchClasses()
) 可用於在雙向分類表中查找兩個類別之間的“最佳”映射。基本上,這個想法是重新排列行以最大化它們與列的一致性,或者使用貪婪方法並置換行和列,直到對角線上的總和(原始一致性)最大。還提供了Kappa統計量等協議係數。最後,關於如何對您的實現進行基準測試,有很多免費可用的數據,或者您可以模擬專用數據集(例如,通過有限混合模型,請參閱MixSim包)。