聚类相关:
聚类算法(一)——DBSCAN
聚类算法(二)—— 优缺点对比
聚类算法(三)—— 评测方法1
聚类算法(三)—— 评测方法2
聚类算法(三)—— 评测方法3(代码)
聚类算法(四)—— 基于词语相似度的聚类算法(含代码)
聚类算法(五)——层次聚类 linkage (含代码)
聚类算法(六)——谱聚类 (含代码)
当前聚类评测指标
评测指标整体概述
- 聚类评测指标详细介绍 算法评测结果 Kmeans评测结果 link
内部评价指标
- 主要为无监督聚类评价指标,多采用类内节点和类间节点距离相关计算得到,对于我们目前算法评测不合适,因为本身依据关键词相似度得到的聚类结果
外部评价指标
- 主要有RI、ARI、FMI、JC、DI、Precision-Recall、AMI、homogeneity-completeness-V_measure
- RI、ARI、FMI、JC、DI、AMI可解释性不强,针对当前业务场景使用来说,Precision-Recall 和 homogeneity-completeness-V_measure 评测较为合适,可以反映预测结果的类别中是否都是同一类别数据以及同一类别是否被分到了一个类中。
评价算法原理
Precision-Recall
- 准确率和召回率,这里同常用的PR公式不同,含义也不相同,准确率表示预测同一类别中的样本实际为同一类别的指标;召回率表示标注中同一类别中的样本是否被分到同一类别的指标。
Precision = a/(a+b)
Recall = a/(a+c)
a : 两个样本在预测和标注中为同一类别的数目
b : 两个样本在预测中为同一类别,在标注中为不同类别的数目
c : 两个样本在预测中为不同类别,在标注中为同一类别的数目
homogeneity-completeness-V_measure
- Homogeneity (同质性):一个簇中是只包含一个类别的样本
- Completeness (完整性): 同类别样本被归类到相同簇中
- V_measure:Homogeneity 和 Completeness 的调和平均
sklearn的源码
需要先计算MI,然后根据MI计算其它值:
‘
M
I
(
U
,
V
)
=
∑
i
=
1
∣
U
∣
∑
j
=
1
∣
V
∣
∣
U
i
∩
V
j
∣
N
log
N
∣
U
i
∩
V
j
∣
∣
U
i
∣
∣
V
j
∣
‘
`MI(U,V)=\sum_{i=1}^{|U|} \sum_{j=1}^{|V|} \frac{|U_i\cap V_j|}{N} \log\frac{N|U_i \cap V_j|}{|U_i||V_j|}`
‘MI(U,V)=∑i=1∣U∣∑j=1∣V∣N∣Ui∩Vj∣log∣Ui∣∣Vj∣N∣Ui∩Vj∣‘
‘
h
=
M
I
(
U
,
V
)
/
e
n
t
r
o
p
y
(
U
)
‘
`h=MI(U,V)/entropy(U)`
‘h=MI(U,V)/entropy(U)‘
‘
c
=
M
I
(
U
,
V
)
/
e
n
t
r
o
p
y
(
V
)
‘
`c=MI(U,V)/entropy(V)`
‘c=MI(U,V)/entropy(V)‘
上面详细介绍中涉及的公式存在问题
根据 源码原理及一些相关参考,整理下个人理解:
其中U为预测类,V为标记类
MI为互信息(Mutual Information)
将p(k,l) p(k), p(l)统计值带入即可转化为上面MI(U,V)公式。
贴一个互信息、信息熵之间联系的图,便于理解这一评测指标的原理
假设粉色的圆圈为预测结果类信息熵,黄色的圆圈为实际类信息熵。那么交叠的部分为互信息
H = MI/H(U), 相当于交叠的部分在粉色圆圈中占的比例,也就是 预测结果和实际结果的重叠部分占预测结果的比例,预测结果越准确,重叠越多,H值越高。
C = MI/H(V),相当于交叠的部分在黄色圆圈中占的比例,也就是 预测结果和实际结果的重叠部分占实际类别的比例,预测结果越准确,重叠越多,C值越高。
最后调和平均