调整兰德指数(Adjusted Rand Index, ARI)是一种用于衡量两个聚类结果相似度的指标。它通过考虑所有样本对,并计算在预测聚类和真实聚类中被分配到相同或不同聚类的样本对数量。原始的兰德指数(RI)得分随后通过以下公式“调整为随机”得到ARI得分:
ARI = (RI - Expected_RI) / (max(RI) - Expected_RI)
这样,调整后的兰德指数确保了对于随机标签,其值接近0.0,无论聚类的数量和样本数量如何,并且当聚类完全相同时(考虑到排列),其值恰好为1.0。调整后的兰德指数对于特别不一致的聚类,其下界为-0.5。
ARI是一个对称度量,这意味着无论聚类标签的顺序如何,其值都是相同的。例如,如果两个聚类结果完全相同,那么它们的ARI得分为1.0。如果聚类结果完全不同,那么它们的ARI得分接近0.0。如果聚类结果完全不一致,那么它们的ARI得分为-0.5。
在实际应用中,ARI可以用来评估聚类算法的性能。例如,可以使用ARI来比较K-Means、DBSCAN和亲和力传播等不同聚类算法的结果。此外,ARI还可以用于评估聚类结果的稳定性,例如通过在不同的数据子集上运行聚类算法并计算ARI得分来实现。
ARI的计算公式如下:
ARI = (a + b) / (n choose 2)
其中,a表示被正确分配到相同聚类的样本对数量,b表示被正确分配到不同聚类的样本对数量,n表示样本总数。
ARI的计算过程可以分为以下几个步骤:
ARI的值范围在-0.5到1.0之间。当ARI的值接近1.0时,表示聚类结果与真实标签非常接近;当ARI的值接近0.0时,表示聚类结果与随机标签相似;当ARI的值接近-0.5时,表示聚类结果与真实标签完全不一致。
在实际应用中,可以使用Python的scikit-learn库来计算ARI得分。以下是一个示例代码:
from sklearn.metrics.cluster import adjusted_rand_score
true_labels = [0, 0, 1, 1]
predicted_labels = [0, 0, 1, 1]
ari_score = adjusted_rand_score(true_labels, predicted_labels)
print(ari_score)
在这个示例中,定义了真实标签和预测标签,然后使用adjusted_rand_score函数计算它们的ARI得分。