机器学习 扬帆起航004-02评估假设与比较检验


评估假设部分看的《机器学习-Mitchell》比较检验部分还是周志华老师的《机器学习》。

不保证我自己理解的都对,这篇算是笔记的整理吧!

一、评估假设

估计偏差和估计方差

估计偏差

我们知道训练误差和测试误差,如果只有一个数据集,拿着它去喂我们的模型,然后拿它再去测试模型会出现一种看上去指标很高,但是很假的情况,总之就是模型看上去很“乐观”。所以我们通常会分出一部分来当做未来数据,这样我们可以都对未来的数据做一个无偏估计。

估计方差

继续上一段的话,如果我们两次得到错误率为0.3,一次样本数量100个一次是10000个,那么你能说这俩个0.3是一样的吗,很明显10000个样本的显得更真实。结论是我们使用的样本越多估计方差越小。

样本错误率和真实错误率

**样本错误率:**在某个数据样本的假设错误率。
e r r o r s s ( h ) = 1 n ∑ x ∈ S δ ( f ( x ) , h ( x ) ) errors_s(h)=\frac{1}{n}\sum_{x\in S}{δ(f(x),h(x))} errorss(h)=n1xSδ(f(x),h(x))
例子,如果10个数据,3个测试为负例,那么就是3/10=0.3。

**真实错误率:**分布在D的整个实例集合上的假设错误率。
e r r o r s D ( h ) = Pr ⁡ x ∈ D [ f ( x ) ≠ h ( x ) ] errors_D(h)=\Pr_{x\in D}[f(x)≠h(x)] errorsD(h)=xDPr[f(x)=h(x)]
按这种分布不断进行随机试验,最后得到的分错的样本数/总的样本数。

离散值假设的置信区间

上面说了很多看上去没啥用的话,从这才算开始,我们评估的时候更想要的是真实错误率而不是样本错误率,而真实错误率我们通常是得不到的,所以我们就要用样本错误率去代替它,当然不能直接代替。

引入置信区间置信度(学过高数应该了解这个词,没学过假装一下,有这么个名词就行了)。假设大约有95%(置信度)的可能性,真实错误率存在于下面的区间中:
e r r o r s D ( h ) : e r r o r s S ( h ) ± 1.96 e r r o r s s ( h ) ( 1 − e r r o r s s ( h ) ) n errors_D(h): errors_S(h)±1.96\sqrt{\frac{errors_s(h)(1-errors_s(h))}{n}} errorsD(h):errorsS(h)±1.96nerrorss(h)(1errorss(h))
n是样本数,1.96对应95%,为什么是1.96,因为我们有一张被规定好的表告诉了我们怎么转换:

置信度50%68%80%90%95%98%99%
常量0.671.001.281.641.962.332.58

上面公式使用有几个前提,也就是说有些时候我们是无法将样本错误率转化为真实错误率的。

前提:

①样本数量也就是n至少为30。

②样本错误率不能太接近0或1。

正态分布代替二项分布

二项分布

直接上例子吧,好理解

10个样本3个分错

分对,分错的概率P®分别为0.7,0.3

X的期望:
E [ X ] = n p E[X]=np E[X]=np
例子=10*0.7=7

X的方差:
V a r ( X ) = n p ( 1 − p ) Var(X)=np(1-p) Var(X)=np(1p)
X的标准差:
σ X = n p ( 1 − p ) σ_X=\sqrt{np(1-p)} σX=np(1p)
我们已得的随机变量样本错误率服从二项分布,再次回到前面的问题,这俩个错误率之前的差异是多少呢?如果我们用二项分布的话那么重新定义:
e r r o r s s ( h ) = r n errors_s(h)=\frac{r}{n} errorss(h)=nr

e r r o r s D ( h ) = p errors_D(h)=p errorsD(h)=p

在统计学中,我们称样本错误率为真实错误率的一个估计量,如果要用他,我们就要关心下他的平均数能不能产生正确的估计,于是定义了任意参数p的估计量Y的估计偏差
E [ Y ] − p E[Y]-p E[Y]p
如果估计偏差为0,我们称Y为p的无偏估计量。

以上便是二项分布有关问题,下面开始转换

对于给定N如何计算区间大小以及包含N%的概率质量?对于二项分布来说,这是很繁琐的,虽然大多情况下,我们用了近似值,而且他要求我们要有足够大的样本。二项分布可以有正态分布来近似,为什么选择正态分布,原因还有很多,这里不一一解释了。

概率密度函数:
p ( x ) = 1 2 π σ 2 e − 1 2 ( x − μ σ ) 2 p(x)=\frac{1}{\sqrt{2πσ^2}}e^{-\frac{1}{2}(\frac{x-μ}{σ})^2} p(x)=2πσ2 1e21(σxμ)2
X落入[a,b]概率:
∫ a b p ( x ) d x \int_{a}^{b}{p(x)dx} abp(x)dx
X的期望/均值:
E [ X ] = μ E[X]=μ E[X]=μ
X的方差:
V a r ( X ) = σ 2 Var(X)=σ^2 Var(X)=σ2
X的标准差:
σ X = σ σ_X=σ σX=σ

单双侧置信区间(置信度为α)

上面我们使用的置信区间均为双侧的,某些情况下我们需要用单侧的。

如果有一个含上界L和下界U的双侧置信区间为100(1-α)%,那么可以得到一个只含下界或只含上界的100(1-2α)%的单侧置信区间。

二、比较检验

交叉验证t检验

k折

