性能度量
对机器学习的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,即性能度量(performance measure)
性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果;这意味着模型的“好坏”是相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于任务需求。
1. 回归模型的性能度量
给定样例集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) . . . ( x m , y m ) , } D=\{(x_1,y_1),(x_2,y_2)...(x_m,y_m),\} D={(x1,y1),(x2,y2)...(xm,ym),},其中 y i y_i yi是示例 x i x_i xi的真实输出。要评估学习器 f f f的性能,就要把学习器预测结果 f ( x ) f(x) f(x)与真实输出 y i y_i yi进行比较。
回归任务最常用的性能度量是“均方误差”(mean squared error)
E
(
f
;
D
)
=
1
m
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
2
(1)
E(f;D) = \frac{1}{m}\sum_{i=1}^m(f(x_i)-y_i)^2\tag1
E(f;D)=m1i=1∑m(f(xi)−yi)2(1)
更一般的,对于数据分布
D
D
D和概率密度函数
p
(
⋅
)
p(\cdot)
p(⋅),均方误差可描述为
E
(
f
;
D
)
=
∫
x
∼
D
(
f
(
x
)
−
y
)
2
p
(
x
)
d
x
(2)
E(f;D) = \int_{x\sim D}(f(x)-y)^2p(x)dx\tag2
E(f;D)=∫x∼D(f(x)−y)2p(x)dx(2)
2. 分类模型的性能度量
2.2 错误率与精度
错误率和精度是分类任务中最常用的两种性能度量,既适用于二分类任务,也适用于多分类任务。错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比例。对样例集
D
D
D分类错误率定义为
E
(
f
;
D
)
=
1
m
∑
i
=
1
m
(
f
(
x
i
)
≠
y
i
)
(3)
E(f;D) = \frac{1}{m}\sum_{i=1}^m(f(x_i)\neq y_i)\tag3
E(f;D)=m1i=1∑m(f(xi)=yi)(3)
精度则定义为
a
c
c
(
f
;
D
)
=
1
m
∑
i
=
1
m
(
f
(
x
i
)
=
y
i
)
=
1
−
E
(
f
;
D
)
(4)
acc(f;D) = \frac{1}{m}\sum_{i=1}^m(f(x_i)= y_i)\\ = 1-E(f;D)\tag4
acc(f;D)=m1i=1∑m(f(xi)=yi)=1−E(f;D)(4)
更一般的,对于数据分布
D
D
D和概率密度函数
p
(
⋅
)
p(\cdot)
p(⋅),错误率与精度可分别描述为
E
(
f
;
D
)
=
∫
x
∼
D
(
f
(
x
)
≠
y
)
2
p
(
x
)
d
x
(5)
E(f;D) = \int_{x\sim D}(f(x)\neq y)^2p(x)dx\tag5
E(f;D)=∫x∼D(f(x)=y)2p(x)dx(5)
a
c
c
(
f
;
D
)
=
∫
x
∼
D
(
f
(
x
)
=
y
)
2
p
(
x
)
d
x
=
1
−
E
(
f
;
D
)
(6)
acc(f;D) = \int_{x\sim D}(f(x)= y)^2p(x)dx\\ = 1-E(f;D)\tag6
acc(f;D)=∫x∼D(f(x)=y)2p(x)dx=1−E(f;D)(6)
2.3 查准率、查全率与F1
错误率和精度虽常用,但并不能满足所有任务需求。例如在信息检索中,我们经常会关心“检索出的信息中有多少比例是用户感兴趣的”,“用户感兴趣的信息中有多少被检索出来了”。“查准率”(precision)与“查全
率”(recall)是更为适用于此类需求的性能度量。
对于二分类问題,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative)四种情形,令 T P 、 F P 、 T N 、 F N TP、FP、TN、FN TP、FP、TN、FN分别表示其对应的样例数,显然有 T P + F P + T N + F N = m TP+FP+TN+FN=m TP+FP+TN+FN=m(m为样例总数)、分类结果的“混淆矩阵”(confusion matrix)如表所示:
| 真实情况 | 预测正例 | 预测反例 |
|---|---|---|
| 正例 | TP(真正例) | FN(假反例) |
| 反例 | FP(假正例) | TN(真反例) |
查准率
P
P
P与查全率
R
R
R分别定义为:
P
=
T
P
T
P
+
F
P
(7)
P = \frac{TP}{TP+FP}\tag7
P=TP+FPTP(7)
R
=
T
P
T
P
+
F
N
(8)
R = \frac{TP}{TP+FN}\tag8
R=TP+FNTP(8)
查准率与查全率是一对矛盾的度量。一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。
P-R曲线与平衡点示意图:

