文章目录
- 第二章 模型评估和选择
- 2.1经验误差与过拟合
- 2.2评估方法
- 2.2.1留出法
- 2.2.2交叉验证法
- 2.2.3自助法
- 2.2.4调参与最终模型
- 2.3性能度量
- 2.3.1错误率与精度
- 2.3.2查准率、查全率和F1
- 2.3.3ROC与AUC
- 2.3.4代价敏感错误率与代价曲线
第二章 模型评估和选择
2.1经验误差与过拟合
通常我们把分类错误的样本数占样本总数的比例称为“错误率”(errorrate),即如果在m个样本中有α个样本分类错误,则错误率E= a/m;相应的,1 - a/m称为“精度”(accuracy),即“精度=1-错误率”.更一般地,我们把学习器的实际预测输出与样本的真实输出之间的差异称为“误差”(error),学习器在训练集上的误差称为“训练误差”(training error)或“经验误差”(empirical error),在新样本上的误差称为“泛化误差”(generalizationerror).显然,我们希望得到泛化误差小的学习器.然而,我们事先并不知道新样本是什么样,实际能做的是努力使经验误差最小化.在很多情况下,我们可以学得一个经验误差很小、在训练集上表现很好的学习器。
我们实际希望的,是在新样本上能表现得很好的学习器.为了达到这个目的,应该从训练样本中尽可能学出适用于所有潜在样本的“普遍规律”,这样才能在遇到新样本时做出正确的判别.然而,当学习器把训练样本学得“太好”了的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降.这种现象在机器学习中称为“过拟合”(overfitting).与“过拟合”相对的是“欠拟合”(underfitting),这是指对训练样本的一般性质尚未学好。
2.2评估方法
将数据集D分为训练集S和测试集T。
要尽可能地保持数据分布地一致性
2.2.1留出法
将D分为互斥的两个数据集S和T。
2.2.2交叉验证法
将数据分为k个相似的互斥子集。其中,k-1个子集作为训练集,余下子集为测试集。共有k组训练/测试集,返回这k次的平均结果。
2.2.3自助法
给定包含m个样本的数据集D,我们对它进行采样产生数据集D’:每次随机从D中挑选一个样本,将其拷贝放入D’,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,我们就得到了包含m个样本的数据集D’,这就是自助采样的结果.显然,D中有一部分样本会在D’中多次出现,而另一部分样本不出现.可以做一个简单的估计,样本在m次采样中始终不被采到的概率是
(
1
−
1
m
)
m
\left(1-\frac{1}{m}\right)^m
(1−m1)m,
取极限得到
lim
m
→
∞
(
1
−
1
m
)
m
↦
1
e
≈
0.368
取极限得到\lim\limits_{m\to\infty}\left(1-\frac{1}{m}\right)^m\mapsto\frac{1}{e}\approx0.368
取极限得到m→∞lim(1−m1)m↦e1≈0.368
即通过自助采样,初始数据集D中约有36.8%的样本未出现在采样数据集D’中.于是我们可将D’用作训练集,D\D’用作测试集;这样,实际评估的模型与期望评估的模型都使用m个训练样本,而我们仍有数据总量约1/3的、没在训练集中出现的样本用于测试.这样的测试结果,亦称“包外估计”.
自助法在数据集较小、难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处.
2.2.4调参与最终模型
大多数学习算法都有些参数(parameter)需要设定,参数配置不同,学得模型的性能往往有显著差别.因此,在进行模型评估与选择时,除了要对适用学习算法进行选择,还需对算法参数进行设定,这就是通常所说的“参数调节”或简称“调参”(parameter tuning).
很多强大的学习算法有大量参数需设定;这将导致极大的调参工程量,以至于在不少应用任务中,参数调得好不好往往对最终模型性能有关键性影响.
给定包含m个样本的数据集D,在模型评估与选择过程中由于需要留出一部分数据进行评估测试,事实上我们只使用了一部分数据训练模型.因此,在模型选择完成后,学习算法和参数配置已选定,此时应该用数据集D重新训练模型.这个模型在训练过程中使用了所有m个样本,这才是我们最终提交给用户的模型.
另外,需注意的是,我们通常把学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集常称为“验证集”(validation set).例如,在研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参.
2.3性能度量
在预测任务中,给定样例集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
…
,
(
x
m
,
y
m
)
}
D=\{(x_1,y_1),(x_2, y_2),\dots ,(x_m,y_m)\}
D={(x1,y1),(x2,y2),…,(xm,ym)},其中
y
i
y_i
yi是示例
x
i
x_i
xi的真实标记.要评估学习器f的性能,就要把学习器预测结果
f
(
x
)
f(x)
f(x)与真实标记
y
y
y进行比较.回归任务最常用的性能度量是“均方误差”
E
(
f
;
D
)
=
1
m
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
2
E(f;D)=\frac{1}{m}\sum_{i=1}^m\left(f\left(\boldsymbol{x}_i\right)-y_i\right)^2
E(f;D)=m1i=1∑m(f(xi)−yi)2
更一般的,对于数据分布D和概率密度函数p,均方误差可描述为
E
(
f
;
D
)
=
∫
x
∼
D
(
f
(
x
)
−
y
)
2
p
(
x
)
d
x
E(f;\mathcal{D})=\int_{\boldsymbol{x}\sim\mathcal{D}}\left(f\left(\boldsymbol{x}\right)-y\right)^2p(\boldsymbol{x})\text{d}\boldsymbol{x}
E(f;D)=∫x∼D(f(x)−y)2p(x)dx
2.3.1错误率与精度
错误率:
E
(
f
;
D
)
=
1
m
∑
i
=
1
m
I
(
f
(
x
i
)
≠
y
i
)
\begin{aligned} & \\ && E(f;D) && =\frac{1}{m}\sum_{i=1}^{m}\mathbb{I}\left(f\left(\boldsymbol{x}_{i}\right)\neq y_{i}\right) \end{aligned}
E(f;D)=m1i=1∑mI(f(xi)=yi)
精度:
acc
(
f
;
D
)
=
1
m
∑
i
=
1
m
I
(
f
(
x
i
)
=
y
i
)
=
1
−
E
(
f
;
D
)
.
\begin{aligned} \operatorname{acc}(f;D)& =\frac{1}{m}\sum_{i=1}^m\mathbb{I}\left(f\left(\boldsymbol{x}_i\right)=y_i\right) \\ &=1-E(f;D). \end{aligned}
acc(f;D)=m1i=1∑mI(f(xi)=yi)=1−E(f;D).
2.3.2查准率、查全率和F1
对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative)四种情形,令TP、FP、TN、FN分别表示其对应的样例数,则显然有TP+FP+TN+FN = 样例总数.分类结果的“混淆矩阵”:
真实情况 | 预测结果 | |
正例 | 反例 | |
正例 | TP(真正例) | FN(假反例) |
反例 | FP(假正例) | TN(真反例) |
查准率P与查全率R分别定义为:
P
=
T
P
T
P
+
F
P
P={\frac{T P}{T P+F P}}
P=TP+FPTP
R
=
T
P
T
P
+
F
N
R={\frac{T P}{T P+F N}}
R=TP+FNTP
一般来说,两者矛盾:
基于平衡点(BEP)的比较,可认为A优于B。
F1度量:
F
1
=
2
×
P
×
R
P
+
R
=
2
×
T
P
样例总数
+
T
P
−
T
N
F1=\frac{2\times P\times R}{P+R}=\frac{2\times TP}{样例总数+TP-TN}
F1=P+R2×P×R=样例总数+TP−TN2×TP
F1的一般度量形式:
F
β
=
(
1
+
β
2
)
×
P
×
R
(
β
2
×
P
)
+
R
F_\beta=\frac{(1+\beta^2)\times P\times R}{(\beta^2\times P)+R}
Fβ=(β2×P)+R(1+β2)×P×R
其中
β
>
0
\beta>0
β>0度量了查全率对查准率的相对重要性.
β
=
1
\beta = 1
β=1时退化为标准的F1;
β
>
1
\beta>1
β>1时查全率有更大影响;
β
<
1
\beta <1
β<1时查准率有更大影响.
n个二位类混淆矩阵上综合考察查准率和查全率:
m
a
c
r
o
−
P
=
1
n
∑
i
=
1
∞
P
i
,
m
a
c
r
o
−
R
=
1
n
∑
i
=
1
n
R
i
,
m
a
c
r
o
−
F
1
=
2
×
m
a
c
r
o
−
P
×
m
a
c
r
o
−
R
m
a
c
r
o
−
P
+
m
a
c
r
o
−
R
.
\begin{gathered} \mathrm{macro-}P=\frac{1}{n}\sum_{i=1}^{\infty}P_{i}, \\ \mathrm{macro-}R=\frac{1}{n}\sum_{i=1}^{n}R_{i}, \\ \mathrm{macro-}F1=\frac{2\times\mathrm{macro-}P\times\mathrm{macro-}R}{\mathrm{macro-}P+\mathrm{macro-}R}. \end{gathered}
macro−P=n1i=1∑∞Pi,macro−R=n1i=1∑nRi,macro−F1=macro−P+macro−R2×macro−P×macro−R.
2.3.3ROC与AUC
ROC全称是“受试者工作特征”(Receiver Operating Characteristic)曲线。根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别以它们为横、纵坐标作图,就得到了“ROC曲线”.与P-R曲线使用查准率、查全率为纵、横轴不同, ROC曲线的纵轴是“真正例率”(True Positive Rate,简称TPR),横轴是“假正例率”(False PositiveRate,简称FPR),基于表2.1中的符号,两者分别定义为
T
P
R
=
T
P
T
P
+
F
N
,
F
P
R
=
F
P
T
N
+
F
P
.
\begin{gathered} {\mathrm{TPR}} ={\frac{T P}{T P+F N}}, \\ \mathop{\mathrm{FPR}} =\frac{F P}{T N+F P}. \end{gathered}
TPR=TP+FNTP,FPR=TN+FPFP.
进行学习器的比较时,与P-R图相似,若一个学习器的ROC曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者;若两个学习器的ROC曲线发生交叉,则难以一般性地断言两者孰优孰劣.此时如果一定要进行比较,则较为合理的判据是比较ROC曲线下的面积,即 AUC (Area UnderROC Curve),如上图所示.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)\cdot(y_i+y_{i+1})
AUC=21i=1∑m−1(xi+1−xi)⋅(yi+yi+1)
形式化地看,AUC考虑的是样本预测的排序质量,因此它与排序误差有紧密联系.给定m+个正例和m-个反例,令D+和D-分别表示正、反例集合,则排序“损失”(loss)定义为
ℓ
r
a
n
k
=
1
m
+
m
−
∑
x
+
∈
D
+
∑
x
−
∈
D
−
(
I
(
f
(
x
+
)
<
f
(
x
−
)
)
+
1
2
I
(
f
(
x
+
)
=
f
(
x
−
)
)
)
\ell_{rank}=\frac{1}{m^+m^-}\sum_{\boldsymbol{x}^+\in D^+}\sum\limits_{\boldsymbol{x}^-\in D^-}\left(\mathbb{I}\left(f(\boldsymbol{x}^+)<f(\boldsymbol{x}^-)\right)+\frac{1}{2}\mathbb{I}\left(f(\boldsymbol{x}^+)=f(\boldsymbol{x}^-)\right)\right)
ℓrank=m+m−1x+∈D+∑x−∈D−∑(I(f(x+)<f(x−))+21I(f(x+)=f(x−)))
即考虑每一对正、反例,若正例的预测值小于反例,则记一个“罚分”,若相等,则记0.5个“罚分”.容易看出,
ℓ
r
a
n
k
\ell_{rank}
ℓrank对应的是ROC曲线之上的面积:若一个正例在ROC曲线上对应标记点的坐标为
(
x
,
y
)
(x, y)
(x,y),则x恰是排序在其之前的反例所占的比例,即假正例率.因此有
AUC
=
1
−
ℓ
r
a
n
k
\text {AUC} =1- \ell_{rank}
AUC=1−ℓrank
2.3.4代价敏感错误率与代价曲线
二分类代价矩阵真实类别 | 预测类别 | |
第0类 | 第1类 | |
第0类 | 0 | cost_01 |
第1类 | cost_10 | 0 |
cost为错误的代价,不同错误可造成不同的代价。
“代价敏感”错误率为:
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;c o s t)=\frac{1}{m}\left(\sum_{\boldsymbol{x}_{i}\in D^{+}}\mathbb{I}\left(f\left(\boldsymbol{x}_{i}\right)\neq y_{i}\right)\times cost_{01} +\sum\limits_{\boldsymbol{x}_i\in D^-}\mathbb{I}\left(f\left(\boldsymbol{x}_i\right)\neq y_i\right)\times {cost}_{10} \right)
E(f;D;cost)=m1(xi∈D+∑I(f(xi)=yi)×cost01+xi∈D−∑I(f(xi)=yi)×cost10)
在非均等代价下,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
P(+)cost=\frac{p\times cost_{01}}{p\times cost_{01}+(1-p)\times cost_{10}}
P(+)cost=p×cost01+(1−p)×cost10p×cost01
其中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
c o s t_{n o r m}={\frac{\mathrm{FNR}\times p\times c o s t_{01}+\mathrm{FPR}\times(1-p)\times c o s t_{10}}{p\times c o s t_{01}+(1-p)\times c o s t_{10}}}
costnorm=p×cost01+(1−p)×cost10FNR×p×cost01+FPR×(1−p)×cost10