赞
踩
`第一章主要是阅读性为主,通过西瓜案例引入机器学习概念,本章开始介绍机器学习模型评估内容
直接将训练集D划分为互斥的集合, D = S ∪ T , S ∩ T = ∅ D=S\cup T, S\cap T = \emptyset D=S∪T,S∩T=∅
30%的测试样本+70%训练样本,在测试样本中有30%的样本被错误分类,则精度为1-30%
避免因为数据划分过程引入额外的偏差而对最终结果产生影响,例如在分类任务中至少要保持样本的类别相似
单次使用留出法得到的估计结果往往不太稳定可靠,一般采用多次划分,结果取平均值
常见做法是大约2/3~4/5的样本用于训练,剩余样本用于测试
“交叉验证法”(cross validation) 将数据集D划分为k个大小相似的互斥子集,即 D = D 1 ∪ D 2 ∪ . . . ∪ D k , D i ∩ D j = ∅ ( i ≠ j ) D=D_1\cup D_2\cup ...\cup D_k,D_i\cap D_j = \emptyset(i\ne j) D=D1∪D2∪...∪Dk,Di∩Dj=∅(i=j),每个子集 D i D_i Di都尽可能保持数据分布的一致性,即从D中通过分层采样得到。每次k-1个子集作为训练集,余下的作为测试集,最终返回k次训练的均值。
k折方法,训练集比D小,会引起一些因为训练样本规模不同而导致的估计误差
调参(parameter tuning)对算法的参数进行设定
很多参数都是属于实数域的,所以无法尝试所有参数,通常选择范围步长,例 [ 0 , 0.2 ] [0,0.2] [0,0.2]范围内以0.05为步长,实际选择要评估的候选参数有5个
在模型选择完成后,学习算法和参数配置已选定,此时应该用数据集D重新训练模型,这个模型在训练过程中使用了所有m个样本,这才是我们最终提交给用户的模型
训练数据划分为训练集和验证集(validation set) 基于验证集上的性能来进行模型参数选择和调参
对样例集D,分类错误率定义为
E
(
f
;
D
)
=
1
m
∑
i
=
1
m
Π
(
f
(
x
i
)
≠
y
i
)
E(f;D) = \frac{1}{m}\sum_{i=1}^m\Pi(f(x_i)\ne y_i)
E(f;D)=m1i=1∑mΠ(f(xi)=yi)
Π
(
⋅
)
\Pi(\cdot)
Π(⋅)计数符号,精度定义为
a
c
c
(
f
;
D
)
=
1
m
∑
i
=
1
m
Π
(
f
(
x
i
)
=
y
i
)
=
1
−
E
(
f
;
D
)
acc(f;D)=1mm∑i=1Π(f(xi)=yi)=1−E(f;D)
acc(f;D)=m1i=1∑mΠ(f(xi)=yi)=1−E(f;D)
对于连续分布
D
D
D和概率密度函数
p
(
⋅
)
p(\cdot)
p(⋅):
E
(
f
;
D
)
=
∫
x
∼
D
Π
(
f
(
x
)
≠
y
)
p
(
x
)
d
x
a
c
c
(
f
;
D
)
=
∫
x
∼
D
Π
(
f
(
x
)
=
y
)
p
(
x
)
d
x
=
1
−
E
(
f
;
D
)
E(f;D) = \int_{x\sim D} \Pi (f(x) \ne y)p(x)dx\\ acc(f;D)=∫x∼DΠ(f(x)=y)p(x)dx=1−E(f;D)
E(f;D)=∫x∼DΠ(f(x)=y)p(x)dxacc(f;D)=∫x∼DΠ(f(x)=y)p(x)dx=1−E(f;D)
我们希望比较的是泛化性能,然而试验评估的是测试集上的性能,两者未必相同。测试集上的性能与测试集本身的选择有很大关系,使用不同大小的测试集会得到不同的结果,即使大小相同,测试样例不同,结果也会不同。很多机器学习算法本身就有一定的随机性,即便用相同的参数设置在同一个测试集上多次运行,其结果也会有不同
对两个学习器A和B,若我们使用k折交叉检验法得到测试错误率分别为
ϵ
1
A
,
ϵ
2
A
,
.
.
.
,
ϵ
k
A
,
\epsilon_1^A,\epsilon_2^A,...,\epsilon_k^A,
ϵ1A,ϵ2A,...,ϵkA,和
ϵ
1
B
,
ϵ
2
B
,
.
.
.
,
ϵ
k
B
,
\epsilon_1^B,\epsilon_2^B,...,\epsilon_k^B,
ϵ1B,ϵ2B,...,ϵkB,,
ϵ
i
A
\epsilon_i^A
ϵiA和
ϵ
i
B
\epsilon_i^B
ϵiB是相同的第i折训练/试验集上得到的结果,则可用k交叉验证 “成对t检验”(paired t-tests) 来进行检验。
每对结果求差
Δ
i
=
ϵ
i
A
−
ϵ
i
B
\Delta_i = \epsilon_i^A - \epsilon_i^B
Δi=ϵiA−ϵiB,再求差值
Δ
1
,
Δ
2
,
.
.
.
,
Δ
k
\Delta_1,\Delta_2,...,\Delta_k
Δ1,Δ2,...,Δk的均值
μ
\mu
μ和方差
σ
2
\sigma^2
σ2,变量
τ
t
=
∣
k
μ
σ
∣
\tau_t = \left| \frac{\sqrt{k}\mu}{\sigma}\right|
τt=∣∣∣∣∣σk
μ∣∣∣∣∣
小于临界值
t
α
/
2
,
k
−
1
t_{\alpha/2,k-1}
tα/2,k−1,则假设不能被拒绝,即认为两个学习器的性能没有显著差别。
交叉检验并不独立,会导致过高估计假设成立概率,为缓解这个问题,可采用 “
5
×
2
5\times2
5×2交叉验证法”,仅计算第一次2折交叉验证的两个结果的平均值
μ
=
0.5
(
Δ
1
1
+
Δ
1
2
)
\mu=0.5(\Delta_1^1+\Delta_1^2)
μ=0.5(Δ11+Δ12),但对每次2折实验结果都计算其方差
σ
i
2
=
(
Δ
i
1
−
Δ
i
1
+
Δ
i
2
2
)
2
+
(
Δ
i
2
−
Δ
i
1
+
Δ
i
2
2
)
2
\sigma_i^2=(\Delta_i^1-\frac{\Delta_i^1+\Delta_i^2}{2})^2+(\Delta_i^2-\frac{\Delta_i^1+\Delta_i^2}{2})^2
σi2=(Δi1−2Δi1+Δi2)2+(Δi2−2Δi1+Δi2)2,变量
τ
t
=
μ
0.2
∑
i
=
1
5
σ
i
2
\tau_t=\frac{\mu}{\sqrt{0.2\sum_{i=1}^5\sigma_i^2}}
τt=0.2∑i=15σi2
μ
服从自由度为5的t分布,其双边检验的临界值
t
α
/
2
,
5
t_{\alpha/2,5}
tα/2,5
交叉验证t检验和McNemar检验都是在一个数据集上比较两个算法的性能。
假设我们用
D
1
,
D
2
,
D
3
,
D
4
D_1,D_2,D_3,D_4
D1,D2,D3,D4四个数据集对算法A、B、C、D进行比较。首先使用留出法或交叉验证法得到每个算法在每个数据集上的测试结果,然后在每个数据集上根据算法测试性能的由好到坏排序,并赋予序值1,2,…;然后得到平均序值
N个数据集上比较k个算法,令
r
i
r_i
ri表示第i个算法的平均序值,
r
i
r_i
ri服从正态分布,其均值和方差分别为
(
k
+
1
)
/
2
(k+1)/2
(k+1)/2和
(
k
2
−
1
)
/
12
(k^2-1)/12
(k2−1)/12,变量
τ
χ
2
=
k
−
1
k
⋅
12
N
k
2
−
1
∑
i
=
1
k
(
r
i
−
k
+
1
2
)
2
=
12
N
k
(
k
+
1
)
(
∑
i
=
1
k
r
i
2
−
k
(
k
+
1
)
2
4
)
τχ2=k−1k⋅12Nk2−1k∑i=1(ri−k+12)2=12Nk(k+1)(k∑i=1r2i−k(k+1)24)
τχ2=kk−1⋅k2−112Ni=1∑k(ri−2k+1)2=k(k+1)12N(i=1∑kri2−4k(k+1)2)
k和N都较大时,服从自由度k-1的
χ
2
\chi^2
χ2分布
上述“原始Friedman”检验过于保守,现在通常使用变量
τ
F
=
(
N
−
1
)
τ
χ
2
N
(
k
−
1
)
−
τ
χ
2
\tau_F = \frac{(N-1)\tau_{\chi^2}}{N(k-1)-\tau_{\chi^2}}
τF=N(k−1)−τχ2(N−1)τχ2
τ
F
\tau_F
τF服从自由度为k-1和(k-1)(N-1)的F分布
若“所有算法的性能相同”这个假设被拒绝,则说明算法的性能显著不同,这是需要 “后验检验”(post-hoc test) ,常用的Nemenyi后验检验,计算出平均序值差别的临界域
C
D
=
q
α
k
(
k
+
1
)
6
N
CD=q_{\alpha}\sqrt{\frac{k(k+1)}{6N}}
CD=qα6Nk(k+1)
若两个算法的平均序值之差超过了临界值域CD,则以相应的置信度拒绝“两个算法性能相同”这一假设
纵轴是算法,圆点表示各个算法的平均序值,标出临界值域,两个算法有交叠,则说明两个算法没有显著差别
本章主要难点在于假设检验,涉及到一些随机数学的知识,后续单独起一章总结假设检验。本章的内容总结不够精炼
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。