)
标准化互信息是机器学习、聚类评估、信息论和人工智能中非常常见的一个术语。它用来描述两个分组结果之间共享了多少信息并把这个共享程度标准化到便于比较的范围内。 换句话说标准化互信息是在回答聚类结果和真实标签之间到底有多一致而且这种一致性有多强。如果说调整兰德指数主要从“样本对关系是否一致”的角度评价聚类结果那么标准化互信息主要从“两个分组结果共享了多少信息”的角度评价聚类结果。因此标准化互信息常用于聚类模型评估、K 均值聚类、层次聚类、谱聚类、DBSCAN、聚类算法比较和无监督学习实验分析在人工智能中具有重要基础意义。一、基本概念什么是标准化互信息标准化互信息Normalized Mutual InformationNMI是一种用于比较两个分组结果相似程度的指标。在聚类评估中它通常用来比较• 聚类算法得到的簇标签• 数据本身已有的真实标签或参考标签例如在鸢尾花数据集中每个样本有真实类别。如果使用 KMeans 自动把样本分成若干簇就可以用标准化互信息比较聚类标签和真实标签• 如果聚类标签和真实标签高度一致NMI 较高• 如果二者关系很弱NMI 较低。标准化互信息通常记为它的常见取值范围是其中• NMI 1表示两个分组结果完全一致• NMI 越接近 1表示两个分组共享的信息越多• NMI 越接近 0表示两个分组之间关系越弱从通俗角度看标准化互信息可以理解为知道聚类结果之后能在多大程度上推断真实类别或者知道真实类别之后能在多大程度上推断聚类结果。需要注意的是NMI 不要求聚类标签编号和真实标签编号完全相同。例如• 真实标签0 0 1 1• 聚类标签2 2 3 3虽然编号不同但分组结构完全一致因此 NMI 可以达到 1。这说明NMI 关心的是分组结构是否一致而不是标签编号是否相同。二、为什么需要标准化互信息标准化互信息之所以重要是因为聚类任务中的标签编号没有固定语义。在分类任务中类别标签通常有明确含义。例如• 0 猫• 1 狗• 2 兔子如果模型把猫预测成狗就是明显错误。但在聚类任务中算法输出的标签只是簇编号例如• 0, 1, 2这些编号本身没有固定含义。同一个聚类结果可能第一次运行标成• 0 0 1 1第二次运行标成• 2 2 3 3从编号看不同但从分组结构看完全相同。因此聚类评估不能简单比较标签编号是否相等而要比较两个分组结果在整体结构上是否一致。标准化互信息正是用于这个目的。它不是问预测标签编号和真实标签编号是否逐个相同。而是问聚类结果中包含了多少关于真实标签的信息。从通俗角度看如果一个聚类结果很好那么只要知道某个样本属于哪个簇就能大致知道它的真实类别。反过来只要知道真实类别也能大致推断它会被分到哪个簇。如果这种互相推断的能力很强NMI 就高如果两种标签几乎没有关系NMI 就低。因此NMI 适合在有真实标签或参考分组时用来评价聚类结果与参考答案的一致程度。三、互信息NMI 的基础理解标准化互信息首先要理解互信息。互信息Mutual InformationMI用于衡量两个变量之间共享的信息量。在聚类评估中可以把• 真实标签看作变量 U• 聚类标签看作变量 V互信息可以理解为知道 V 之后能减少多少对 U 的不确定性。也可以反过来理解为知道 U 之后能减少多少对 V 的不确定性。常见形式可以写为其中• U 表示真实标签分组• V 表示聚类标签分组• u_i 表示 U 中的第 i 个类别• v_j 表示 V 中的第 j 个簇• p(u_i,v_j) 表示样本同时属于真实类别 u_i 和聚类簇 v_j 的比例• p(u_i) 表示样本属于真实类别 u_i 的比例• p(v_j) 表示样本属于聚类簇 v_j 的比例这个公式看起来较复杂但核心思想并不难如果真实标签和聚类标签之间关系越强互信息越大如果二者几乎独立互信息越小。例如如果某个真实类别几乎都被聚到同一个簇中说明聚类标签能很好地提供真实类别信息。这时互信息较高。如果每个簇中都混杂着各种真实类别说明聚类标签对真实类别帮助不大。这时互信息较低。从通俗角度看互信息像是在问知道一个分组结果能帮我减少多少对另一个分组结果的困惑。四、为什么要“标准化”互信息本身虽然有用但它有一个问题不同数据集、不同类别数量、不同簇数量下互信息的数值不方便直接比较。例如一个数据集有 3 个类别另一个数据集有 20 个类别。它们的互信息大小受类别数量和分布影响不一定能直接比较。因此需要把互信息转换成一个更统一的比例型指标。这就是标准化互信息。标准化互信息通常通过信息熵对互信息进行归一化。一种常见形式是其中• NMI(U,V) 表示 U 和 V 的标准化互信息• MI(U,V) 表示 U 和 V 的互信息• H(U) 表示真实标签分组 U 的信息熵• H(V) 表示聚类标签分组 V 的信息熵也有其他标准化方式例如使用平均值不同软件实现中可能允许选择不同的标准化方式但核心思想相同用信息熵对互信息进行缩放使结果更容易解释和比较。从通俗角度看互信息告诉我们共享了多少信息标准化互信息进一步把这个共享程度转换成 0 到 1 之间的相对比例。这样NMI 就更适合用于不同聚类结果之间的比较。五、如何直观理解标准化互信息标准化互信息最核心的直觉是两个分组结果越能互相说明NMI 越高。假设有 6 个样本真实类别为A A A B B B。一个很好的聚类结果是1 1 1 2 2 2。虽然真实标签是 A、B聚类标签是 1、2但分组结构完全一致。只要知道样本属于簇 1就可以知道它属于真实类别 A只要知道样本属于簇 2就可以知道它属于真实类别 B。这时聚类标签提供了几乎完整的真实类别信息NMI 1。如果聚类结果是1 2 1 2 1 2那么每个簇里都混杂着 A 和 B。知道样本属于哪个簇并不能有效判断它的真实类别。这时 NMI 会较低。从通俗角度看NMI 像是在问聚类结果这份“分组说明书”能不能解释真实类别这份“标准答案”。如果能解释得很好NMI 高如果解释不了NMI 低。它关注的是两套分组之间的信息共享而不是每个标签编号是否直接对应。六、标准化互信息的取值含义标准化互信息通常在 0 到 1 之间取值越大说明两个分组结果越一致。1、NMI 1完全一致当 NMI 1 时表示两个分组结果完全一致。这里的完全一致是指分组结构一致而不是标签编号完全一致。例如• 真实标签0 0 1 1• 聚类标签2 2 3 3虽然标签编号不同但样本被分组的方式完全一致因此 NMI 可以为 1。从通俗角度看知道聚类标签就能完全知道真实类别。2、NMI 接近 0关系很弱当 NMI 接近 0 时说明聚类标签和真实标签之间共享的信息很少。这通常表示• 聚类结果没有很好恢复真实类别• 聚类结构和真实类别关系较弱• 特征空间中的自然分组可能与真实标签不一致从通俗角度看知道聚类标签也几乎不能帮助判断真实类别。3、NMI 越高是否一定越好如果目标是让聚类结果尽量接近真实标签那么 NMI 越高通常越好。但需要注意NMI 高表示聚类结果接近参考标签不一定表示它在业务上一定最有意义。例如真实标签可能按产品类型划分但聚类结果按用户消费能力划分。如果任务目标是用户运营后者可能更有业务价值即使 NMI 不高。因此NMI 更适合回答聚类结果与参考标签是否一致。而不是单独回答这个聚类结果是否一定最有用。七、标准化互信息与其他聚类指标的区别标准化互信息常和调整兰德指数、轮廓系数一起使用。1、NMI 与调整兰德指数调整兰德指数ARI和 NMI 都需要真实标签或参考标签。它们的区别在于• ARI 基于样本对关系关注哪些样本对被放在一起或分开是否一致• NMI 基于信息论关注两个分组结果共享了多少信息从通俗角度看• ARI 像是在检查“哪些样本该在一起、哪些样本不该在一起”• NMI 像是在检查“一个分组结果能提供多少关于另一个分组结果的信息”二者都不受标签编号置换影响因此都适合聚类评估。2、NMI 与轮廓系数轮廓系数不需要真实标签。它主要看• 簇内样本是否接近• 簇间样本是否分离因此轮廓系数属于内部评价指标。NMI 需要真实标签或参考分组。它主要看聚类结果是否接近参考标签因此属于外部评价指标。可以简单理解为• 轮廓系数没有标准答案时看聚类结构清不清楚• NMI有标准答案时看聚类结果和标准答案共享多少信息3、NMI 与准确率普通准确率不适合直接评价聚类结果因为聚类标签编号没有固定语义。例如• 真实标签0 0 1 1• 聚类标签1 1 0 0如果逐个比较编号准确率可能是 0。但从分组结构看结果是完全正确的。NMI 不受这种标签编号交换影响因此比准确率更适合聚类评估。八、标准化互信息的优势、局限与使用注意事项1、标准化互信息的主要优势NMI 的主要优势是适合比较聚类结果与真实标签的一致性。它有几个特点• 不受标签编号置换影响• 取值范围通常为 0 到 1便于解释• 基于信息论含义清晰• 可用于比较不同聚类算法• 对簇标签和真实标签数量不完全一致的情况也能计算从通俗角度看NMI 的优势在于它不看标签名字是否相同而看两套分组之间到底共享了多少信息。2、标准化互信息的主要局限NMI 也有局限。首先它需要真实标签或参考分组。如果完全没有真实标签就不能使用 NMI 来做外部评价。其次NMI 衡量的是与参考标签的一致性而不是聚类结构本身是否自然。如果参考标签与数据中的自然结构不同NMI 可能较低但聚类结果仍可能有探索价值。再次NMI 有时可能偏向簇数量较多的结果。当聚类被切得更细时可能会增加与真实标签共享的信息但这不一定代表聚类更有实际意义。此外NMI 是整体指标。它能给出总体相似程度但不能直接告诉我们哪些类别混淆最严重。如果需要分析具体错误结构可以结合混淆矩阵、交叉表或可视化。3、使用 NMI 时需要注意的问题使用 NMI 时需要注意以下几点• NMI 适合有真实标签或参考分组的聚类评估• 标签编号不同不影响 NMI• NMI 高表示接近参考标签但不一定代表业务价值最高• 如果没有真实标签应使用轮廓系数等内部评价指标• 最好结合 ARI、轮廓系数、簇规模和业务解释共同判断• 当聚类数量明显多于真实类别数量时要谨慎解释 NMI从实践角度看NMI 适合回答聚类结果与参考标签共享了多少信息。但它不应成为聚类评价的唯一依据。九、Python 示例下面给出三个简单示例用来帮助理解标准化互信息的计算和使用。示例 1直接计算标准化互信息from sklearn.metrics import normalized_mutual_info_score # 真实标签y_true [0, 0, 1, 1, 2, 2] # 聚类标签y_pred [1, 1, 0, 0, 2, 2] score normalized_mutual_info_score(y_true, y_pred) print(标准化互信息, score)这个例子中真实标签和聚类标签的编号并不完全相同。但是• 前两个样本被分在一起• 中间两个样本被分在一起• 最后两个样本被分在一起分组关系是一致的因此 NMI 可以达到较高值甚至为 1。这说明NMI 不关心标签编号是否相同只关心分组结构是否一致。示例 2使用 KMeans 聚类并计算 NMIfrom sklearn.datasets import load_irisfrom sklearn.cluster import KMeansfrom sklearn.metrics import normalized_mutual_info_scorefrom sklearn.preprocessing import StandardScaler # 加载鸢尾花数据集iris load_iris()X iris.datay_true iris.target # 标准化特征X_scaled StandardScaler().fit_transform(X) # KMeans 聚类model KMeans( n_clusters3, random_state42, n_init10) y_pred model.fit_predict(X_scaled) # 计算标准化互信息nmi normalized_mutual_info_score(y_true, y_pred) print(标准化互信息, nmi)这个例子中• y_true 是鸢尾花真实类别• y_pred 是 KMeans 得到的聚类标签• normalized_mutual_info_score() 用于计算二者的标准化互信息需要注意KMeans 并不知道真实类别它只是根据特征空间结构自动分组。NMI 用于事后评估这些分组与真实类别之间共享了多少信息。示例 3同时比较 NMI、ARI 与轮廓系数from sklearn.datasets import load_irisfrom sklearn.cluster import KMeansfrom sklearn.metrics import ( normalized_mutual_info_score, adjusted_rand_score, silhouette_score)from sklearn.preprocessing import StandardScaler # 加载数据iris load_iris()X iris.datay_true iris.target # 标准化X_scaled StandardScaler().fit_transform(X) # 比较不同聚类数量for k in range(2, 7): model KMeans( n_clustersk, random_state42, n_init10 ) y_pred model.fit_predict(X_scaled) nmi normalized_mutual_info_score(y_true, y_pred) ari adjusted_rand_score(y_true, y_pred) silhouette silhouette_score(X_scaled, y_pred) print( fK {k}, fNMI {nmi:.4f}, fARI {ari:.4f}, f轮廓系数 {silhouette:.4f} )这个例子中• NMI 衡量聚类标签与真实标签共享了多少信息• ARI 衡量聚类结果与真实标签的样本对关系是否一致• 轮廓系数不依赖真实标签用于衡量聚类结构是否清晰如果 NMI 和 ARI 都较高说明聚类结果较接近真实类别。如果轮廓系数也较高说明聚类结构本身也较清晰。如果这些指标不一致就需要进一步分析• 真实标签是否等于数据中的自然结构• 聚类数量是否合适• 特征是否需要标准化或重新选择• 聚类算法是否适合当前数据形状 小结标准化互信息是一种用于评价聚类结果与真实标签一致程度的指标。它基于信息论中的互信息衡量两个分组结果之间共享了多少信息并通过信息熵进行标准化使结果通常落在 0 到 1 之间。NMI 1 表示两个分组完全一致NMI 越接近 0 表示二者关系越弱。对初学者而言可以把 NMI 理解为知道聚类结果之后能在多大程度上帮助我们推断真实类别。“点赞有美意赞赏是鼓励”