赞
踩
不保证我自己理解的都对,这篇算是笔记的整理吧!
我们知道训练误差和测试误差,如果只有一个数据集,拿着它去喂我们的模型,然后拿它再去测试模型会出现一种看上去指标很高,但是很假的情况,总之就是模型看上去很“乐观”。所以我们通常会分出一部分来当做未来数据,这样我们可以都对未来的数据做一个无偏估计。
继续上一段的话,如果我们两次得到错误率为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)=n1x∈S∑δ(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)=x∈DPr[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)(1−errorss(h))
n是样本数,1.96对应95%,为什么是1.96,因为我们有一张被规定好的表告诉了我们怎么转换:
置信度 | 50% | 68% | 80% | 90% | 95% | 98% | 99% |
---|---|---|---|---|---|---|---|
常量 | 0.67 | 1.00 | 1.28 | 1.64 | 1.96 | 2.33 | 2.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(1−p)
X的标准差:
σ
X
=
n
p
(
1
−
p
)
σ_X=\sqrt{np(1-p)}
σX=np(1−p)
我们已得的随机变量样本错误率服从二项分布,再次回到前面的问题,这俩个错误率之前的差异是多少呢?如果我们用二项分布的话那么重新定义:
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
1e−21(σ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α)%的单侧置信区间。
对于学习器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,根据对照表(可自行查阅)可以得到一个临界值。
t检验公式定义做了一些改变,以5次2折交叉验证为例(n=5,k=2)
对于A和B两个学习器,第 i 次2折交叉验证产生两对错误率,对他们分别求差,得到第1折第2折插值
△
i
1
和
△
i
2
△_i^1和△_i^2
△i1和△i2
计算第一次(注意看好,只求第一次的)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=(△i1−2△i1+△i2)2+(△i2−2△i1+△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.2∑i=15σi2
μ
服从自由度为5的t分布,检验方式如上。
对于两分类器的分类结果,两两对比无非就是俩都对,俩都错,你对我错,你错我对,根据这个关系,我们得到一个表,名为列联表:
算法A | 算法A | |
---|---|---|
算法B | 正确 | 错误 |
正确 | e00 | e01 |
错误 | e10 | e11 |
变量|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(∣e10−e01∣−1)2
服从自由度为1的卡方分布,给定显著度α,比较检验结果和临界值,小于临界值时,两个学习器性能差别不显著。否则平均错误率小的优。
前面的两个检验都是在一个数据集比较两个算法,如果我们需要比较多个数据集多个算法是肿么办呢?
这就要用到这个小节了:
如果我们此时得到了五个数据集在四个算法上的指标,我们按照优劣排序1,2,3,4。
然后得到平均序值。
数据集 | NB | TAN | SETAN | 3WD-TAN |
---|---|---|---|---|
M | 4 | 3 | 2 | 1 |
V | 4 | 3 | 2 | 1 |
Br | 2 | 4 | 3 | 1 |
Ba | 4 | 3 | 2 | 1 |
C | 4 | 3 | 1 | 2 |
平均序值 | 3.6 | 3.2 | 2 | 1.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=1∑kri2−4k(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(k−1)−Tx2(n−1)Tx2
Tf服从自由度为k-1和(k-1)(n-1)的F分布,根据对照表的临界值,对比检验结果,方法如上。当算法性能不同时引入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 | |||||||||
---|---|---|---|---|---|---|---|---|---|
α | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
0.05 | 0.960 | 2.344 | 2.569 | 2.728 | 2.850 | 2.949 | 3.031 | 3.102 | 3.164 |
0.1 | 1.645 | 2.052 | 2.291 | 2.459 | 2.589 | 2.693 | 2.780 | 2.855 | 2.920 |
(软件问题,可能画的不好)
然后得到如下一个检验图
**解释:**每一条线长度相同都是CD的大小,也就是临界值域,每一个点对应每个算法的平均序值。
**这个图怎么看:**如果两个算法的线段没有交叠,那说明两个算法有显著性区别;如果有交叠,说明两个算法没有显著差别。如果有差别的话,点对应的x值,也就是平均序值越小,算法性能越好。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。