2

我仍在研究評估使用聚類(無監督學習)形成的聚類?如何評估羣集?

我試着用搜索引擎,但我得到的措施過於理論化。如果人們可以分享他們正在使用的機制來評估形成的集羣,那將是非常好的。假設我有一個Java集羣,以便包含Java EE,Java ME,RMI,JVM等,另一個集羣表示NoSQL,並且將包含Neo4j,OrientDB,CouchDB等。這是完美的,我的聚類算法給了我最多準確的羣集。

但是經過培訓和測試後,我可能會說NoSQL集羣下的MySQL,Oracle,所以我只是做一個手動/視覺解釋,然後重新訓練我的算法或調整它,以便我得到更好的聚類。

現在我想自動執行這個手動可視化集羣的過程,並有一個系統給我準確的集羣形成。我正在尋找類似於搜索中使用的Precision,Recall,NDCG,Map等的東西。我的聚類長度不同,可能會形成n個不同的聚類,因此精度/回憶並不是正確的。

回答

2

我的工作與聚類一個項目,我有同樣的問題爲止。

現在我正在使用內置多種聚類算法的JavaML庫(在我的情況下,我使用的是K-means),並且該庫也有幾個函數來評估這些算法。

我用來評估我的聚類的「質量」的函數是每個聚類元素的平方誤差的總和。爲了不用數學上的解釋這種評估方法,基本上平方誤差總和總結了每個聚類的每個元素到它們各自聚類質心的距離(在K均值的情況下)。這不是一個完美和理想的評估,因爲你可能比視覺比較更好(我有同樣的問題),但至少是一種正式的方法來識別'你的羣集有多好'。它便宜,快捷,可以給你一個關於你的羣集的一般視圖。

您可能還想檢查'Cluster labeling'問題。這不是微不足道的,但它打算攻擊同樣的問題。

我覺得你的問題的正確答案取決於聚類算法使用的是和這裏瞭解一些數學理論,因爲這不是一個簡單的主題:)

祝你好運!

+0

感謝您提供此信息。你的文章絕對有用。 – Yavar 2012-02-02 17:13:13

+0

希望它有幫助!我很期待知道這個項目是如何結束的 – 2012-02-03 16:56:29

1

正常情況下,聚類被用作無監督和半監督學習算法。既然你提到過「但是經過訓練和測試後,我可能會說MySQL,......」我假設你正在爲你的應用程序使用半監督聚類算法。

您可以增加輸入功能的數量(或者可能在增加輸入功能的數量的同時進行多個實驗),看看系統的準確度如何改變w.r.t.特徵向量的大小。

此外,您可以評估不同的聚類算法,並選擇其中給出最好的預測準確度最好的算法。

+0

謝謝Upul。其實我正在進行無監督學習,因爲沒有一個簇最初不固定,我有非結構化文本。我已經選擇了一個聚類算法。但是,我想對它生成的集羣評估相同的聚類算法。舉個例子說,我得到了聚類,那麼什麼樣的度量可以用來評估聚類,它可以給我一個百分比,說聚類準確度是70%。然後我可以工作並重新訓練我的同一算法以獲得更高的準確性。 – Yavar 2012-02-02 09:57:45