模型类型
(决策树、线性回归、神经网络…)·模型参数
和(算法)超参数
。这一步是模型选择的核心,而比较不同模型(即不同参数)的性能是这一步的核心,“比较” 方法进一步细化为三步
评估方法
,上篇文章已经详细介绍过了性能度量
,本文进行介绍假设检验
方法,本文进行介绍性能度量performance measure
。不同的性能度量可能导致不同的评估结果(即模型的 “好坏” 是相对的),我们应基于任务需求设计性能度量均方误差mean squared error
:对于离散和连续的数据分布,如下定义均方误差分类错误率
:对于离散和连续的数据分布,如下定义分类错误率精度
:对于离散和连续的数据分布,如下定义分类精度如果我们想进一步考察评估分类性能,只用错误率和精度就力不从心了。考虑最简单的二分类问题,利用错误率和精度可以评估出多少比例的样本被分类错误,但是无法考察 “判断为正例的样本中有多少比例真的是正例”、“所有正样本中有多少被分类正确” 这样的细化指标。对于二分类问题,考虑样本真实类别和预测类别的所有组合情况,可以得到如下的 混淆矩阵confusion matrix
(其中
T
P
+
F
P
+
T
N
+
F
N
=
样例总数
TP+FP+TN+FN=样例总数
TP+FP+TN+FN=样例总数)
这样我们可以进一步提出针对二分类问题的两个指标:
查准率precision
P
P
P:预测为正例的样本中真正正样本的比例查全率/召回率recall
R
R
R:真正正样本中预测为正例的比例查准率和查全率是一对矛盾的度量,一个量较高时另一个就较低
以判断西瓜是不是好瓜为例
- 若想提高查全率(将好瓜尽可能多地选出来)可以增加选瓜的数量,极端情况下所有瓜全判断为好瓜,则所有好瓜都一定选出, R = 1 R=1 R=1。但此时也误判了大量坏瓜,导致查准率 P P P 低
- 若想提高查准率若(希望选的瓜中好瓜比例尽可能高)可以只挑选最有把握的瓜,但这样就难免会漏掉不少好瓜,使得查全率较低
通常分类器会输出一个样本判断为正例的概率,可以把所有样本按判正的概率排序,调整概率阈值使得判正的样本数从 0 逐一增加到全体样本,每次计算查准率和查全率,这样就能绘制 查准率-查全率曲线(P-R曲线)
考虑如何用查准和查全率这两个评估指标对比模型
综合考虑查准和查全率的性能度量主要有以下三种
平衡点 Break-Event Point,BEP
:
P
=
R
P=R
P=R 时的值,如上图中学习器 A 的 BEP 就是 0.8,这样也能比较模型性能,但是有些过于简化了F1度量
:查准率和查全率的调和平均,定义为Fβ度量
:查准率和查全率的调和平均,定义为
- 例如在商品推荐系统中,为了尽可能少打扰用户,更希望推荐内容确是用户感兴趣的,此时查准率更重要;而在逃犯信息检索系统中,更希望尽可能少漏掉逃犯,此时查全率更重要
- 相比算数平均和几何平均,调和平均更重视较小值
有时我们想综合考虑多个混淆矩阵来对比模型,比如
这时有两种方式进行综合
宏查准率macro-P
、宏查全率macro-R
、宏F1 macro-F1
微查准率micro-P
、微查全率micro-R
、微F1 micro-F1
上面介绍 P-R 曲线时已经提到了大多数分类器的分类原理,即首先对测试样本产生一个实值或概率值,用它和设定的分类阈值比较,大于就分为正类,反之分为负类。我们可以按分类器输出对测试样本排序,最可能是正例的排在最前,最不可能是正例的排在最后,并根据任务需求设置不同的分类阈值截断点
注意到,这个排序本身的质量好坏,体现了综合考虑不同任务下的 “期望泛化性能” 的好坏,即 “一般情况下” 泛化性能的好坏。ROC 和 AUC 就是从模型输出排序质量的角度
来评估分类器泛化性能的度量标准
ROC受试者工作特征
:是一个类似 P-R 曲线的曲线,也是逐一调整分类阈值,每次计算两个值作为横纵坐标作图,分别为
假正例率FPR
:真正负样本中预测为正例的比例真正例率TPR
:真正正样本中预测为正例的比例(同查全率)这样就能绘制出 ROC 曲线图如下
显然,图中的虚线对角线对应于 “随机猜测” 模型,而点
(
0
,
1
)
(0,1)
(0,1) 对应于将所有正例排在反例之前的 “理想模型”,对于任意给定的假正例率,对应的真正例率越高越好,从整体上看,就是曲线上凸越多越好。和 P-R 曲线类似,在利用 ROC 指标评估对比模型时
AUC(Area Under ROC Curve)
使用有限样本集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
m
,
y
m
)
}
D = \{(\pmb{x}_1,y_1),(\pmb{x}_2,y_2),...,(\pmb{x}_m,y_m)\}
D={(xx1,y1),(xx2,y2),...,(xxm,ym)} 评估时,ROC 曲线如上图 b 所示,可以将其分割成很多长方形估计面积(AUC) ,定义为
AUC
=
1
2
∑
i
=
1
m
−
1
(
x
i
+
1
−
x
i
)
⋅
(
y
i
+
y
i
+
1
)
\text{AUC} = \frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)·(y_i+y_{i+1})
AUC=21i=1∑m−1(xi+1−xi)⋅(yi+yi+1) 形式化地看,AUC 考虑的是样本预测的排序质量,因此它与排序误差有紧密联系,给定
m
+
m^+
m+ 个正样本和
m
−
m^-
m− 个负样本,令
D
+
,
D
−
D^+,D^-
D+,D− 分别表示正负样本集合,则排序损失定义为
l
r
a
n
k
=
1
m
+
m
−
∑
x
+
∈
D
+
∑
x
−
∈
D
−
(
I
(
f
(
x
+
)
<
f
(
x
−
)
)
+
1
2
I
(
f
(
x
+
)
=
f
(
x
−
)
)
)
\mathcal{l}_{rank} = \frac{1}{m^+m^-}\sum_{x^+\in D^+}\sum_{x^-\in D^-} \Big(\mathbb{I}\big(f(x^+)
AUC
=
1
−
l
r
a
n
k
\text{AUC} = 1-\mathcal{l}_{rank}
AUC=1−lrank
1.2.2 节介绍 Fβ
度量时,提到了对于不同的任务,对查全率和查准率之间需求的倾向可能不等;类似的,在某个特定任务中,各个类别分类出错导致的代价也可能不等
例如在医疗诊断中,错误地把患者诊断为健康人与错误地把健康人诊断为患者,看起来都是犯了"一次错误"但后者的影响是增加了进→步检查的麻烦,前者的后果却可能是丧失了拯救生命的最佳时机
前面介绍的性能度量都只是从各类预测错误的次数/比例的角度去构造,隐式地假设了不同的错误代价均等。考虑到不同错误的代价,对于一个多分类任务,设
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 类看作正/负类,
D
+
,
D
−
D^+,D^-
D+,D− 分别表示正负样本集合,则可如下计算出 代价敏感cost-sensitive 错误率
E
(
f
;
D
;
c
o
s
t
)
=
1
m
(
∑
x
i
∈
D
+
I
(
f
(
x
i
)
≠
y
i
)
×
c
o
s
t
01
+
∑
x
i
∈
D
−
I
(
f
(
x
i
)
≠
y
i
)
×
c
o
s
t
10
)
E(f;D;cost) = \frac{1}{m}\Big(\sum_{x_i\in D^+}\mathbb{I}\big(f(x_i)\neq y_i\big)\times cost_{01}+\sum_{x_i\in D^-}\mathbb{I}\big(f(x_i)\neq y_i\big)\times cost_{10} \Big)
E(f;D;cost)=m1(xi∈D+∑I(f(xi)=yi)×cost01+xi∈D−∑I(f(xi)=yi)×cost10) 这个式子也可以简单地推广到连续的数据分别和多分类问题
代价曲线 cost curve
可以在考虑非均等代价的情况下体现学习器的期望总体代价,具体而言
正例概率代价
是把正样本误判为负的代价在代价度量中的重要性,取值
[
0
,
1
]
[0,1]
[0,1],如下(其中
p
p
p 是样本为正的概率)归一化代价
是各种错误判断情况的综合代价,取值
[
0
,
1
]
[0,1]
[0,1],如下直观上看,给定一组 ( F P R , F N R ) (FPR,FNR) (FPR,FNR) 参数,即给定一个学习器的分类性能,就对应 “归一化代价-正例概率代价“ 图中一条从 ( 0 , F P R ) (0,FPR) (0,FPR) 到 ( 1 , F N R ) (1,FNR) (1,FNR) 的线段,反应了各个代价不等情况下的期望总代价
- 横轴代表所有代价不等情况,即从 “只在意正样本误判(不在意负样本误判)”,到 “不在意正样本误判(只在意负样本误判)”
- 纵轴反映各种倾向情况下,某个 ( F P R , F N R ) (FPR,FNR) (FPR,FNR) 参数对应的学习器的期望总代价
在评估模型进行比较时,我们要综合考虑所有可能的
(
F
P
R
,
F
N
R
)
(FPR,FNR)
(FPR,FNR) 参数情况,这一步通过把 ROC 曲线转化为代价曲线来实现。具体而言,把 ROC 曲线上的每一个点转化为对应的
(
F
P
R
,
F
N
R
)
(FPR,FNR)
(FPR,FNR) 参数,然后在 “归一化代价-正例概率代价“ 图中把所有参数对应的线段都画出来,然后取所有线段的下界,就得到了 代价曲线
,它围出的面积即为在所有条件下学习器的期望总体代价,如下所示
假设检验
,比如用简单的错误率
ϵ
\epsilon
ϵ 作为性能度量,我们可以先对学习器的泛化错误率做出假设
ϵ
=
ϵ
0
\epsilon=\epsilon_0
ϵ=ϵ0,然后再用假设检验方法计算该假设的置信度、拒绝域等统计信息。基于假设检验结果我们可推断出,若在测试集上观察到学习器 A 比 B 好,则 A 的泛化性能是否在统计意义上优于 B,以及这个结论的把握有多大交叉验证 t 检验
、McNemar 检验
、Friedman检验
与 Nemenyi后续检验
等方法,还是比较复杂,待续