对于学习器A和B,使用k折交叉验证得到的错误率为
ε 1 A , ε 2 A , . . . ε k A 和 ε 1 B , ε 2 B , . . . ε k B ε_1^A,ε_2^A,...ε_k^A和ε_1^B,ε_2^B,...ε_k^B ε1Aε2A...εkAε1Bε2B...εkB
如果两个学习器性能相同,那么k个对应的ε都应该相同,也就是说:
ε i A = ε i B ε_i^A=ε_i^B εiA=εiB
建立一个式子:
△ i = ε i A − ε i B △_i=ε_i^A-ε_i^B i=εiAεiB
对于k个△组成的列表,求得其均值μ和方差σ^2,在显著度α下,t检验为:
T t = ∣ k μ σ ∣ T_t=|\frac{\sqrt{k}μ}{σ}| Tt=σk μ
当它小于临界值**t(α/2,k-1)**时,认为两个学习器没有显著性区别,否则平均错误率小的优。

加粗部分:有了显著度的α/2,k-1,根据对照表(可自行查阅)可以得到一个临界值。

n次k折

t检验公式定义做了一些改变,以5次2折交叉验证为例(n=5,k=2)

对于A和B两个学习器,第 i 次2折交叉验证产生两对错误率,对他们分别求差,得到第1折第2折插值
△ i 1 和 △ i 2 △_i^1和△_i^2 i1i2
计算第一次(注意看好,只求第一次的)k折交叉验证的平均值
μ = 0.5 ( △ 1 1 + △ 1 2 ) μ=0.5(△_1^1+△_1^2) μ=0.5(11+12)
计算每一次k折交叉验证的方差
σ 2 = ( △ i 1 − △ i 1 + △ i 2 2 ) 2 + ( △ i 2 − △ i 1 + △ i 2 2 ) 2 σ^2=(△_i^1-\frac{△_i^1+△_i^2}{2})^2+(△_i^2-\frac{△_i^1+△_i^2}{2})^2 σ2=(i12i1+i2)2+(i22i1+i2)2
t检验公式转化为:
T t = μ 0.2 ∑ i = 1 5 σ i 2 T_t=\frac{μ}{\sqrt{0.2\sum_{i=1}^{5}{σ_i^2}}} Tt=0.2i=15σi2 μ
服从自由度为5的t分布,检验方式如上。

McNemar检验

对于两分类器的分类结果,两两对比无非就是俩都对,俩都错,你对我错,你错我对,根据这个关系,我们得到一个表,名为列联表:

算法A算法A
算法B正确错误
正确e00e01
错误e10e11

变量|e10-e01|服从正态分布,均值为1,方差为e10+e01,卡方检验为:
T x 2 = ( ∣ e 10 − e 01 ∣ − 1 ) 2 e 10 + e 01 Tx^2=\frac{(|e10-e01|-1)^2}{e10+e01} Tx2=e10+e01(e10e011)2
服从自由度为1的卡方分布,给定显著度α,比较检验结果和临界值,小于临界值时,两个学习器性能差别不显著。否则平均错误率小的优。

Friedman检验和Nemenyi后续检验

Friedman检验

前面的两个检验都是在一个数据集比较两个算法,如果我们需要比较多个数据集多个算法是肿么办呢?

这就要用到这个小节了:

如果我们此时得到了五个数据集在四个算法上的指标,我们按照优劣排序1,2,3,4。

然后得到平均序值。

数据集NBTANSETAN3WD-TAN
M4321
V4321
Br2431
Ba4321
C4312
平均序值3.63.221.2

得到:
r i = { 3.6 , 3.2 , 2 , 1.2 } r_i=\{3.6,3.2,2,1.2\} ri={3.6,3.2,2,1.2}
n:数据集个数,k:算法个数

卡方分布
T x 2 = 12 n k ( k + 1 ) ( ∑ i = 1 k r i 2 − k ( k + 1 ) 2 4 ) T_{x^2} = \frac{12n}{k(k+1)}(\sum^{k}_{i=1}{r_i^2}-\frac{k(k+1)^2}{4}) Tx2=k(k+1)12n(i=1kri24k(k+1)2)
F分布
T f = ( n − 1 ) T x 2 n ( k − 1 ) − T x 2 T_f=\frac{(n-1)T_{x^2}}{n(k-1)-T_{x^2}} Tf=n(k1)Tx2(n1)Tx2
Tf服从自由度为k-1和(k-1)(n-1)的F分布,根据对照表的临界值,对比检验结果,方法如上。当算法性能不同时引入Nemenyi后续检验。

Nemenyi后续检验

首先计算出平均序列差别的临界值域
C D = q α k ( k + 1 ) 6 n CD=q_α\sqrt{\frac{k(k+1)}{6n}} CD=qα6nk(k+1)
k和n都是已知量,那么还剩下一个qα值,这个值和检验一样需要对照一个表,根据显著度和算法个数k得到:

k
α2345678910
0.050.9602.3442.5692.7282.8502.9493.0313.1023.164
0.11.6452.0522.2912.4592.5892.6932.7802.8552.920

(软件问题,可能画的不好)

然后得到如下一个检验图

在这里插入图片描述

**解释:**每一条线长度相同都是CD的大小,也就是临界值域,每一个点对应每个算法的平均序值。

**这个图怎么看:**如果两个算法的线段没有交叠,那说明两个算法有显著性区别;如果有交叠,说明两个算法没有显著差别。如果有差别的话,点对应的x值,也就是平均序值越小,算法性能越好。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值