机器学习中的算法性能假设检验
一个数据集、单个算法
一次留出法----二项检验
m个样本的测试集上,泛化错误率为
ϵ
\epsilon
ϵ的学习器被测得测试错误率为
ϵ
^
\hat{\epsilon}
ϵ^的概率是:
P
(
ϵ
^
;
ϵ
)
=
(
m
c
^
×
m
)
ϵ
e
^
×
m
(
1
−
ϵ
)
m
−
e
^
×
m
P(\hat{\epsilon} ; \epsilon)=\left(\begin{array}{c} {m} \\ {\hat{c} \times m} \end{array}\right) \epsilon^{\hat{e} \times m}(1-\epsilon)^{m-\hat{e} \times m}
P(ϵ^;ϵ)=(mc^×m)ϵe^×m(1−ϵ)m−e^×m
服从二项分布,可使用“二项检验”进行检验。
多次重复留出法或交叉验证法----t检验
多次重复留出法或者交叉验证法进行训练/测试,会得到多个测试错误率,此时可使用“t检验”。假定获得了k个测试错误率,
ϵ
1
^
、
ϵ
2
^
、
ϵ
3
^
…
ϵ
^
k
\hat{\epsilon1}、\hat{\epsilon2}、\hat{\epsilon3}…\hat{\epsilon}k
ϵ1^、ϵ2^、ϵ3^…ϵ^k,则平均测试错误率为
X
ˉ
\bar{X}
Xˉ和
S
2
S^{2}
S2。
X
ˉ
=
1
k
∑
i
=
1
k
ε
^
i
,
S
2
=
1
k
−
1
∑
i
=
1
k
(
ε
^
i
−
X
ˉ
)
2
\bar{X}=\frac{1}{k} \sum_{i=1}^{k} \hat{\varepsilon}_{i} \quad, \quad S^{2}=\frac{1}{k-1} \sum_{i=1}^{k}\left(\hat{\varepsilon}_{i}-\bar{X}\right)^{2}
Xˉ=k1i=1∑kε^i,S2=k−11i=1∑k(ε^i−Xˉ)2
根据中心极限定理可知,
(
X
ˉ
−
ε
)
S
/
n
∼
t
(
n
−
1
)
\frac{(\bar{X}-\varepsilon)}{S / \sqrt{n}} \sim t(\mathrm{n}-1)
S/n(Xˉ−ε)∼t(n−1)
t分布示意图及常用双边临界值表如下所示:
一个数据集、两个算法----交叉验证t检验
对于一个数据集,两个算法A和B,使用k折交叉验证法得到的测试错误率分别为
ε
^
i
A
、
ε
^
i
B
(
i
=
1
,
2
,
,
,
k
)
\hat{\varepsilon}_{iA} 、 \hat{\varepsilon}_{iB}(i=1,2,,,k)
ε^iA、ε^iB(i=1,2,,,k)。可采用k折交叉验证“成对t检验”来进行检验。
基本思想是若两个算法的性能相同,则他们使用相同的训练集/测试集得到的测试错误率应相同,即
ε
^
i
A
=
ε
^
i
B
\hat{\varepsilon}_{iA} = \hat{\varepsilon}_{iB}
ε^iA=ε^iB。
对每一组测试错误率求差值,
Δ
i
=
ε
^
A
−
ε
^
B
\Delta_{i}=\hat{\varepsilon}_{A}-\hat{\varepsilon}_{B}
Δi=ε^A−ε^B,若两个算法性能相同,则差值均值为零。可根据
Δ
1
、
Δ
2
、
.
.
.
Δ
k
、
\Delta_{1、}\Delta_{2、}... \Delta_{k、}
Δ1、Δ2、...Δk、进行t检验,计算出差值的均值
∣
Δ
⃗
∣
|\vec{\Delta}|
∣Δ∣和方差
S
2
S^2
S2,则:
∣
(
Δ
ˉ
−
(
ε
A
−
ε
B
)
⟩
∣
S
/
k
∼
t
(
k
−
1
)
\frac{\left|\left(\bar{\Delta}-\left(\varepsilon_{A}-\varepsilon_{B}\right)\right\rangle\right|}{S / \sqrt{\mathrm{k}}} \sim t(\mathrm{k}-1)
S/k∣∣(Δˉ−(εA−εB)⟩∣∣∼t(k−1)
若假设
H
0
:
ε
A
=
ε
B
,
H
1
:
ε
A
≠
ε
B
H_{0}: \varepsilon_{A}=\varepsilon_{B}, H_{1}: \varepsilon_{A} \neq \varepsilon_{B}
H0:εA=εB,H1:εA=εB,则,满足
∣
Δ
ˉ
∣
S
/
k
≤
t
∂
/
2
\frac{|\bar{\Delta}|}{S / \sqrt{\mathrm{k}}} \leq \mathrm{t}_{\partial / 2}
S/k∣Δˉ∣≤t∂/2。
由于样本有限,在使用交叉验证等方法的时候,会导致不同轮次的训练集有一定程度的重叠,是的测试错误率不独立,导致过高估计假设成立的概率,为缓解这一问题,可采用“5次2折交叉验证”。
一组数据集、多个算法----Friedman检验与Nemenyi检验
Friedman检验
假设有数据集D1、D2、D3、D4,算法A、B、C进行比较。
使用留出法或者交叉验证得到每个算法在每个数据集上的测试结果,然后在每个数据集上根据测试性能由好到坏排序,并赋予序值1,2,…,若算法测试性能相同,则平分序值。
使用Friedman检验来判断这些算法是否性能相同,若相同,则它们的平均序值应当相同。
若在N个数据集,比较k个算法,令
r
i
{r_i}
ri表示第i个算法的平均序值,则
r
i
{r_i}
ri的均值和方差分别为
(
k
+
1
)
/
2
,
(
k
+
1
)
(
k
−
1
)
/
12
(k+1) / 2, \quad(k+1) \quad(k-1) / 12
(k+1)/2,(k+1)(k−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
)
\begin{aligned} \tau_{\chi^{2}} &=\frac{k-1}{k} \cdot \frac{12 N}{k^{2}-1} \sum_{i=1}^{k}\left(r_{i}-\frac{k+1}{2}\right)^{2} \\ &=\frac{12 N}{k(k+1)}\left(\sum_{i=1}^{k} r_{i}^{2}-\frac{k(k+1)^{2}}{4}\right) \end{aligned}
τχ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分布。
τ
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
服从自由度为k-1和(k-1)(N-1)的F分布。下面是F检验常用的临界值:
Nemenyi检验
若原假设被拒绝,则需要进行后续检验,来得到具体的算法之间的差异。常用的是Nemenyi检验。Nemenyi检验计算出平均序值差别的临界值域,下表是常用的qa值,若两个算法的平均序值差超出了临界值域CD,则相应的置信度
1
−
α
1-\alpha
1−α拒绝“两个算法性能本相同”的假设。
C
D
=
q
α
k
(
k
+
1
)
6
N
C D=q_{\alpha} \sqrt{\frac{k(k+1)}{6 N}}
CD=qα6Nk(k+1)
qa中常用的联临界值: