为什么NMI值较小,而聚类中的聚类精度和兰德指数较高?

问题描述 投票:0回答:1

我使用的是 https:/www.mathworks.commatlabcentralfileexchange32197-clustering-results-measurement 用于评估我在MATLAB中的聚类准确性,它提供了 准确度rand_index但当我试着使用时,我发现它的性能和预期一样正常。但是,当我尝试使用 NMI 作为衡量标准,聚类性能极低,我在使用源码(https:/www.mathworks.commatlabcentralfileexchange29047-normalized-mutual-information).

其实我有两个Nx1向量作为输入,一个是实际的标签,另一个是标签分配。我基本上检查了每一个元素的内部,我发现即使我有82%的rand_index,NMI也只有0.3209。以下是Iris Dataset的例子 https:/archive.ics.uci.edumldatasetsiris。 与MATLAB内置K-Means。

data = iris(:,1:data_dim);
k = 3;
[result_label,centroid] = kmeans(data,k,'MaxIter',10000);
actual_label = iris(:,end);

NMI = nmi(actual_label,result_label);
[Acc,rand_index,match] = AccMeasure(actual_label',result_label');

的结果。

Auto ACC: 0.820000 Rand_Index: 0.701818 NMI: 0.320912

matlab cluster-analysis k-means nmi
1个回答
0
投票

Rand Index会随着数据点数量的增加而趋向于1(即使在比较随机聚类时也是如此),所以当你有一个大数据集时,你永远不会真正期望看到Rand的小值。

同时,当你的所有点都落入同一个大聚类时,Accuracy也会很高。

我有一种感觉,NMI产生的比较更可靠。 为了验证,可以尝试运行一个维度还原,并根据两种聚类绘制带颜色的数据点。 可视化统计往往是培养对数据直觉的最好方法。

如果你想探索更多,一个方便的聚类比较的python包是 CluSim.

© www.soinside.com 2019 - 2024. All rights reserved.