比较检验

  • 前言
  • 内容引出
  • 二项检验


前言

  二项检验在周志华老师的西瓜书中并没有做太多解释,自己也是网上搜索了相关的资料和其他人的看法,并结合了自己的一些理解写下博客记录一下。

内容引出

二项式检验python_二项式检验python表示,即泛化错误率。

二项式检验python_二项式检验python_02”。现实的任务中我们不知道学习器的泛化错误率,只能获知其测试错误率二项式检验python_泛化_03,而且泛化错误率和测试错误率不一定相同,直观上,它们两者接近的可能性比较大,相差很远的可能性比较小。由此我们可以根据测试错误率估推出泛化错误率的分布。这也是此章节的目的。

二项检验

二项式检验python_二项式检验python的学习器在一个样本上犯错的概率是二项式检验python_二项式检验python,而测试错误率二项式检验python_泛化_03表示的是在m个测试样本中恰好有二项式检验python_误分类_07个被误分类。我们假定测试样本是从总体分布中独立采样得到的,那请问泛化错误率为二项式检验python_二项式检验python的学习中将m0个样本误分类,其余样本全部分类正确的概率是多少?

二项式检验python_二项式检验python,你总共只能投m个,其中m0个投不中的概率是多少?这个问题我们都不陌生吧,因为你每次投篮都是相互独立的,所以我们可以用二项分布的方法迅速得出结果二项式检验python_假设检验_10这个公式的前面的矩阵的意思其实就是排列组合,相当于C(m,m0)。那对之前的问题也是一样的道理,它也满足二项分布,所以结果也是一样二项式检验python_假设检验_10所以由此我们可以估算出恰好将二项式检验python_误分类_07个样本误分类的概率,这也表达了在包含m个样本的测试集上,泛化错误率为二项式检验python_二项式检验python的学习器被测得测试错误率为二项式检验python_泛化_03的概率:二项式检验python_假设检验_15书上给出的公式其实是很好理解的,但是其最后直接得出结论概率在二项式检验python_误分类_16时最大,其中略过求解过程,所以这里对其进行推导。

  这里其实用到的时极大似然法(不太懂的同学可以看看这篇博客极大似然估计)我们先对原式进行求对数二项式检验python_假设检验_17这里要提一个关于对数函数的性质二项式检验python_泛化_18所以根据这个性质我们可以对原式进行分解二项式检验python_误分类_19然后我们再对式子进行求导,现在对二项式检验python_二项式检验python求导,此时要比之前更容易求导二项式检验python_误分类_21
我们也知道当其导数为0时有最大值,且此时二项式检验python_误分类_16。根据书上的例子,二项式检验python_泛化_23,m=10,我们可以用Python代码将其表示出来:

import matplotlib.pyplot as plt
from scipy.special import comb
from matplotlib.font_manager import FontProperties
import numpy as np
import matplotlib

a = 0.3
m = 10
p = []
for error in range(11):
    k = comb(m,error)*(a**error)*((1-a)**(m-error))
    p.append(k)
fig = plt.figure()
ax = fig.add_subplot(111)
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)
plt.xlabel('误分类样本数',fontproperties=font)
plt.ylabel('概率',fontproperties=font)
y = np.arange(0,0.35,0.05)
x = np.arange(0,11.0,1.0)
plt.xticks(x)
plt.yticks(y)
ax.scatter(x,p)
plt.plot(x,p)
plt.show()

我们可以得到和书上基本一致的图像

二项式检验python_泛化_24


图中的横坐标虽然是误分类的样本数,但是除以样本总数即可得到此时的测试错误率二项式检验python_泛化_03,由图我们也可以看出当泛化错误率二项式检验python_二项式检验python二项式检验python_泛化_03时其概率最大。

二项式检验python_误分类_28”,那么其备择假设就是“二项式检验python_泛化_29”,即原假设不成立时的对立结果,由此我们也可以得出这是一个右侧单边检验。书中直接给出了公式(最新的印刷有些不一样)二项式检验python_泛化_30

  我们知道假设检验如果结果落入拒绝域范围,那么我们则可以拒绝原假设,所以对于上述公式也同样的道理。用书上的图来解释

二项式检验python_误分类_31

二项式检验python_误分类_32是显著水平,1-二项式检验python_误分类_32是置信区间,我们可以将图看作是普通的假设检验的单边检验的函数图像,图中的二项式检验python_误分类_32区域看成拒绝域,其他部分看成是接受域,只要在二项式检验python_泛化_35的情况下,该学习器的测试错误率二项式检验python_泛化_03没有落入拒绝域中,那么我们就有1-二项式检验python_误分类_32的置信度认为学习器的泛化错误率二项式检验python_误分类_38小于二项式检验python_二项式检验python_39,(因为二项式检验python_误分类_38是不知道的,我们只是假设),所以我们的关键就在于求出那个临界值。

二项式检验python_泛化_03的概率估计,我们要求假设接受的临界值,相当于就是满足概率相加的和小于二项式检验python_误分类_32最小的那个测试错误率,书中给出的这个公式的作用也就是这个意思,我们可以看出图中5就是那个临界值,因为当误分类样本数为6,7,8,9,10的这些概率相加的和小于二项式检验python_误分类_32,但若是加上5的这个概率值,那么就会大于二项式检验python_误分类_32,不满足条件,所以5就是最小的临界值。得到临界值后,只要判断其与测试错误率的大小即可。