我们有时需要比较两个分类算法a和b的优劣。直接看测试集合上的准确率当然是一个直观的想法,但是有时候,这些微小的差异可能是由于测试集合的随机性造成的,并不一定说明算法优劣。因此,需要用到统计学上的假设检验。
下面是常用的几种方法
1. student's test [Dietterich, 1998]
首先对两个算法a和b,计算n次k-cross validation
对于单次 k-交叉验证,
d^i= err (a,i)- err(b,i) 表示在第i fold上两个算法的错误率的差
d = avg_k( d^i ) 对k fold取平均
s^2= 1/(K-1) *sum( (d^i-d)^2 ) 对k-fold取方差
设第j次交叉验证(j=1~n),获取的均值和方差分别为dj, sj^2
有 t= dj / (avg_n(sj^2) )^(1/2) ~ t2服从自由度为5的students分布,
按照假设检验理论,我们选定significant level= /alpha(一般选0.05或者0.1),查表获得自由度=5的student's分布的对应假设区间,当t落在对应区间上时,说明null hypthesis被接受,两个算法没有明显差异
这个检验的需要跑多次,一般来说至少是5次2-cross。
2. McNemar's test [Dietterich, 1998]
令
err01= # 算法a中错误算法b中正确
err10= # 算法b中错误算法a中正确
(|err01-err10|-1 )^2/(err01+err10