为什么 "swapping the argument does not change the score" 在 normalized_mutual_info_score 中?
Why "swapping the argument does not change the score" in normalized_mutual_info_score?
我正在尝试使用 scikit learn's normalized_mutual_info_score() function. 通过归一化互信息 (NMI) 来评估集群质量 我了解 NMI 的数学理论,但对该函数的工作原理有点困惑。
参数是两个数组,包含两个聚类(labels_pred
)和分类(labels_true
)的标签。我对这两个数组的理解是,标签是有序的,我的意思是例如 if,
labels_pred=[0,0,1,1]
然后文档编号 one
和 two
被标记为 zero
并且 third
和 fourth
被标记为 one
.现在如果 label_true=[0,0,0,1]
,这意味着文档 one
、two
和 three
的真实分类是 zero
而 fourth
是 one
.所以分类器错误地分类了第三个文件。我的理解正确吗?
现在,查看文档,其中 labels_true = [0, 0, 0, 1, 1, 1]
和 labels_pred = [0, 0, 1, 1, 2, 2]
,因此根据我的理解,聚类算法正确预测了 3 个文档(第一、第二和第四)。然而他们说,
One can permute 0 and 1 in the predicted labels
normalized_mutual_info_score are symmetric: swapping the argument does not change the score
因此,如果 labels_pred = [1, 1, 0, 0, 2, 2]
,则只有一份文档被正确标记。根据他们的说法,这种交换不会改变 NMI。这是为什么?我的理解有什么问题吗?
感谢您抽出宝贵时间阅读我的问题。我将非常感谢任何帮助,谢谢。
您不能(方法也不)期望一个聚类中的“1”与另一个聚类中的“1”相同。
每个标签都与其他每个标签进行比较。因此,重命名标签不会影响结果。
事实上,标签甚至来自不同的域也很常见。一旦你走出 "everything is a number" 框,标签很常见,例如文字.
比如著名的鸢尾花数据集。 类 不是 标记为 0、1、2,而是 iris setosa、iris virginica 等。然而,如果你 运行 k-means,k-means将标记集群 0,1,2 因为它没有名称。
因此,任何集群评估措施必须能够匹配不同的标签(通常,将每个标签与其他每个标签进行比较,匹配所有对)。
然而,"swapping the arguments" 指的是不同的东西:您也可以交换 labels_pred 和 labels_true,结果不会改变。没有假设哪个参数是 "correct"。这些措施只是衡量您从标签中获得的分区的相似程度。
我正在尝试使用 scikit learn's normalized_mutual_info_score() function. 通过归一化互信息 (NMI) 来评估集群质量 我了解 NMI 的数学理论,但对该函数的工作原理有点困惑。
参数是两个数组,包含两个聚类(labels_pred
)和分类(labels_true
)的标签。我对这两个数组的理解是,标签是有序的,我的意思是例如 if,
labels_pred=[0,0,1,1]
然后文档编号 one
和 two
被标记为 zero
并且 third
和 fourth
被标记为 one
.现在如果 label_true=[0,0,0,1]
,这意味着文档 one
、two
和 three
的真实分类是 zero
而 fourth
是 one
.所以分类器错误地分类了第三个文件。我的理解正确吗?
现在,查看文档,其中 labels_true = [0, 0, 0, 1, 1, 1]
和 labels_pred = [0, 0, 1, 1, 2, 2]
,因此根据我的理解,聚类算法正确预测了 3 个文档(第一、第二和第四)。然而他们说,
One can permute 0 and 1 in the predicted labels
normalized_mutual_info_score are symmetric: swapping the argument does not change the score
因此,如果 labels_pred = [1, 1, 0, 0, 2, 2]
,则只有一份文档被正确标记。根据他们的说法,这种交换不会改变 NMI。这是为什么?我的理解有什么问题吗?
感谢您抽出宝贵时间阅读我的问题。我将非常感谢任何帮助,谢谢。
您不能(方法也不)期望一个聚类中的“1”与另一个聚类中的“1”相同。
每个标签都与其他每个标签进行比较。因此,重命名标签不会影响结果。
事实上,标签甚至来自不同的域也很常见。一旦你走出 "everything is a number" 框,标签很常见,例如文字.
比如著名的鸢尾花数据集。 类 不是 标记为 0、1、2,而是 iris setosa、iris virginica 等。然而,如果你 运行 k-means,k-means将标记集群 0,1,2 因为它没有名称。
因此,任何集群评估措施必须能够匹配不同的标签(通常,将每个标签与其他每个标签进行比较,匹配所有对)。
然而,"swapping the arguments" 指的是不同的东西:您也可以交换 labels_pred 和 labels_true,结果不会改变。没有假设哪个参数是 "correct"。这些措施只是衡量您从标签中获得的分区的相似程度。