P-R图直观地显示出学习器在样本总体上的杳全率、查准率,在进行比较时:
- 若一个学习器的P-R曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者,例如图中学习器A的性能优于学习器C;
- 如果两个学习器的P-R曲线发生了交又,例如图中的A与B,则难以一般性地断言两者孰优孰劣,只能在具体的查准率或查全率条件下进行比较。
然而,在很多情形下,人们往往仍希望即使学习器A与BPR曲线发生也能比出个高低.这时一个比较合理的判据是比较P-R曲线下面积的大小,它在一定程度上表征了学习器在查准率和查全率上取得相对“双高“的比例,但这个值不太容易估算,因此,人们设计了一些综合考虑杳准率、杳全率的性能度量——”平衡点“(Break-EventPoint,筒称BEP)。它是“查准率=查全率”时的取值,例如图中学习器C的BEP是0.64,而基于BEP的比较,可认为学习器A优于B。
但BEP还是过于简化了些,更常用的是F1度量:
F
1
=
2
P
R
P
+
R
=
2
T
P
m
+
T
P
−
T
N
(9)
F1=\frac{2PR}{P+R} = \frac{2TP}{m+TP-TN}\tag9
F1=P+R2PR=m+TP−TN2TP(9)
在一些应用中,对查准率和查全率的重视程度有所不同.例如在商品推荐系统中,为了尽可能少打扰用户,更希望推荐内容确是用户感兴趣的,此时查准率更重要;而在逃犯信息检索系统中,更希望尽可能少漏掉逃犯,此时查全率更重要。
F
β
F_\beta
Fβ能表达出对查准率/查全率的不同偏好,它定义为
F
β
=
(
1
+
β
2
)
P
R
β
2
P
+
R
(10)
F_\beta=\frac{(1+\beta^2)PR}{\beta^2P+R}\tag{10}
Fβ=β2P+R(1+β2)PR(10)
其中
β
(
β
>
0
)
\beta(\beta>0)
β(β>0)度量了查全率对查准率的相对重要性。
β
=
1
\beta=1
β=1时为标准的
F
1
F1
F1;
β
>
1
\beta>1
β>1时查全率有更大影响;
β
<
1
\beta<1
β<1时查准率有更大影响。
多个二分类混淆矩阵的查准率和查全率参考西瓜书P32。
2.4 ROC与AUC
很多学习器是为测试样本产生一个实值或概率预测,然后将这个预测值与一个分类阈值(threshold)进行比较,若大于阈值则分为正类,否则为反类。例如,神经网络在一般情形下是对每个测试样本预测出一个
[
0
,
1
]
[0,1]
[0,1]之间的实值,然后将这个值与0.5进行比较,大于0.5则判为正例,否则为反例。这个实值或
概率预测结果的好坏,直接决定了学习器的泛化能力。实际上,根据这个实值或概率预测结果,可将测试样本进行排序,“最可能”是正例的排在最前面,“最不可能”是正例的排在最后面。这样,分类过程就相当于在这个排序中以某个“截断点”(cut point)将样本分为两部分,前一部分判作正例,后一部分则判作反例。
在不同的应用任务中,可根据任务需求来采用不同的截断点,例如若更重视“查准率”,则可选择排序中靠前的位置进行截断;若更重视“查全率”,则可选择靠后的位置进行截断,因此,排序质量的好坏,体现了综合考虑学习器在不同任务下的“期望泛化性能”的好坏,或者说,“一般情况下”泛化性能的好坏。ROC曲线则是从这个角度出发来研究学习器泛化性能的有力工具。
ROC全称是“受试者工作特征”(Receiver Operating Characteristic)曲线,与P-R曲线相似,根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别以它们为横、纵坐标作图,就得到了"ROC曲线”。与P-R曲线使用查准率、查全率为纵、横轴不同,ROC曲线的纵轴是“真正例率”(True Positive Rate,简称TPR),横轴是“假正例率”(False Positive Rate,简称FPR),两者分别定义为:
T
P
R
=
T
P
T
P
+
F
N
(11)
TPR = \frac{TP}{TP+FN}\tag{11}
TPR=TP+FNTP(11)
F
P
R
=
F
P
T
N
+
F
P
(12)
FPR = \frac{FP}{TN+FP}\tag{12}
FPR=TN+FPFP(12)
显示ROC曲线的图称为"ROC图”下图给出了一个示意图,显然,对角线对应于“随机猜测”模型,而点
(
0
,
1
)
(0,1)
(0,1)则对应于将所有正例排在所有反例之前的“理想模型”

