You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何评估鸢尾花数据集上Self-Organizing Map(SOM)的聚类性能?

SOM聚类性能评估方案

关于ARI评估的合理性

ARI可以用来衡量聚类结果与真实标签的一致性,但你当前的用法存在问题:你直接将每个SOM神经元视为一个簇(10x10网格对应100个簇),而鸢尾花仅有3个真实类别,簇数差异过大时,ARI必然趋近于0——这是因为ARI的核心是衡量两个簇划分的重叠度,当簇数相差悬殊,随机划分的ARI也接近0,所以你的结果是合理的,但这是评估方式的问题,并非SOM本身的问题。

正确的SOM性能评估流程

1. 先对SOM神经元进行二次聚类

SOM的本质是将样本映射到二维网格的神经元原型上,你需要先把相似的神经元聚成与真实类别数(3个)匹配的簇,再将样本的神经元归属映射到这个簇划分上,之后再计算ARI:

% 提取SOM所有神经元的权重向量
neuron_weights = net.IW{1};
% 用k-means对神经元聚类,指定簇数为3(和鸢尾花真实类别一致)
[idx_neurons, ~] = kmeans(neuron_weights, 3);
% 将每个样本对应的神经元索引映射为最终簇标签
sample_cluster_labels = idx_neurons(assignment);
% 计算调整兰德指数
ari = adjustedRandIndex(true_labels, sample_cluster_labels);

2. 专属SOM的拓扑与量化指标

除了和真实标签对比的一致性指标,SOM还有自身特有的评估维度:

  • 量化误差:计算每个样本到其最佳匹配神经元(BMU)权重的平均距离,数值越小说明SOM对样本的拟合精度越高:
    quantization_error = mean(min(pdist2(X, neuron_weights'), [], 2));
    
  • 拓扑误差:统计有多少样本的BMU和次佳匹配神经元在SOM网格上不相邻,数值越小说明SOM更好地保留了原始数据的拓扑结构(需自行实现或借助专用工具箱)。
  • 可视化评估:调用plotsom(net)绘制SOM神经元网格,观察不同真实类别的样本在网格上的分布是否集中、边界是否清晰,这是SOM最直观的评估方式。

大网格下的问题说明

当使用10x10这类大网格时,神经元数量远多于真实类别数,直接用神经元索引作为簇标签计算ARI没有实际意义——簇数差异过大导致一致性指标失效。必须先对神经元做二次聚类,将簇数调整到与真实类别匹配后,再计算一致性指标才合理。

内容的提问来源于stack exchange,提问作者CodeGuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 18:15:39