ACC(Accuracy,准确率)和NMI(Normalized Mutual Information,标准化互信息)是机器学习中常用的两种评估指标,主要用于聚类任务的性能评估。
1. ACC(准确率)
含义:
ACC是衡量聚类结果与真实标签匹配程度的指标。它计算的是正确分配的样本占总样本的比例。需要注意的是,在聚类任务中,簇的标签(如“簇1”、“簇2”)通常是无序的,因此需要通过某种方法(如匈牙利算法)将预测的簇标签与真实的类别标签进行最优匹配,然后再计算准确率。
计算公式:
A
C
C
=
正确匹配的样本数
总样本数
ACC = \frac{\text{正确匹配的样本数}}{\text{总样本数}}
ACC=总样本数正确匹配的样本数
计算步骤:
- 将预测的簇标签与真实标签进行最优匹配(通常用匈牙利算法)。
- 计算匹配后正确分类的样本数。
- 除以总样本数。
2. NMI(标准化互信息)
含义:
NMI是基于信息论的指标,用于衡量两个划分(预测簇和真实类别)之间的相似性。它考虑了聚类结果与真实标签之间的互信息,并通过标准化消除簇数量或样本分布的影响,取值范围在[0, 1]之间。NMI越高,说明聚类结果与真实标签越一致。
计算公式:
N
M
I
(
U
,
V
)
=
I
(
U
;
V
)
H
(
U
)
⋅
H
(
V
)
NMI(U, V) = \frac{I(U; V)}{\sqrt{H(U) \cdot H(V)}}
NMI(U,V)=H(U)⋅H(V)I(U;V)
- I ( U ; V ) I(U; V) I(U;V):预测划分 U U U 和真实划分 V V V 之间的互信息。
- H ( U ) H(U) H(U) 和 H ( V ) H(V) H(V):分别是预测划分和真实划分的熵。
- 互信息 I ( U ; V ) = H ( U ) + H ( V ) − H ( U , V ) I(U; V) = H(U) + H(V) - H(U, V) I(U;V)=H(U)+H(V)−H(U,V)。
示例计算
假设我们有6个样本,真实标签和预测簇如下:
样本 | 真实标签 (V) | 预测簇 (U) |
---|---|---|
样本1 | A | 1 |
样本2 | A | 1 |
样本3 | A | 2 |
样本4 | B | 2 |
样本5 | B | 2 |
样本6 | B | 3 |
ACC计算
-
最优匹配:
- 真实标签:A (样本1, 2, 3), B (样本4, 5, 6)
- 预测簇:簇1 (样本1, 2), 簇2 (样本3, 4, 5), 簇3 (样本6)
- 通过匈牙利算法匹配:
- 簇1 → A(样本1, 2正确,样本3应为A但分到簇2)
- 簇2 → B(样本4, 5正确,样本3应为A)
- 簇3 → B(样本6正确)
- 假设匹配为:簇1 → A,簇2 → B,簇3 → B。
-
正确匹配的样本:
- 样本1 (A → 1, 正确)
- 样本2 (A → 1, 正确)
- 样本3 (A → 2, 错误)
- 样本4 (B → 2, 正确)
- 样本5 (B → 2, 正确)
- 样本6 (B → 3, 正确)
- 正确数 = 5,错误数 = 1。
-
ACC:
A C C = 5 6 ≈ 0.8333 ( 83.33 % ) ACC = \frac{5}{6} \approx 0.8333 \quad (83.33\%) ACC=65≈0.8333(83.33%)
NMI计算
-
计算熵 H ( U ) H(U) H(U) 和 H ( V ) H(V) H(V):
- 真实标签
V
V
V:A (3个), B (3个)
H ( V ) = − ( 3 6 log 2 3 6 + 3 6 log 2 3 6 ) = − ( 0.5 log 2 0.5 + 0.5 log 2 0.5 ) = 1 H(V) = -\left(\frac{3}{6} \log_2 \frac{3}{6} + \frac{3}{6} \log_2 \frac{3}{6}\right) = - (0.5 \log_2 0.5 + 0.5 \log_2 0.5) = 1 H(V)=−(63log263+63log263)=−(0.5log20.5+0.5log20.5)=1 - 预测簇
U
U
U:簇1 (2个), 簇2 (3个), 簇3 (1个)
H ( U ) = − ( 2 6 log 2 2 6 + 3 6 log 2 3 6 + 1 6 log 2 1 6 ) H(U) = -\left(\frac{2}{6} \log_2 \frac{2}{6} + \frac{3}{6} \log_2 \frac{3}{6} + \frac{1}{6} \log_2 \frac{1}{6}\right) H(U)=−(62log262+63log263+61log261)
H ( U ) = − ( 0.333 log 2 0.333 + 0.5 log 2 0.5 + 0.167 log 2 0.167 ) ≈ 1.459 H(U) = -(0.333 \log_2 0.333 + 0.5 \log_2 0.5 + 0.167 \log_2 0.167) \approx 1.459 H(U)=−(0.333log20.333+0.5log20.5+0.167log20.167)≈1.459
- 真实标签
V
V
V:A (3个), B (3个)
-
计算联合熵 H ( U , V ) H(U, V) H(U,V):
- 联合分布:
- A & 簇1: 2个
- A & 簇2: 1个
- B & 簇2: 2个
- B & 簇3: 1个
-
H
(
U
,
V
)
=
−
∑
p
(
u
,
v
)
log
2
p
(
u
,
v
)
H(U, V) = -\sum p(u, v) \log_2 p(u, v)
H(U,V)=−∑p(u,v)log2p(u,v)
H ( U , V ) = − ( 2 6 log 2 2 6 + 1 6 log 2 1 6 + 2 6 log 2 2 6 + 1 6 log 2 1 6 ) ≈ 1.918 H(U, V) = -\left(\frac{2}{6} \log_2 \frac{2}{6} + \frac{1}{6} \log_2 \frac{1}{6} + \frac{2}{6} \log_2 \frac{2}{6} + \frac{1}{6} \log_2 \frac{1}{6}\right) \approx 1.918 H(U,V)=−(62log262+61log261+62log262+61log261)≈1.918
- 联合分布:
-
计算互信息 I ( U ; V ) I(U; V) I(U;V):
I ( U ; V ) = H ( U ) + H ( V ) − H ( U , V ) = 1.459 + 1 − 1.918 ≈ 0.541 I(U; V) = H(U) + H(V) - H(U, V) = 1.459 + 1 - 1.918 \approx 0.541 I(U;V)=H(U)+H(V)−H(U,V)=1.459+1−1.918≈0.541 -
计算NMI:
N M I = I ( U ; V ) H ( U ) ⋅ H ( V ) = 0.541 1.459 ⋅ 1 ≈ 0.448 NMI = \frac{I(U; V)}{\sqrt{H(U) \cdot H(V)}} = \frac{0.541}{\sqrt{1.459 \cdot 1}} \approx 0.448 NMI=H(U)⋅H(V)I(U;V)=1.459⋅10.541≈0.448
总结
- ACC = 0.8333:说明83.33%的样本被正确分配。
- NMI = 0.448:说明预测簇和真实标签之间有一定的相似性,但不是非常高。