机器学习-模型评估.4
介绍了一些标题方法的求解过程。
关键词:估计方差 估计偏差 McNemar检验 Friedman检验 Nemenyi后续检验
一、评估假设
估计偏差和估计方差
估计偏差
我们知道训练误差和测试误差,如果只有一个数据集,拿着它去喂我们的模型,然后拿它再去测试模型会出现一种看上去指标很高,但是很假的情况,总之就是模型看上去很“乐观”。所以我们通常会分出一部分来当做未来数据,这样我们可以都对未来的数据做一个无偏估计。
估计方差
继续上一段的话,如果我们两次得到错误率为0.3,一次样本数量100个一次是10000个,那么你能说这俩个0.3是一样的吗,很明显10000个样本的显得更真实。结论是我们使用的样本越多估计方差越小。
样本错误率和真实错误率
样本错误率:在某个数据样本的假设错误率。
例子,如果10个数据,3个测试为负例,那么就是3/10=0.3。
真实错误率:分布在D的整个实例集合上的假设错误率。
按这种分布不断进行随机试验,最后得到的分错的样本数/总的样本数。
离散值假设的置信区间
上面说了很多看上去没啥用的话,从这才算开始,我们评估的时候更想要的是真实错误率而不是样本错误率,而真实错误率我们通常是得不到的,所以我们就要用样本错误率去代替它,当然不能直接代替。
引入置信区间置信度(学过高数应该了解这个词,没学过假装一下,有这么个名词就行了)。假设大约有95%(置信度)的可能性,真实错误率存在于下面的区间中:
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(r)分别为0.7,0.3
X的期望:
例子=10*0.7=7
X的方差:
X的标准差:
我们已得的随机变量样本错误率服从二项分布,再次回到前面的问题,这俩个错误率之前的差异是多少呢?如果我们用二项分布的话那么重新定义:
在统计学中,我们称样本错误率为真实错误率的一个估计量,如果要用他,我们就要关心下他的平均数能不能产生正确的估计,于是定义了任意参数p的估计量Y的估计偏差:
如果估计偏差为0,我们称Y为p的无偏估计量。
以上便是二项分布有关问题,下面开始转换
对于给定N如何计算区间大小以及包含N%的概率质量?对于二项分布来说,这是很繁琐的,虽然大多情况下,我们用了近似值,而且他要求我们要有足够大的样本。二项分布可以有正态分布来近似,为什么选择正态分布,原因还有很多,这里不一一解释了。
概率密度函数:
X落入[a,b]概率:
X的期望/均值:
X的方差:
X的标准差:
单双侧置信区间(置信度为α)
上面我们使用的置信区间均为双侧的,某些情况下我们需要用单侧的。
如果有一个含上界L和下界U的双侧置信区间为100(1-α)%,那么可以得到一个只含下界或只含上界的100(1-2α)%的单侧置信区间。
二、比较检验
交叉验证t检验
k折
对于学习器A和B,使用k折交叉验证得到的错误率为
如果两个学习器性能相同,那么k个对应的ε都应该相同,也就是说:
建立一个式子:
对于k个△组成的列表,求得其均值μ和方差σ^2,在显著度α下,t检验为:
当它小于临界值t(α/2,k-1)时,认为两个学习器没有显著性区别,否则平均错误率小的优。
加粗部分:有了显著度的α/2,k-1,根据对照表(可自行查阅)可以得到一个临界值。
n次k折
t检验公式定义做了一些改变,以5次2折交叉验证为例(n=5,k=2)
对于A和B两个学习器,第 i 次2折交叉验证产生两对错误率,对他们分别求差,得到第1折第2折插值
计算第一次(注意看好,只求第一次的)k折交叉验证的平均值
计算每一次k折交叉验证的方差
t检验公式转化为:
服从自由度为5的t分布,检验方式如上。
McNemar检验
对于两分类器的分类结果,两两对比无非就是俩都对,俩都错,你对我错,你错我对,根据这个关系,我们得到一个表,名为列联表:
| 算法A | 算法A | |
|---|---|---|
| 算法B | 正确 | 错误 |
| 正确 | e00 | e01 |
| 错误 | e10 | e11 |
变量|e10-e01|服从正态分布,均值为1,方差为e10+e01,卡方检验为:
服从自由度为1的卡方分布,给定显著度α,比较检验结果和临界值,小于临界值时,两个学习器性能差别不显著。否则平均错误率小的优。
Friedman检验和Nemenyi后续检验
Friedman检验
前面的两个检验都是在一个数据集比较两个算法,如果我们需要比较多个数据集多个算法是肿么办呢?
这就要用到这个小节了:
如果我们此时得到了五个数据集在四个算法上的指标,我们按照优劣排序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 |
得到:
n:数据集个数,k:算法个数
卡方分布
F分布
\(T_f\)服从自由度为k-1和(k-1)(n-1)的F分布,根据对照表的临界值,对比检验结果,方法如上。当算法性能不同时引入Nemenyi后续检验。
Nemenyi后续检验
首先计算出平均序列差别的临界值域
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值,也就是平均序值越小,算法性能越好。

浙公网安备 33010602011771号