现实任务中通常是利用有限个測试样例来绘制ROC图,此时仅能获得有限个(真正例率,假正例率)坐标对,无法产生上图(a)中的光滑ROC曲线,只能绘制出上图(b)所示的近似ROC曲线,绘图过程很简单:给定
m
+
m^+
m+个正例和
m
−
m^-
m−个反例,根据学习器预测结果对样例进行排序,然后把分类阈值设为最大,即把所有样例均预测为反例,此时真正例率和假正例率均为0,在坐标(0,0)处标记一个点.然后,将分类阈值依次设为每个样例的预测值,即依次将每个样例划分为正例,设前一个标记点坐标为
(
x
,
y
)
(x,y)
(x,y),当前若为真正例,则对应标记点的坐标为
(
x
,
y
+
1
m
+
)
(x,y+\frac{1}{m^+})
(x,y+m+1);当前若为假正例,则对应标记点的坐标为
(
x
+
1
m
−
,
y
)
(x+\frac{1}{m^-},y)
(x+m−1,y)。然后用线段连接相邻点即得.
进行学习器的比较时,与P-R图相似,若一个学习器的ROC曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者;若两个学习器的ROC曲线发生交叉,则难以一般性地断言两者孰优孰劣,此时如果一定要进行比较,则较为合理的判据是比较ROC曲线下的面积,即AUC(Area Under ROC Curve ),如上图所示,从定义可知,AUC可通过对ROC曲线下各部分的面积求和而得.假定ROC曲线是由坐标为
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
.
.
.
(
x
m
,
y
m
)
}
\{(x_1,y_1),(x_2,y_2)...(x_m,y_m)\}
{(x1,y1),(x2,y2)...(xm,ym)}的点按序连接而形成
{
x
1
=
0
,
x
m
=
1
}
\{x_1=0,x_m=1\}
{x1=0,xm=1},参见上图(b),则AUC可估算为:
A
U
C
=
1
2
∑
i
=
1
m
−
1
(
x
i
+
1
−
x
i
)
(
y
i
+
1
+
y
i
)
(13)
AUC=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)(y_{i+1}+y_i) \tag{13}
AUC=21i=1∑m−1(xi+1−xi)(yi+1+yi)(13)
Python实现:
ROC——sklearn.metrics.roc_curve
AUC——sklearn.metrics.auc
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.metrics import roc_curve, auc
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import label_binarize
from sklearn.multiclass import OneVsRestClassifier
# 加载数据集
iris = datasets.load_iris()
X = iris.data[:, :2]
y = iris.target
# 二值化标签(y)
y = label_binarize(y, classes=[0, 1, 2])
n_classes = y.shape[1]
random_state = np.random.RandomState(0)
# 混洗数据并划分训练测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.5,
random_state=0)
# 训练模型
classifier = OneVsRestClassifier(svm.SVC(kernel='linear', probability=True, random_state=random_state))
y_score = classifier.fit(X_train, y_train).decision_function(X_test) # 返回为肯定类别的概率估计值
# 计算每个类别的ROC和AUC
fpr = dict()
tpr = dict()
roc_auc = dict()
for i in range(n_classes):
fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i]) # 返回假正例率(依次增加)和真正例率(依次增加)
roc_auc[i] = auc(fpr[i], tpr[i])
# 计算micro-average ROC和AUC
fpr["micro"], tpr["micro"], _ = roc_curve(y_test.ravel(), y_score.ravel())
roc_auc["micro"] = auc(fpr["micro"], tpr["micro"])
plt.figure()
lw = 2
plt.plot(fpr[0], tpr[0], color='green', lw=lw, label='1# ROC curve (area = %0.3f)' % roc_auc[0])
plt.plot(fpr[1], tpr[1], color='blue', lw=lw, label='2# ROC curve (area = %0.3f)' % roc_auc[1])
plt.plot(fpr[2], tpr[2], color='red', lw=lw, label='3# ROC curve (area = %0.3f)' % roc_auc[2])
plt.plot(fpr["micro"], tpr["micro"], color='darkorange', lw=lw, label='micro ROC curve (area = %0.3f)' % roc_auc["micro"])
plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()


