零基础学习机器学习(四)模型的评估与选择的数学原理下篇

比较检验

有了评估方法和性能度量,看起来就可以对学习器的性能进行评估比较了:先使用某种实验评估方法测得学习器的某个性能度量结果,然后对这些结果进行比较,但是怎么来做这个比较呢?是直接取得性能度量的值然后“比大小”吗?

实际上,机器学习中的性能比较这件事要比大家想象的复杂得多,这里面涉及几个重要因素:

  1. 首先,我们希望比较的是泛化性能,然而通过实验评估方法我们获取的是测试集上的性能,两者的对比结果可能未必相同
  2. 测试集上的性能与测试集本身的选择有很大关系,且不论使用不同大小的测试机会得到不同的结果,即便使用大小相同的测试机,若包含的测试样例不同,测试结果也会不同
  3. 很多机器学习算法本身有一定的随机性,即使使用相同的参数在同一个测试集上运行多次,结果也会不同

统计假设检验为我们进行学习器性能比较提供了重要的依据。基于假设检验的结果我们可以推出,若在测试集上观察到学习器A比B好,则A的泛化性能是否在统计意义上优于B,以及这个结论的把握有多大

我们先介绍两种最基本的假设检验,然后介绍几种常用的机器学习性能比较方法。为了便于讨论,我们以错误率为性能度量,用ϵ\epsilon 表示

假设检验

假设检验中的“假设”是学习器泛化错误率分布的某种判断或猜想,例如ϵ=ϵ0\epsilon = \epsilon_0。现实任务中我们并不知道学习器的泛化错误率,只能获知其测试错误率ϵˉ\bar{\epsilon}。泛化错误率与测试错误率未必相同,但是直观上,二者接近的可能性比较大,相差很远的可能性很小,因此可以根据测试错误率估推出泛化错误率。

泛化错误率为ϵ\epsilon 的学习器在一个样本上犯错误的概率是ϵ\epsilon;测试错误率ϵˉ\bar{\epsilon} 意味着在m个测试样本中有ϵˉ×m\bar{\epsilon} \times m 个被误分类。

假设测试样本是从样本总体分布中独立采样而得,那么泛化错误率为ϵ\epsilon 的学习器将其中 m’ 个样本误分类,其余全部样本分类正确的概率是(mm)ϵm(1ϵ)mm\begin{pmatrix}m \\ m'\end{pmatrix}\epsilon^{m'}(1-\epsilon)^{m-m'},由此可以估算出,其将ϵˉ×m\bar{\epsilon} \times m 个样本误分类的概率如下所示,这也表达了在包含m个样本的测试集上,泛化错误率为ϵ\epsilon 的学习器被测得测试错误率为ϵˉ\bar{\epsilon}的概率:

P(ϵˉ;ϵ)=(mϵˉ×m)ϵϵˉ×m(1ϵ)mϵˉ×mP(\bar{\epsilon};\epsilon) = \begin{pmatrix}m \\ \bar{\epsilon} \times m\end{pmatrix}\epsilon^{\bar{\epsilon} \times m}(1-\epsilon)^{m-\bar{\epsilon}\times m}

给定错误率,则解P(ϵˉ;ϵ)/ϵ=0\partial P(\bar{\epsilon};\epsilon) /\partial\epsilon = 0, 可知,P(ϵˉ;ϵ)P(\bar{\epsilon};\epsilon)ϵ=ϵˉ\epsilon = \bar{\epsilon} 时最大,在ϵϵˉ|\epsilon - \bar{\epsilon}| 增大时,P(ϵˉ;ϵ)P(\bar{\epsilon};\epsilon) 减小,这个符合二项分布。

也就是说泛化错误率被测得等于测试错误率的概率是最大的

但是这件事的置信度是多少呢?我们可以使用二项检验来论证