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