由分类图可以看出,蓝色部分(对应1#类型)分类完全正确,对应ROC曲线中的绿色曲线。土黄色部分(对应2#类型)对应ROC蓝色曲线,其正确率最低。鹅黄色部分(对应3#类型)对应ROC红色曲线。
2.5 代价敏感错误率与代价曲线
在现实任务中常会遇到这样的情况:不同类型的错误所造成的后果不同。例如在医疗诊断中,错误地把患者诊断为健康人与错误地把健康人诊断为患者,看起来都是犯了“一次错误”,但后者的影响是增加了进一步检查的麻烦,前者的后果却可能是丧失了拯救生命的最佳时机;再如,门禁系统错误地把可通行人员拦在门外,将使得用户体验不佳,但错误地把陌生人放进门内,则会造成严重的安全事故,为权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价”(unequal cost)。
以二分类任务为例,可根据任务的领域知识设定一个“代价矩阵”(cost matrix),如表所示,其中
c
o
s
t
i
j
cost_{ij}
costij,表示将第
i
i
i类样本预为第
j
j
j类样本的代价。一般来说,
c
o
s
t
i
i
=
0
cost_{ii}=0
costii=0;若将第0类判别为第1类所造成的损失更大,则
c
o
s
t
01
>
c
o
s
t
10
cost_{01}>cost_{10}
cost01>cost10;损失程度相差越大,
c
o
s
t
01
cost_{01}
cost01与
c
o
s
t
10
cost_{10}
cost10值的差别越大。
二分类代价矩阵:
| 真实类别 | 预测0类 | 预测1类 |
|---|---|---|
| 0类 | 0 | c o s t 01 cost_{01} cost01 |
| 1类 | c o s t 10 cost_{10} cost10 | 0 |
在非均等代价下,希望的不再是简单地最小化错误次数,而是希望最小化“总体代价”,若将表中的第0类作为正类、第1类作为反类,令
D
+
D^+
D+与
D
−
D^-
D−分别代表样例集D的正例子集和反例子集,则“代价敏感”(cost sensitive)错误率为
E
(
f
;
D
;
c
o
s
t
)
=
1
m
(
∑
x
∈
D
+
(
f
(
x
i
)
≠
y
i
)
c
o
s
t
01
+
∑
x
∈
D
−
(
f
(
x
i
)
≠
y
i
)
c
o
s
t
10
)
(14)
E(f;D;cost) = \frac{1}{m}(\sum_{x \in D^+}(f(x_i)\neq y_i)cost_{01}+\sum_{x \in D^-}(f(x_i)\neq y_i)cost_{10})\tag{14}
E(f;D;cost)=m1(x∈D+∑(f(xi)=yi)cost01+x∈D−∑(f(xi)=yi)cost10)(14)
非均等代价下,ROC曲线不能直接反映出学习器的期望总体代价,而“代价曲线”(cost curve)则可达到该目的.代价曲线图的横轴是取值为[0,1]的正例概率代价
P
(
+
)
c
o
s
t
=
p
⋅
c
o
s
t
01
p
⋅
c
o
s
t
01
+
(
1
−
p
)
⋅
c
o
s
t
10
(15)
P(+)_{cost}=\frac{p\cdot cost_{01}}{p\cdot cost_{01}+(1-p)\cdot cost_{10}} \tag{15}
P(+)cost=p⋅cost01+(1−p)⋅cost10p⋅cost01(15)
其中p是样例为正例的概率。纵轴是取值为[0,1]的归一化代价
c
o
s
t
n
o
r
m
=
F
N
R
⋅
p
⋅
c
o
s
t
01
+
F
P
R
⋅
(
1
−
p
)
⋅
c
o
s
t
10
p
⋅
c
o
s
t
01
+
(
1
−
p
)
⋅
c
o
s
t
10
(16)
cost_{norm} = \frac{FNR\cdot p\cdot cost_{01}+FPR\cdot (1-p)\cdot cost_{10}}{p\cdot cost_{01}+(1-p)\cdot cost_{10}}\tag{16}
costnorm=p⋅cost01+(1−p)⋅cost10FNR⋅p⋅cost01+FPR⋅(1−p)⋅cost10(16)
其中
F
P
R
FPR
FPR是式(12)定义的假正例率,
F
N
R
=
1
一
T
P
R
FNR=1一TPR
FNR=1一TPR是假反例率.代价曲线的绘制很简单:ROC曲线上每一点对应了代价平面上的一条线段,设ROC曲线上点的坐标为
(
T
P
R
,
F
P
R
)
(TPR,FPR)
(TPR,FPR),则可相应计算出
F
N
R
FNR
FNR,然后在代价平面上绘制一条从
(
0
,
F
P
R
)
(0,FPR)
(0,FPR)到
(
1
,
F
N
R
)
(1,FNR)
(1,FNR)的线段,线段下的面积即表示了该条件下的期总体代价;如此将ROC曲线上的每个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的面积即为在所有条件下学习器的期望总体代价,如图所示。

3. 聚类模型的性能度量
聚类模型的性能度量亦称聚类有效性指标(validity index)。与监督学习中的性能度量相似,对聚类结果,需要通过某种性能度量来评估其好坏;另一方面若明确了最终将要使用的性能度量,则可以直接将其作为聚类过程的优化目标,从而更好地得到符合要求的聚类结果。
聚类是将样本集 D D D划分为若干互不相交的子集,即样本簇。则聚类结果应当”簇内相似度“高且”簇间相似度“低。聚类的性能度量主要划分为两类:
- ”外部指标“,将聚类结果与某个参考指标相比较。
- ”内部指标“,直接考察聚类模型而不用任何参考模型。
对数据集
D
=
{
x
1
,
x
2
.
.
.
x
m
}
D=\{x_1,x_2...x_m\}
D={x1,x2...xm},假定通过聚类给出的簇划分为
C
=
{
C
1
,
C
2
,
.
.
.
,
C
k
}
C=\{C_1,C_2,...,C_k\}
C={C1,C2,...,Ck},参考模型划出的簇为
C
∗
=
{
C
1
∗
,
C
2
∗
,
.
.
.
,
C
s
∗
}
C^*=\{C_1^*,C_2^*,...,C_s^*\}
C∗={C1∗,C2∗,...,Cs∗}。相应的,令
λ
\lambda
λ与
λ
∗
\lambda^*
λ∗分别表示
C
C
C与
C
∗
C^*
C∗对应的簇标记向量。将样本两两配对,定义:
a
=
∣
S
S
∣
,
S
S
=
{
(
x
i
,
x
j
)
∣
λ
i
=
λ
j
,
λ
i
∗
=
λ
j
∗
,
i
<
j
}
a=|SS|,SS=\{(x_i,x_j)|\lambda_i=\lambda_j,\lambda_i^*=\lambda_j^*,i<j\}
a=∣SS∣,SS={(xi,xj)∣λi=λj,λi∗=λj∗,i<j}
b
=
∣
S
D
∣
,
S
D
=
{
(
x
i
,
x
j
)
∣
λ
i
=
λ
j
,
λ
i
∗
≠
λ
j
∗
,
i
<
j
}
b=|SD|,SD=\{(x_i,x_j)|\lambda_i=\lambda_j,\lambda_i^*\neq\lambda_j^*,i<j\}
b=∣SD∣,SD={(xi,xj)∣λi=λj,λi∗=λj∗,i<j}
c
=
∣
D
S
∣
,
D
S
=
{
(
x
i
,
x
j
)
∣
λ
i
≠
λ
j
,
λ
i
∗
=
λ
j
∗
,
i
<
j
}
c=|DS|,DS=\{(x_i,x_j)|\lambda_i\neq\lambda_j,\lambda_i^*=\lambda_j^*,i<j\}
c=∣DS∣,DS={(xi,xj)∣λi=λj,λi∗=λj∗,i<j}
d
=
∣
D
D
∣
,
D
D
=
{
(
x
i
,
x
j
)
∣
λ
i
≠
λ
j
,
λ
i
∗
≠
λ
j
∗
,
i
<
j
}
d=|DD|,DD=\{(x_i,x_j)|\lambda_i\neq\lambda_j,\lambda_i^*\neq\lambda_j^*,i<j\}
d=∣DD∣,DD={(xi,xj)∣λi=λj,λi∗=λj∗,i<j}
其中集合
S
S
SS
SS包含了在
C
C
C中隶属于相同簇且在
C
∗
C^*
C∗中也隶属于相同簇的样本对,集合
S
D
SD
SD包含了在
C
C
C中隶属于相同簇但在
C
∗
C^*
C∗中隶属于不同簇的样本对,…由于每个样本对
(
x
i
,
x
j
)
,
i
<
j
(x_i,x_j),i<j
(xi,xj),i<j仅能出现在一个集合中,因此
a
+
b
+
c
+
d
=
m
(
m
−
1
)
/
2
a+b+c+d=m(m-1)/2
a+b+c+d=m(m−1)/2成立。
基于上式,可导出以下这些常用的聚类性能度量外部指标:
Jaccard系数(Jaccard Coefficient):
J
C
=
a
a
+
b
+
c
JC=\frac{a}{a+b+c}
JC=a+b+ca
FMI系数(Fowlkes and Mallows Index):
F
M
I
=
a
a
+
b
⋅
a
a
+
c
FMI=\sqrt{\frac{a}{a+b}\cdot\frac{a}{a+c}}
FMI=a+ba⋅a+ca
Rand指数(Rand Index):
R
I
=
2
(
a
+
d
)
m
(
m
−
1
)
RI = \frac{2(a+d)}{m(m-1)}
RI=m(m−1)2(a+d)
上述性能度量指标的结果均在[0,1],值越大越好。
对数据集
D
=
{
x
1
,
x
2
.
.
.
x
m
}
D=\{x_1,x_2...x_m\}
D={x1,x2...xm},假定通过聚类给出的簇划分为
C
=
{
C
1
,
C
2
,
.
.
.
,
C
k
}
C=\{C_1,C_2,...,C_k\}
C={C1,C2,...,Ck},定义:
a
v
g
(
C
)
=
2
∣
C
∣
(
∣
C
∣
−
1
)
∑
1
≤
i
<
j
≤
∣
C
∣
d
i
s
t
(
x
i
,
x
j
)
avg(C)=\frac{2}{|C|(|C|-1)}\sum_{1\le i<j\le |C|}dist(x_i,x_j)
avg(C)=∣C∣(∣C∣−1)21≤i<j≤∣C∣∑dist(xi,xj)
d
i
a
m
(
C
)
=
m
a
x
1
≤
i
<
j
≤
∣
C
∣
d
i
s
t
(
x
i
,
x
j
)
diam(C)=max_{1\le i<j\le |C|}dist(x_i,x_j)
diam(C)=max1≤i<j≤∣C∣dist(xi,xj)
d
m
i
n
(
C
i
,
C
j
)
=
m
i
n
x
i
∈
C
i
,
x
j
∈
C
j
d
i
s
t
(
x
i
,
x
j
)
d_{min}(C_i,C_j)=min_{x_i\in C_i,x_j\in C_j}dist(x_i,x_j)
dmin(Ci,Cj)=minxi∈Ci,xj∈Cjdist(xi,xj)
d
c
e
n
(
C
i
,
C
j
)
=
d
i
s
t
(
μ
i
,
μ
j
)
d_{cen}(C_i,C_j)=dist(\mu_i,\mu_j)
dcen(Ci,Cj)=dist(μi,μj)
其中,
d
i
s
t
(
⋅
)
dist(\cdot)
dist(⋅)用于计算两个样本之间的距离;
μ
\mu
μ代表簇
C
C
C的中心点
μ
=
1
∣
C
∣
∑
1
≤
i
≤
∣
C
∣
x
i
\mu=\frac{1}{|C|}\sum_{1\le i\le |C|}x_i
μ=∣C∣1∑1≤i≤∣C∣xi。即
a
v
g
(
C
)
avg(C)
avg(C)对应簇
C
C
C内样本间的平均距离,
d
i
a
m
(
C
)
diam(C)
diam(C)对应簇
C
C
C内样本间的最远距离,
d
m
i
n
(
C
i
,
C
j
)
d_{min}(C_i,C_j)
dmin(Ci,Cj)对应簇
C
i
C_i
Ci与
C
j
C_j
Cj内样本间的最近距离,
d
c
e
n
(
C
i
,
C
j
)
d_{cen}(C_i,C_j)
dcen(Ci,Cj)对应簇
C
i
C_i
Ci与
C
j
C_j
Cj内中心点的距离。
基于上式,可导出以下这些常用的聚类性能度量内部指标:
D
B
DB
DB指数(Davies-Bouldin Index):
D
B
I
=
1
k
∑
i
=
1
k
m
a
x
i
≠
j
(
a
v
g
(
C
i
)
+
a
v
g
(
C
j
)
d
c
e
n
(
μ
i
,
μ
j
)
)
DBI=\frac{1}{k}\sum_{i=1}^kmax_{i\neq j}(\frac{avg(C_i)+avg(C_j)}{d_{cen}(\mu_i,\mu_j)})
DBI=k1i=1∑kmaxi=j(dcen(μi,μj)avg(Ci)+avg(Cj))
D
u
n
n
Dunn
Dunn指数(Dunn Index):
D
I
=
m
i
n
1
≤
i
≤
k
{
m
i
n
i
≠
j
(
d
m
i
n
(
C
i
,
C
j
)
m
a
x
1
≤
l
≤
k
d
i
a
m
(
C
l
)
)
}
DI=min_{1\le i\le k}\{min_{i\neq j}(\frac{d_{min}(C_i,C_j)}{max_{1\le l\le k}diam(C_l)})\}
DI=min1≤i≤k{mini=j(max1≤l≤kdiam(Cl)dmin(Ci,Cj))}
D
B
I
DBI
DBI的值越小越好,
D
I
DI
DI的值越大越好
除此之外还有F值、互信息、平均廓宽等性能度量方法。
本文详细介绍了机器学习中回归、分类和聚类模型的性能度量,包括均方误差、错误率、精度、查准率、查全率、F1分数、ROC曲线和AUC,以及代价敏感错误率等关键概念,旨在帮助理解模型评估的重要性及其适用场景。
—性能度量&spm=1001.2101.3001.5002&articleId=105291563&d=1&t=3&u=602e0482e6664467a1c49bdf49f4075f)
3303

被折叠的 条评论
为什么被折叠?



