首页 > 代码库 > 分类器效果分析
分类器效果分析
假设有两个分类器A,B。A在1000个样本的集合上有75%的准确率;B在200个样本的集合上有85%的准确率。我们要怎样评价这两个分类器的效果?
这就是这里要讨论的分类器效果分析。
抛硬币的例子
硬币正面的概率为50%,那么做N次随机试验,也就是N次的伯努利试验。根据概率的知识,我们知道,正面硬币个数X满足B(0.5N,0.5*0.5*N)的伯努利分布。
再根据大数定理,假设N足够大,那么X满足N(0.5N,0,5*0,5*N)的正态分布。
准确率acc=X /N,我们可以得出acc的分布:
acc~N(0.5,0.5*0.5/N)
同样的,A分类器的真实准确率是p,那么对于每个测试样本,有p的概率被预测正确。也就是,N个测试样本的预测也同上面的抛硬币一样,是概率为p的N次伯努利实验。
于是有
acc~N(p,p(1-p)/N)
以上,我们以伯努利模型,得到了关于识别率的概率公式。
置信区间
置信区间是根据观察值,对于总体分布参数的一个估计。这里我们关于真实p,也就是分布中的均值做一个估计。
根据之前正态分布的均值和方差,我们得到如下的置信区间:
以上,我们可以得到真实准确率的一个估计区间,以及这个区间的可信度。
*个人理解的置信区间,基于假设分布,根据观察值在假设分布的某个区间的概率,可以反推假设分布中其他参数的概率。
继续推导出置信区间的公式:
小结论:同样的置信区间,置信度随着N的增加而增加。
比较方法
有了置信度,置信区间,还是不好比较。假设
A:75%+-1%
B:85%+-10%
同在置信度95%下
还是看不出有什么优劣。继续推导比较方法。
误差差值建模
两个分类器之间的区别,我们可以用d=e1-e2来衡量。
其中e表示分类误差,e1表示在数据集1上,e2为数据集2上。
我们可以认为e1,e2分别为独立的正态分布。
于是,他们之间的差值:
d=e1-e2
为两个独立正态分布之和,于是,d也满足正态分布,有:
我们就可以估计训练误差之差值的一个置信区间。
比如,我们可以估计两个分类器的d形如:
d=10%+-12.8%,在置信度95%之下
这里d包含0,也就是两个分类器差异不显著。
或者:
d=10%+-1%,在置信度95%之下
那么,两个分类器差异显著,e1>e2。
交叉验证性能比较
在同一个数据集上进行K-fold交叉验证时,每个分类器进行了K次。根据概率论知识,其准确率的均值之差d=mean1-mean2为K个正态分布的均值,满足自由度为k-1的t分布。我们用t分布来估计其差异。
我们有:
我们就能得到关于两个分类器K-fold交叉验证的差异估计。
小结
*在t分布中,我们的前提是同一个数据集上,而且d是同一阶段两个准确率之差。因为在不同训练集上训练的结果没有可比性。而K-fold中不同阶段为不同的训练样本集。故计算d时要两两对应。
*以上的所有估计,也都是基于相同的训练样本集合,才有意义。
*一般的实验中,我们测试的集合都能够相等,那么单一实验的估计就可以直接比较大小,没有太大意义。这时候,我们进行K-fold验证,可以得到更好的比较估计。不过具体操作中,基本直接使用均值相减的比较,方便快捷。个人觉得,除非是很严谨的实验设置,一般的K-fold取均值就可以得到较好的比较结果。