当对多类数据集应用聚类算法且类数不等于结果聚类数时(例如,当我们通过设置 K = 3 使用 K-Means 算法时,应用具有 14 个类的“酵母”数据集) .
在这种情况下评估结果的正确方法是什么?
当对多类数据集应用聚类算法且类数不等于结果聚类数时(例如,当我们通过设置 K = 3 使用 K-Means 算法时,应用具有 14 个类的“酵母”数据集) .
在这种情况下评估结果的正确方法是什么?
如果没有一对类是重叠的,并且它们确实对数据集的每个元素进行了分类,那么它们就构成了该集合的一个分区。你的聚类也是如此。
在这种情况下,我建议使用距离度量来比较两个分区,而不是任何真正的索引,即使它很流行——除非该索引恰好也是一个度量。
用于比较分区的距离之一是索引,几年前由 Maria Meil重新发现,但它的起源可以追溯到 80 年代 Zurek。
如何计算两个分区 P 和 Q 之间的距离:
使用真实度量的原因很简单:度量满足三角不等式,我们对“接近”和“相似”的直觉很大程度上依赖于此。任何不满足三角不等式的不相似性(距离)的临时度量最终都会给你这样的结果:A与 B 相距“小于给定的界限,说。然后你会发现 A 接近 C 量。如果这个距离不是度量标准,那么B 和 C 之间。对于声音度量距离,它应该是 . 换句话说,A 将与 B 和 C“相似”,但最后两个将彼此“不同”/“不相似”。这是违反直觉的。
缺点是 VI 距离在计算上可能比计算兰德指数更昂贵。好处是它在数学上是合理的并且是有道理的。
您可以使用 R 来计算 VI 距离。您还可以使用我前段时间编写的程序 Partanalyzer ( https://github.com/MASantos/Partanalyzer )。它需要重写以使其更高效,但它是开源的,因此您可以随意修改它。
:Meila, M. 多元分析杂志,98, 873 (2007)。
:WH Zurek,《自然》,第 341 卷,第 119 页(1989 年)。
第一步是训练几个不同的算法/分类器,以大致了解在不更改数据的情况下您的结果有多好。
然后,一旦您执行了 kmeans,您就可以使用该信息来改进您的数据,然后再次通过您的分类器运行它以查看您的结果是否有所改善。
当我说“使用该信息可能改善您的数据”时,我的意思是:
假设您的数据有 5 个特征(列)...请参阅以下完全组成的数据...
2,5,6,3,2
4,5,2,3,7
...
5,8,2,3,5
您通过 kmeans 运行的正是这些数据...使用 3 个集群,您的每一行数据都将“属于”一个集群...因此将其添加到您的数据中,您的数据将变为:
2,5,6,3,2,1,0,0 属于集群 1
4,5,2,3,7,0,1,0 属于集群 2
...
5,8,2,3,5,0,0,1 属于集群 3
您可以只添加一列并将其设为 1、2、3,但有些算法更喜欢 0/1 方法(单热编码,虚拟变量)
看,现在您的数据中的信息比开始时多一点。拥有之前和之后的比较模型会让您知道它是否真的有用!
即使集群的数量相等,kt 也很少认为集群与类之间存在一对一的匹配。例如,一个类可能被分成两个类,而这两个类可能是不可分辨的,因此在同一个类中。
事实上,如果集群与你的类不同,它是最有趣的!
为了比较聚类(和类),已经开发了许多度量标准。大多数基于对计数,而兰德指数是最受欢迎的指数之一。
你看的是成对的对象,而不是对象:它们是否在同一个集群和同一个类中?那么这对是“真阳性”。
有关更多详细信息,请参阅维基百科。
在发现的集群数量与实际类的数量不同的情况下,我喜欢使用最大匹配度量。基本上,它会尝试在您的结果和真实类之间找到最佳匹配。
假设您有一个 3 类数据库,并且您找到了 4 个集群。然后您可以得到以下示例结果:
可以这样理解:集群 1 有 2 个来自第 1 类的元素,有 7 个来自第 2 类的元素和 3 个来自第 3 类的元素,依此类推。
最大匹配尝试找到具有最大迹线(对角线和)的 3x3 矩阵。在这种情况下,它会
最后的措施是:
其中 41 是 4x3 矩阵的所有元素的总和。
该措施会惩罚发现额外聚类的聚类方法。