我如何评估群集?

时间:2012-02-02 08:07:54

标签: artificial-intelligence machine-learning cluster-analysis unsupervised-learning

我还在研究评估使用聚类(无监督学习)形成的聚类?

我尝试使用谷歌搜索,但我得到的措施太理论化了。如果人们可以共享他们用来评估所形成的集群的机制,那将是很棒的。假设我有一个Java集群,它将包含Java EE,Java ME,RMI,JVM等,另一个集群称NoSQL,它将具有类似Neo4j,OrientDB,CouchDB等的东西。这是完美的,我的集群算法给了我最多准确的集群。

然而,在训练和测试后,我可能会说NoSQL集群中的MySQL,Oracle,所以我只是做一个手动/视觉解释,然后重新训练我的算法或调整它,以便我得到更好的聚类。

现在我想自动化这个手动可视化群集的过程,并拥有一个系统,可以让我了解所形成的群集的准确性。我正在寻找类似于搜索中使用的Precision,Recall,NDCG,Map等的东西。我的星团长度不同,可能会形成n - 不同的星团,因此精确/召回不是正确的。

2 个答案:

答案 0 :(得分:2)

我正在开发一个带有Clustering的项目,到目前为止,我遇到了同样的问题。

现在我正在使用JavaML库,它内置了几种聚类算法(在我的例子中我使用的是K-means),这个库也有几个函数来评估这种算法。

我用来评估集群“质量”的函数是每个集群元素的平方误差之和。为了在数学上解释这种评估方法,基本上平方误差的总和总结了每个簇的每个元素到它们各自的簇质心的距离(在K均值的情况下)。这不是一个完美和理想的评价,因为你可能比视觉比较更好(我有同样的问题),但至少是一种正式的方法来识别“你的集群有多好”。它便宜,快速,可以为您提供群集的一般视图。

您可能还想查看“Cluster labeling”问题。这不是微不足道的,但它打算攻击同样的问题。

我认为你的问题的正确答案取决于你正在使用的聚类算法,并在这里理解一些数学理论,因为这不是一个简单的主题:)

祝你好运!

答案 1 :(得分:1)

通常,聚类用作无监督和半监督学习算法。既然你已经提到“但经过训练然后测试我可能会说MySQL,......”我假设您正在为您的应用程序使用半监督聚类算法。

您可以增加输入要素的数量(或者可以在增加输入要素数量的情况下进行多次实验),了解系统的准确性如何变化w.r.t.特征向量的大小。

此外,您可以评估不同的聚类算法并选择能够提供最佳预测精度的最佳算法。