为啥Adjusted rand index(ARI)优于rand index(RI)以及如何从公式中直观理解ARI

Posted

技术标签:

【中文标题】为啥Adjusted rand index(ARI)优于rand index(RI)以及如何从公式中直观理解ARI【英文标题】:Why is Adjusted rand index(ARI) better than rand index(RI) and how to understand ARI intuitively from the formula为什么Adjusted rand index(ARI)优于rand index(RI)以及如何从公式中直观理解ARI 【发布时间】:2018-10-18 15:20:10 【问题描述】:

我阅读了有关 Rand Index 和 Adjusted Rand Index 的***文章。我可以理解它们是如何从数学上计算出来的,并且可以将兰德指数解释为协议对分歧的比率。但我对 ARI 没有同样的直觉。

This blogpost 通过考虑重叠的可能性来解释为什么 ARI 优于 RI。有人可以通过示例或直观的解释来解释为什么 ARI 比 RI 更好。

【问题讨论】:

【参考方案1】:

我认为主要的直观点是您已经链接的博客文章中提到的那个,

两个随机集如何具有接近 1 的 RI?原因在于集群的数量。当有很多集群时,两个集合中的一对项目在不同集群中的可能性更高。这仍然算作 RI 中的一致事件。

如果一对元素要么都在每个分区的同一相应集群中,如果两者都在不同的各自集群中,

RI 将其视为“成功”每个分区。

这种“成功”的概念可能会受到随机机会的不利影响,只需增加分区中的集群数量即可。例如,想象一个包含 100 个示例的数据集。分区 X 将其分成 100 个不同的子集,每个子​​集有 1 个数据点。分区 Y 会将其划分为 99 个子集,98 个子集各有一个数据点,1 个子集有两个数据点。

对于这种情况,正则 RI 看起来几乎是完美的,因为对于随机选择的任何两个点,它们肯定在 X 中的两个不同子集中,并且它们不在 Y 中的两个不同子集中的唯一方法是不太可能我们从包含两个项目的特殊第 99 个子集中提取了这两个项目。所以 RI 会非常接近 1(如果我们让数据集大于 100,我们可以让它任意接近 1)。

但是对于 ARI,列联表中的所有n_ij 项在定义上都是 1 或 0,这意味着分子必须为负数,表明集群相似性不好(这基本上是由以下事实驱动的只有这些分区携带的“信息”是 Y 的一个子集,它有两个数据点......所以如果 X 不重现它,那么在某种意义上,它在重现 Y 指示的关系方面非常糟糕)。

您可以通过将 X 视为 50 个不同的二元素对集合,将 Y 视为 50 个不同的二元素对集合的不同集合,从而使这个思想实验更加复杂。话又说回来,RI 看起来不错只是偶然的机会,因为大多数时候元素会随机 both 不属于同一个二元素子集。只有在 X 或 Y 中确实属于同一对的对(100 个可能的对)才会受到惩罚,而对于其他 (100 choose 2) - 100 剩余的对,RI 会将它们标记为已成功放入 X 和 Y 中的不同组中。同样,只是使数据集更大会越来越多地提高 RI。

【讨论】:

非常感谢包含 100 个示例和 99 个子集以及 50 组不同的二元素对的示例。我现在更好地理解了 ARI 的公式。因此,ARI 衡量的相似度超过了 expectedexpected index)。并且预期索引会根据 RI 未考虑的数据分布(分区数等)而变化 一个重要但经常被忽视的期望考虑是为聚类选择随机模型。请参阅Gates & Ahn (2017),详细讨论随机模型的假设如何改变解释。

以上是关于为啥Adjusted rand index(ARI)优于rand index(RI)以及如何从公式中直观理解ARI的主要内容,如果未能解决你的问题,请参考以下文章

聚类的外部指标(Purity, ARI, NMI, ACC) 和内部指标(NCC,Entropy,Compactness,Silhouette Index),附代码 (Python 和 Matlab)

为啥 rand() + rand() 会产生负数?

为啥 rand()%6 有偏见?

为啥新的随机库比 std::rand() 更好?

为啥我需要“使用 rand::Rng”在 rand::thread_rng() 上调用 gen()?

关于PHP中array_rand函数为啥不能只设置一个随机?