目录
1 基础知识
错误率:分类错误的样本数占样本总数的比例。
精度:精度=1-错误率。
误差:学习器的实际预测输出与样本的真实输出之间的差异。
训练误差或经验误差:学习器在训练集上的误差。
泛化误差:在新样本上的误差。
过拟合:学习器吧训练样本学习的过于好,在训练集上性能好,在新样本上性能差,泛化能力低。
欠拟合:对训练样本的一般性质尚未学好。通常由学习能力低下而造成的。较为容易克服。
由于无法直接获得泛化误差,而训练误差由于过拟合现象存在而不适合作为标准。要寻求某些结果进行模型评估和选择。
2 评估方法
可通过实验测试来对学习器的泛化误差进行评估并进而做出选择。为此,需使用一个“测试集”(testing set)来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”(testing error)作为泛化误差的近似。
测试集应该尽可能与训练集互斥。
2.1留出法
“留出法”(hold-out)直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即
D
=
S
∪
T
,
S
∩
T
=
⊘
D=S\cup T,S\cap T=\oslash
D=S∪T,S∩T=⊘.在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。
训练/测试集的划分要尽可能保持数据的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。
即便在给定训练/测试集的样本比例后,仍存在多种划分方法对初始数据集D进行分割。
2.2 交叉验证法
交叉验证法先将数据集D划分为k个大小相似的互斥子集,每个子集
D
i
D_i
Di 都尽可能保持数据分布的一致性,即从D中通过分层采样得到,然后,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。
与留出法相似,将数据集D划分为k个子集同样存在多种划分方式.为减小因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复p次,最终的评估结果是这p次k折交叉验证结果的均值。
留一法:交叉验证法的一个特例,数据集D中包含m个样本,令k=m。
2.3 自助法
以自助采样法为基础.给定包含m个样本的数据集 D,我们对它进行采样产生数据集
D
1
D^1
D1 每次随机从 D中挑选一个样本,将其拷贝放入
D
1
D^1
D1:然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,我们就得到了包含 m个样本的数据集
D
1
D^1
D1 这就是自助采样的结果。
将
D
1
D^1
D1用作训练集,
D
/
D
1
D/D^1
D/D1用作测试集。
自助法在数据集较小、难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。
2.4 调参与最终模型
参数配置不同,学得模型的性能有显著差别。
学习算法的很多参数是在实数范围内取值,因此,对每种参数配置都训练出模型来是不可行的。现实中常用的做法,是对每个参数选定一个范围和变化步长,例如在[0,0.2]范围内以 0.05 为步长,则实际要评估的候选参数值有5个,最终是从这5个候选值中产生选定值.显然,这样选定的参数值往往不是“最佳”值,但这是在计算开销和性能估计之间进行折中的结果,通过这个折中,学习过程才变得可行,事实上,即便在进行这样的折中后,调参往往仍很困难.
3 性能度量
回归任务最常用的性能度量是均方误差:
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(x_i\right)-y_i\right)^2
E(f;D)=m1i=1∑m(f(xi)−yi)2
更一般的,对于数据分布D和概率密度函数,均方误差可描述为
E
(
f
;
D
)
=
∫
x
∼
D
(
f
(
x
)
−
y
)
2
p
(
x
)
d
x
E(f ; \mathcal{D})=\int_{\boldsymbol{x} \sim \mathcal{D}}(f(\boldsymbol{x})-y)^2 p(\boldsymbol{x}) \mathrm{d} \boldsymbol{x}
E(f;D)=∫x∼D(f(x)−y)2p(x)dx
3.1 错误率与精度
对样例集
D
,
D_,
D,,分类错误率定义为:
E
(
f
;
D
)
=
1
m
∑
i
=
1
m
I
(
f
(
x
i
)
≠
y
i
)
E(f ; D)=\frac{1}{m} \sum_{i=1}^m \mathbb{I}\left(f\left(\boldsymbol{x}_i\right) \neq y_i\right)
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).
更一般的对于数据分布D和概率密度函数p可将上述两式定义为:
E
(
f
;
D
)
=
∫
x
∼
D
I
(
f
(
x
)
≠
y
)
p
(
x
)
d
x
E(f ; \mathcal{D})=\int_{\boldsymbol{x} \sim \mathcal{D}} \mathbb{I}(f(\boldsymbol{x}) \neq y) p(\boldsymbol{x}) \mathrm{d} \boldsymbol{x}
E(f;D)=∫x∼DI(f(x)=y)p(x)dx
acc
(
f
;
D
)
=
∫
x
∼
D
I
(
f
(
x
)
=
y
)
p
(
x
)
d
x
=
1
−
E
(
f
;
D
)
.
\begin{aligned} \operatorname{acc}(f ; \mathcal{D}) & =\int_{\boldsymbol{x} \sim \mathcal{D}} \mathbb{I}(f(\boldsymbol{x})=y) p(\boldsymbol{x}) \mathrm{d} \boldsymbol{x} \\ & =1-E(f ; \mathcal{D}) . \end{aligned}
acc(f;D)=∫x∼DI(f(x)=y)p(x)dx=1−E(f;D).
3.2 查准率,查全率与F1
对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例、假正例、真反例、假反例四种情形,令TP、FP、TN、FN分别表示其对应的样例数,则显然有TP+FP+TN+FN=样例总数.分类结果的“混淆矩阵”如下图。
查准率P和查全率R分别定义为:
P
=
T
P
T
P
+
F
P
,
R
=
T
P
T
P
+
F
N
.
\begin{aligned} & P=\frac{T P}{T P+F P}, \\ & R=\frac{T P}{T P+F N} . \end{aligned}
P=TP+FPTP,R=TP+FNTP.
P与R是一对矛盾的度量。
下图为P-R曲线与平衡点示意图。
平衡点(BEP)是查准率=查全率时的取值,是一个综合考虑查准率,查全率的性能度量。
F1度量:
F
1
=
2
×
P
×
R
P
+
R
=
2
×
T
P
样例总数
+
T
P
−
T
N
.
F 1=\frac{2 \times P \times R}{P+R}=\frac{2 \times T P}{\text { 样例总数 }+T P-T N} \text {. }
F1=P+R2×P×R= 样例总数 +TP−TN2×TP.
F1度量的一般形式——
F
β
F_\beta
Fβ,能表达出对查准率/查全率的不同偏好,定义为:
F
β
=
(
1
+
β
2
)
×
P
×
R
(
β
2
×
P
)
+
R
,
F_\beta=\frac{\left(1+\beta^2\right) \times P \times R}{\left(\beta^2 \times P\right)+R},
Fβ=(β2×P)+R(1+β2)×P×R,
其中
β
>
0
\beta>0
β>0 度量了查全率对查准率的相对重要性 [Van Rijsbergen, 1979].
β
=
1
\beta=1
β=1时退化为标准的
F
1
;
β
>
1
F 1 ; \beta>1
F1;β>1 时查全率有更大影响;
β
<
1
\beta<1
β<1 时查准率有更大影响.
还可先将各混淆矩阵的对应元素进行平均, 得到
T
P
、
F
P
、
T
N
、
F
N
T P 、 F P 、 T N 、 F N
TP、FP、TN、FN 的平均值, 分别记为
T
P
‾
、
F
P
‾
、
T
N
‾
、
F
N
‾
\overline{T P} 、 \overline{F P} 、 \overline{T N} 、 \overline{F N}
TP、FP、TN、FN, 再基于这些平均值计算出 “微查准率” (micro-
P
P
P )、“微查全率” (micro-
R
R
R ) 和 “微F1” (micro-
F
1
F 1
F1 ):
micro-
P
=
T
P
‾
T
P
‾
+
F
P
‾
,
\text { micro- } P=\frac{\overline{T P}}{\overline{T P}+\overline{F P}},
micro- P=TP+FPTP,
micro- R = T P ‾ T P ‾ + F N ‾ , micro- F 1 = 2 × micro P × micro − R micro P + micro R . \begin{gathered} \text { micro- } R=\frac{\overline{T P}}{\overline{T P}+\overline{F N}}, \\ \text { micro- } F 1=\frac{2 \times \text { micro } P \times \text { micro }-R}{\text { micro } P+\text { micro } R} . \end{gathered} micro- R=TP+FNTP, micro- F1= micro P+ micro R2× micro P× micro −R.
3.3 ROC和AUC
ROC 曲线的纵轴是真正例率(TPR),横轴是假正例率(FPR),两者分别定义为:
T
P
R
=
T
P
T
P
+
F
N
TPR=\frac{TP}{TP+FN}
TPR=TP+FNTP
F
P
R
=
F
P
T
N
+
F
P
FPR=\frac{FP}{TN+FP}
FPR=TN+FPFP
3.4 代价敏感错误率与代价曲线
为权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价”。
以二分类任务为例,我们可根据任务的领域知识设定一个“代价矩阵”(cost matrix),如表2.2所示,其中 costij表示将第i类样本预测为第j类样本的代价:一般来说,costii=0;若将第0类判别为第1类所造成的损失更大,则 costo1>cost1o;损失程度相差越大,costo1与 cost1o 值的差别越大。
在非均等代价下, ROC 曲线不能直接反映出学习器的期望总体代价, 而 “代价曲线” (cost curve) 则可达到该目的. 代价曲线图的横轴是取值为
[
0
,
1
]
[0,1]
[0,1]的正例概率代价
P
(
+
)
cost
=
p
×
cost
01
p
×
cost
01
+
(
1
−
p
)
×
cost
10
,
P(+) \operatorname{cost}=\frac{p \times \operatorname{cost}_{01}}{p \times \operatorname{cost}_{01}+(1-p) \times \operatorname{cost}_{10}},
P(+)cost=p×cost01+(1−p)×cost10p×cost01,
其中
p
p
p 是样例为正例的概率; 纵轴是取值为
[
0
,
1
]
[0,1]
[0,1] 的归一化代价
cost
norm
=
F
N
R
×
p
×
cost
01
+
F
P
R
×
(
1
−
p
)
×
cost
10
p
×
cost
01
+
(
1
−
p
)
×
cost
10
,
\operatorname{cost}_{\text {norm }}=\frac{\mathrm{FNR} \times p \times \operatorname{cost}_{01}+\mathrm{FPR} \times(1-p) \times \operatorname{cost}_{10}}{p \times \operatorname{cost}_{01}+(1-p) \times \operatorname{cost}_{10}},
costnorm =p×cost01+(1−p)×cost10FNR×p×cost01+FPR×(1−p)×cost10,
4 比较检验
4.1 假设检验
假设检验中的“假设”是对学习器泛化错误率分布的某种判断或猜想,例如 ξ = ξ 0 \xi =\xi _0 ξ=ξ0.现实任务中我们并不知道学习器的泛化错误率,只能获知其测试错误率.泛化错误率与测试错误率未必相同,但直观上,二者接近的可能性应比较大,相差很远的可能性比较小.因此,可根据测试错误率估推出泛化错误率的分布.
泛化错误率为
ϵ
\epsilon
ϵ 的学习器被测得测试错误率为
ϵ
^
\hat{\epsilon}
ϵ^ 的概率:
P
(
ϵ
^
;
ϵ
)
=
(
m
ϵ
^
×
m
)
ϵ
ϵ
^
×
m
(
1
−
ϵ
)
m
−
ϵ
^
×
m
.
P(\hat{\epsilon} ; \epsilon)=\binom{m}{\hat{\epsilon} \times m} \epsilon^{\hat{\epsilon} \times m}(1-\epsilon)^{m-\hat{\epsilon} \times m} .
P(ϵ^;ϵ)=(ϵ^×mm)ϵϵ^×m(1−ϵ)m−ϵ^×m.
1
−
α
1-\alpha
1−α 的概率内所能观测到的最大错误率如下式计算. 这里
1
−
α
1-\alpha
1−α 反映了结论的 “置信度”
ϵ
ˉ
=
max
ϵ
s.t.
∑
i
=
ϵ
0
×
m
+
1
m
(
m
i
)
ϵ
i
(
1
−
ϵ
)
m
−
i
<
α
.
\bar{\epsilon}=\max \epsilon \text { s.t. } \sum_{i=\epsilon_0 \times m+1}^m\binom{m}{i} \epsilon^i(1-\epsilon)^{m-i}<\alpha .
ϵˉ=maxϵ s.t. i=ϵ0×m+1∑m(im)ϵi(1−ϵ)m−i<α.
假定我们得到了
k
k
k 个测试错误率,
ϵ
^
1
,
ϵ
^
2
,
…
,
ϵ
^
k
\hat{\epsilon}_1, \hat{\epsilon}_2, \ldots, \hat{\epsilon}_k
ϵ^1,ϵ^2,…,ϵ^k, 则平均测试错误率
μ
\mu
μ 和方差
σ
2
\sigma^2
σ2 为
μ
=
1
k
∑
i
=
1
k
ϵ
^
i
,
σ
2
=
1
k
−
1
∑
i
=
1
k
(
ϵ
^
i
−
μ
)
2
.
\begin{gathered} \mu=\frac{1}{k} \sum_{i=1}^k \hat{\epsilon}_i, \\ \sigma^2=\frac{1}{k-1} \sum_{i=1}^k\left(\hat{\epsilon}_i-\mu\right)^2 . \end{gathered}
μ=k1i=1∑kϵ^i,σ2=k−11i=1∑k(ϵ^i−μ)2.
考虑到这
k
k
k 个测试错误率可看作泛化错误率
ϵ
0
\epsilon_0
ϵ0 的独立采样, 则变量
τ
t
=
k
(
μ
−
ϵ
0
)
σ
\tau_t=\frac{\sqrt{k}\left(\mu-\epsilon_0\right)}{\sigma}
τt=σk(μ−ϵ0)
服从自由度为K-1的t分布。
4.2 交叉验证t检验
对两个学习器 A 和 B , 若我们使用 k 折交叉验证法得到的测试错误率分别为 ϵ i A 和 ϵ i B \epsilon_{i}^{A}和\epsilon_{i}^{B} ϵiA和ϵiB,则可用 k 折交叉验证 “成对 t 检验” 来进行比较检验. 这里的基本思想是若两个学习器的性能相同, 则它们使用相同的训练/测试集得到的测试错误率应相同, 即 ϵ i A = ϵ i B \epsilon_{i}^{A}=\epsilon_{i}^{B} ϵiA=ϵiB.
4.3 McNemar检验
对二分类问题,使用留出法不仅可估计出学习器A和B的测试错误率,还可获得两学习器分类结果的差别。
5 偏差与方差
偏差-方差分解是解释学习算法泛化性能的一种工具。
学习算法的期望预
测为
f
ˉ
(
x
)
=
E
D
[
f
(
x
;
D
)
]
,
\bar{f}(\boldsymbol{x})=\mathbb{E}_D[f(\boldsymbol{x} ; D)],
fˉ(x)=ED[f(x;D)],
使用样本数相同的不同训练集产生的方差为
var
(
x
)
=
E
D
[
(
f
(
x
;
D
)
−
f
ˉ
(
x
)
)
2
]
,
\operatorname{var}(\boldsymbol{x})=\mathbb{E}_D\left[(f(\boldsymbol{x} ; D)-\bar{f}(\boldsymbol{x}))^2\right],
var(x)=ED[(f(x;D)−fˉ(x))2],
噪声为
ε
2
=
E
D
[
(
y
D
−
y
)
2
]
.
\varepsilon^2=\mathbb{E}_D\left[\left(y_D-y\right)^2\right] .
ε2=ED[(yD−y)2].
期望输出与真实标记的差别称为偏差(bias), 即
bias
2
(
x
)
=
(
f
ˉ
(
x
)
−
y
)
2
.
\operatorname{bias}^2(\boldsymbol{x})=(\bar{f}(\boldsymbol{x})-y)^2 .
bias2(x)=(fˉ(x)−y)2.
泛化误差可分解为偏差,方差和噪声之和。