第4章 分类:基本概念、决策树与模型评估
分类(classification):分类任务就是通过学习得到一个目标函数(target function)f,把每个属性集x映射到一个余弦定义的类标号y。目标函数也称为分类模型(classification model)。
属性可以是离散的或者连续的,但类标号必须是离散的,这正是分类与回归(regression)的关键特征。回归是一种预测建模任务,其中目标属性y是连续的。
分类计数非常适合预测或描述二元或标称类型的数据集,对于序数分类,分类技术不太有效,因为分类技术不考虑隐含在目标类中的序关系。其他形式的联系,如子类和超累的关系也被忽略。本章余下的部分只考虑二元的或标称类型的类标号。
分类技术(或分类法)是一种根据数据集建立分类模型的系统方法。分类法的例子包括决策树分类法、基于规则的分类法、神经网络、支持向量机和朴素贝叶斯分类法。
分类模型的性能根据模型正确和错误预测的检验记录计数进行评估,这些计数存放在称作混淆矩阵(confusion matrix)的表格中。表中每个表项$f_{ij}$表示实际类标号为$i$但被预测为类$j$的记录数。
$$准确率=\frac{正确预测数}{预测总数}=\frac{f_{11}+f_{00}}{f_{11}+f_{10}+f_{01}+f_{00}}$$
$$错误率=\frac{错误预测数}{预测总数}=\frac{f_{10}+f_{01}}{f_{11}+f_{10}+f_{01}+f_{00}}$$
决策树
决策树是一种由结点和有向边组成的层次结构。树中包含三种结点。
● 根结点(root node),它没有入边,但有零条或多条出边。
● 内部结点(internal node),恰有一条入边和两条或多条出边。
● 叶结点(leaf node)或终结点(terminal node),恰有一条入边,但没有出边
在决策树中,每个叶结点都赋予一个类标号。非终结点(non-terminal node)(包括根结点和内部结点)包含属性测试条件,用以分开具有不同特性的记录。
如何建立决策树
原则上讲,对于给定的属性集,可以构造的决策树的数目达指数级。尽管某些决策树比其他决策树更准确,但是由于搜索空间是指数规模的,招出最佳决策树在计算上是不可行的。尽管如此,人们还是开发了一些有效的算法,能够在合理的时间内构造出具有一定准确率的次最优决策树。这些算法通常都采用贪心策略,在选择划分数据的属性时,采取一系列局部最优策略来构造决策树,Hunt算法就是一种这样的算法。Hunt算法是许多决策树算法的基础,包括ID3、C4.5和CART。
1、Hunt算法
在Hunt算法中,通过将训练记录相继划分成较纯的子集,以递归方式建立决策树。设$D_{t}$是与结点$t$相关联的训练记录集,而$y=\{y_{1},y_{2},…,y_{c}\}$是类标号,Hunt算法的递归定义如下。
(1)如果$D_{t}$中所有记录都属于同一个类$y_{t}$,则$t$是叶结点,用$y_{t}$标记。
(2)如果$D_{t}$中包含属于多个类的记录,则选择一个属性测试条件(attribute test condition),将记录划分成较小的子集。对于测试条件的每个输出,创建一个子女结点,并根据测试结果将$D_{t}$中的记录分布到子女结点中。然后,对于每个子女结点,递归地调用该算法。
如果属性值的每种组合都在训练数据中出现,并且每种组合都具有唯一的类标号,则Hunt算法是有效的。但是对于大多数实际情况,这些假设太苛刻了,因此,需要附加的条件来处理以下的情况。
(1)算法的第二步所创建的子女结点可能为空,即不存在与这些结点相关联的记录。如果没有一个训练记录包含与这一的结点相关联的属性值集合,这种情形就可能发生。这时,该结点成为叶结点,类标号为其父节点上训练记录中的多数类。
(2)在第二步,如果与$D_{t}$相关联的所有记录都具有相同的属性值(目标属性除外),则不可能进一步划分这些记录。在这种情况下,该结点为叶结点,其标号为与该结点相关联的训练记录中的多数类。
2、决策树归纳的设计问题
决策树归纳的学习算法必须解决下面两个问题。
(1)如何分裂训练记录?
树增长过程的每个递归步都必须选择一个属性测试条件,将记录划分成较小的子集。为了实现这个步骤,算法必须提供为不同类型的属性指定测试条件的方法,并且提供评估每种测试条件的客观度量。
(2)如何停止分裂过程?
需要有结束条件,以终止决策树的生长过程。一个可能的策略是分裂结点,直到所有的记录都属于同一个类,或者所有的记录都具有相同的属性值。尽管两个结束条件对于结束决策树归纳算法都是充分的,但是还可以使用其他的标准提前终止树的生长过程。提前终止的优点将在下文中讨论。
表示属性测试条件的方法
二元属性:二元属性的测试条件产生两个可能的输出
标称属性:由于标称属性有多个属性值,它的测试条件可以用两种方法表示。对于多路划分,其输出数取决于该属性不同属性值的个数。另一方面,某些决策树算法(如CART)只产生二元划分,它们考虑创建$k$个属性值的二元划分的所有$2^{k-1}-1$种方法。
序数属性:序数属性也可以产生二元或多路划分,只要不违背序数属性值的有序性,就可以对属性值进行分组。
连续属性:连续属性需要离散化为二元或多元输出。离散化后,每个离散化区间赋予一个新的序数值,只要保持有序性,相邻的值还可以聚集成较宽的区间。
选择最佳划分的度量
选择最佳划分的度量通常是根据划分后子女结点不纯性的程度。不纯的程度越低,类分布就越倾斜。例如,类分布为(0,1)的结点具有零不纯性,而均衡分布(0.5,0.5)的结点具有最高的不纯性,不纯性度量的例子包括:
熵
$$Entropy(t)=-\sum_{i=0}^{c-1}p(i|t)\log_{2}p(i|t)$$
Gini
$$Gini(t)=1-\sum_{i=0}^{c-1}[p(i|t)]^{2}$$
分类误差
$$Classification error(t)=1-max_{i}[p(i|t)]$$
其中,c是类的个数,并且在计算熵时,$0\log_{2}0=0$。p表示属于其中一个类的记录所占的比例,如二元分布均匀时,p=0.5,而当所有记录都属于同一个类时,p=1。
为了确定测试条件的效果,我们需要比较父节点(划分前)的不纯程度和子女结点(划分后)的不纯程度,它们的差越大,测试条件的效果就越好。增益$\delta$是一种可以用来确定划分效果的标准:
$$\delta=I(parent)-\sum_{j=1}^{k}\frac{N(v_{j})}{N}I(v_{j})$$
其中,$I(x)$是给定结点的不纯性度量,N是父结点上的记录数,k是属性值的个数,$N(v_{j})$是与子女结点$v_{j}$相关联的记录个数。决策树归纳算法通常选择最大化增益$\delta$的测试条件,因为对所有的测试条件来说,$I(parent)$是一个不变的值,所以最大化增益等价于最小化子女结点的不纯性度量的加权平均值。最后,当选择熵(entiopy)作为公式的不纯性度量时,熵的差就是所谓信息增益(information gain)$\delta_{info}$
1、二元属性的的划分
比较不同属性$\frac{N_{1}}{N}I_{1}+\frac{N_{2}}{N}I_{2}$的和,取和最小的属性作为属性划分
2、标称属性的划分
比较不同属性$\sum_{j=1}^{k}\frac{N(v_{j})}{N}I(v_{j})$的值,取值最小的属性作为属性划分
3、连续属性的划分
首先需要离散化为二元属性,如“年收入≤v”来划分成二元属性,然后可以同二元属性的划分来判断连续属性的划分。如果用穷举法来确定v的值,计算代价是昂贵的。为了降低计算复杂度,按照年收入将训练记录排序,从两个相邻的排过序的属性值中选择中间值作为候选划分点。该过程还可以进一步优化:仅考虑位于具有不同类标号的两个相邻记录之间的候选划分点。
4、增益率
测试条件不应产生过多的结点,因为与每个划分相关联的记录太少,以致不能作出可靠的预测。
解决该问题的策略有两种:
(1)限制测试条件只能是二元划分,CART这样的决策树算法采用的就是这种策略。
(2)修改评估划分的标准,把属性测试条件产生的输出数也考虑进去,例如,决策树算法C4.5采用称作增益率(gain ratio)的划分标准来评估划分。
$$Gain ration=\frac{\delta_{info}}{Split Info}$$
其中,划分信息$Split Info=-\sum_{i=1}{k}P(v_{i})\log_{2}P(v_{i})$,而$k$是划分的总数。如果某个属性产生了大量的划分,它的划分信息将会很大,从而降低了增益率。
决策树归纳算法
以下算法给出了称作TreeGrowth的决策树归纳算法的框架。该算法的输入是训练记录集E合属性集F。算法递归地选择最优的属性来划分数据(步骤7),并扩展树的叶结点(步骤11和步骤12),直到满足结束条件(步骤1)
(1)函数createNode()为决策树建立新节点。决策树的节点或者是一个测试条件,记作$node.test_cond$,或者是一个类标号,记作$node.label$
(2)函数find_best_split()确定应当选择哪个属性作为划分训练记录的测试条件。如前所述,测试条件的选择取决于使用哪种不纯性度量来评估划分,一些广泛使用的度量包括熵、Gini指标和$\chi^{2}$
(3)函数Classify()为叶结点确定类标号。对于每个叶结点$t$,令$p(i|t)$表示该结点上属于类i的训练记录所占的比例,在大多数情况下,都将叶结点指派到具有多数记录的类:
$$leaf.label=argmax_{i}p(i|t)$$
其中,操作argmax返回最大化$p(i|t)$的参数值$i$。$p(i|t)$除了提供确定叶结点类标号所需要的信息之外,还可以用来估计分配到叶结点$t$的记录属于类$i$的概率。下文讨论如何使用这种概率估计,在不同的代价函数下,确定决策树的性能。
(4)函数stopping_cond()通过检查是否所有的记录都属于同一个类,或者都具有相同的属性值,决定是否终止决策树的增长。终止递归函数的另一种方法是,检查记录数是否小鱼某个最小阈值。
建立决策树之后,可以进行树剪枝(tree-pruning),以减小决策树的规模。决策树过大容易受所谓过分拟合(overfiting)现象的影响。通过修建初始决策树的分支,剪枝有助于提高决策树的泛化能力。
模型的过分拟合
分类模型的误差大致分为两种:训练误差(training error)和泛化误差(generalization error)。训练误差也称再代入误差(resubstitution error)或表现误差(apparent error),是在训练记录上误分类样本比例,而泛化误差是模型在位置记录上的期望误差。
1、泛化误差估计
虽然过分拟合的主要原因一直是个争辩的话题,大家还是普遍统一模型的复杂度对模型的过分拟合有影响。问题是,如何确定正确的模型复杂度?理想的复杂度是能产生最低泛化误差的模型的复杂度。然而,在建立模型的过程中,学习算法只能访问训练数据集,对检验数据集,它一无所知,因此也不知道所建立的决策树在未知记录上的性能。我们所能做的就是估计决策树的泛化误差。
(1)使用再代入估计
再代入估计方法假设训练数据集可以很好地代表整体数据,因为,可以使用训练误差(又称再打入误差)提供对泛化误差的乐观估计。在这样的前提下,决策树归纳算法简单地选择产生最低训练误差的模型作为最终的模型。然而,训练误差通常是泛化误差的一种很差的估计。
(2)结合模型复杂度
如前所述,模型越是复杂,出现过分拟合的几率就越高,因此,我们更喜欢采用较为简单的模型。这种策略与应用众所周知的奥卡姆剃刀(Occam‘s razor)或节俭原则(principle of parsimony)一致。
奥卡姆剃刀:给定两个具有相同泛化误差的模型,较简单的模型比较复杂的模型更可取。
下面介绍两种把模型复杂度与分类模型评估结合在一起的方法:
a、悲观误差评估:第一种方法明确使用训练误差与模型复杂度罚项(penalty term)的和计算泛化误差。结果泛化误差可以看作模型的悲观误差估计(pessimistic error estimate)。例如,设$n(t)$是结点$t$分类的训练记录数,$e(t)$是被误分类的记录数。决策树T的悲观误差估计$e_{g}(\mathbf{T})$可以用下式计算:
$$e_{g}(\mathbf{T})=\frac{\sum_{i=1}^{k}[e(t_{i})+\Omega(t_{i})]}{\sum_{i=1}^{k}n(t_{i})}=\frac{e(\mathbf{T})+\Omega(\mathbf{T})}{N_{t}}$$
其中,$k$是决策树的叶结点数,$e(\mathbf{T})$决策树的总训练误差,$N_{t}$是训练记录数,$\Omega(t_{i})$是每个结点$t_{i}$对应的惩罚。
对于有7个叶结点,有4个误分类的记录数,总训练记录数为24,罚项假设等于0.5的决策树,则$e_{g}(\mathbf{T})=\frac{4+7\times0.5}{24}$
0.5的罚项意味着每增加一个叶结点,就有0.5个记录错误,除非增加结点能够改善一个记录的分类,否则结点就不应扩展。
b、最小描述长度原则:另一种结合模型复杂度的方法是基于称作最小描述长度(minimum description length,MDL)原则的信息论方法。假设,A决定建立一个分类模型,概括x和y之间的关系。在传送给B前,模型用压缩形式编码。如果模型的准确率是100%,那么传输的代价就等于模型编码的代价。否则,A还必须传输哪些记录被模型错误分类的信息。传输的总代价是:
$$Cost(model,data)=Cost(model)+Cost(data|model)$$
c、估计统计上界
泛化误差也可以用训练误差的统计修正来估计。因为泛化误差倾向于比训练误差大,所以统计修正通常是计算训练误差的上界,考虑到达决策树一个特定叶结点的训练记录数。例如,决策树算法C4.5中,假定每个叶结点上的错误服从二项分布。为了计算泛化误差,我们需要确定训练误差的上限,在下面的例子中解释说明。
$T_{R}$中的最左叶结点被扩展为$T_{L}$中的两个子女结点。在划分前,该结点的错误率是2/7=0.286。用正态分布近似二项分布,可以推导出错误率$e$的上界是:
$$e_{upper}(N,e,\alpha)=\frac{e+\frac{z_{\alpha/2}^{2}}{2N}+z_{\alpha/2}\sqrt{\frac{e(1-e)}{N}+\frac{z_{\alpha/2}^{2}}{4N^{2}}}}{1+\frac{z_{\alpha/2}^{2}}{N}}$$
d、使用确认集
在该方法中,不是用训练集估计泛化误差,而是把原始的训练数据集分为两个较小的子集,一个子集用于训练,而另一个称作确认集,用于估计泛化误差。典型的做法是,保留2/3的训练集来建立模型,剩余的1/3用作误差估计。
2、处理决策树归纳中的过分拟合
在上文中,我们介绍了一些估计分类模型泛化误差的方法。对于泛化误差可靠的估计能让学习算法搜索到准确的模型,而且不会对训练数据过分拟合。本节介绍两种在决策树归纳上避免过分拟合的策略。
先减枝(提前终止规则):在这种方法中,树增长算法在产生完全拟合整个训练数据集的完全增长的决策树之前就停止决策树的生长。为了做到这一点,需要采用更具限制性的结束条件。例如,当观察到的不纯性度量的增益(或估计的泛化误差的改进)低于某个确定的阈值时就停止扩展叶结点。这种方法的优点在于避免产生过分拟合训练数据的过于复杂的子树。然而,很难为提前终止选择正确的阈值。阈值太高将导致拟合不足的模型,而阈值太低就不能充分地解决过分拟合的问题。此外,即便使用已有的属性测试条件得不到显著的增益,接下来的划分也可能产生较好的子树。
后剪枝:在该方法中,初始决策树按照最大规模生长,然后进行剪枝的步骤,按照自底向上的方式修剪完全增长的决策树。修剪有两种做法:(1)用新的叶结点替换子树,该叶结点的类标号由子树下记录中的多数类确定;或者(2)用子树中最常使用的分支代替子树。当模型不能再改进时终止剪枝步骤。与先剪枝相比,后剪枝技术倾向于产生更好的结果,因为不像先剪枝,后剪枝是根据完全增长的决策树做出的剪枝决策,先减枝则可能过早终止决策树的生长。然而,对于后剪枝,当子树被剪掉后,生长完全决策树的额外的计算就被浪费了。
评估分类器的性能
常用的评估分类器性能的方法:
1、保持方法
在保持(Holdout)方法中,将被标记的原始数据划分成两个不想交的集合,分别称为训练集合检验集。在训练数据集上归纳分类模型,在检验集上评估模型的性能。训练集和检验集的划分比例通常根据分析家的判断(例如,50-50,或者2/3作为训练集、1/3作为检验集)。分类器的准确率根据模型在检验集上的准确率估计。
2、随机二次抽样
可以多次重复保持方法来改进对分类器性能的估计,这种方法称作随机二次抽样(random subsampling)。设$acc_{i}$是第$i$次迭代的模型准确率,总准确率是$acc_{sub}=\sum_{i=1}^{k}acc_{i}/k$。随机二次抽样也会遇到一些与保持方法同样的问题,因为在训练阶段也没有利用尽可能多的数据。并且,由于它没有控制每个记录用于训练和检验的次数,因此,有些用于训练的记录使用的频率可能比其他记录高很多。
3、交叉验证
替代随机二次抽样的一种方法是交叉验证(cross-validation)。在该方法中,每个记录用于训练的次数相同,并且恰好检验一次。为了解释该方法,假设把数据分为相同大小的两个子集,首先,我们选择一个子集作训练集,而另一个作检验集,然后交换两个集合的角色,原先作训练集的现在做检验集,反之亦然,这种方法叫做二折交叉验证。总误差通过对两次运行的误差求和得到。在这个例子中,每个样本各作一次训练样本和检验样本。k折交叉验证是对该方法的推广,把数据分为大小相同的k份,在每次运行,选择其中一份作检验集,而其余的全作为训练集,该过程重复k次,使得每份数据都用于检验恰好一次。同样,总误差是所有k次运行的误差之和。
4、自助法
以上方法都是假定训练记录采用不放回抽样,因此,训练集合检验集都不包含重复记录。在自助(bootstrap)方法中,训练记录采用有放回抽样,即已经选作训练的记录将放回原来的记录集中,使得它等机率地被重新抽取。如果原始数据有N个记录,可以证明,平均来说,大小为N的自助样本大约包含原始数据中63.2%的记录。这是因为一个记录被自助抽样抽取的概率是$1-(1-1/N)^{N}$,当N充分大时,该概率逐渐逼近$1-e^{-1}=0.632$。没有抽中的记录就成为检验集的一部分,将训练集建立的模型应用到检验集上,得到自助样本准确率的一个估计$\varepsilon_{i}$。抽样过程重复b次,产生b个自助样本。
按照如何计算分类器的总准确率,有几种不同的自助抽样法。常用的方法之一是.632自助(.632 bootstrap),它通过组合每个自助样本的准确率($\varepsilon_{i}$)和由包含所有标记样本的训练集计算的准确率($acc_{s}$)计算总准确率($acc_{boot}$):
$$acc_{boot}=\frac{1}{b}\sum_{i=1}^{b}(0.632\times\varepsilon_{i}+0.368\times acc_{s})$$
比较分类器的方法
1、估计准确度的置信区间
为确定置信区间,需要建立支配准确率度量的概率分布。本节介绍一种方法,通过将分类任务用二项式实验建模来推导置信区间。二项式实验的特性如下。
(1)实验由$N$个独立的试验组成,其中每个试验有两种可能的结果:成功或失败。
(2)每个试验成功的概率$p$是常数。
二项式实验的一个例子是统计N次抛硬币正面朝上的次数。如果$X$是$N$次试验观察到的成功次数,则$X$取一个特定值$v$的概率由均值$Np$、方差为$Np(1-p)$的二项分布给出:
$$P(X=v)=C_{N}^{v}p^{v}(1-p)^{N-v}$$
例如,如果硬币是均匀的(p=0.5),抛50次硬币,正面朝上20次的概率是:
$$P(X=20)=C_{50}^{20}0.5^{20}(1-0.5)^{30}=0.0419$$
预测检验记录类标号的任务也可以看作是二项式实验。给定一个包含N个记录的检验集,令$X$是被模型正确预测的记录数,$p$是模型真正准确率。通过把预测任务用二项式实验建模,$X$服从均值为$Np$、方差为$Np(1-p)$的二项分布。可以证明经验准确率$acc=X/N$也是均值为$p$,方差为$p(1-p)N$的二项分布。尽管可以用二项分布来估计$acc$的置信区间,但是当$N$充分大时,通常用正态分布来近似。根据正态分布,可以推导出$acc$的置信区间为:
$$P\big(-Z_{\alpha/2}\leq\frac{acc-p}{\sqrt{p(1-p)/N}}\leq Z_{1-\alpha/2}\big)=1-\alpha$$
其中$Z_{\alpha/2}$和$Z_{1-\alpha/2}$分别是在置信水平$(1-\alpha)$下由标准正态分布得到的上界和下界。因为标准正态分布关于$Z=0$对称,于是我们有$Z_{\alpha/2}=Z_{1-\alpha/2}$。重新整理不等式,得到$p$的置信区间如下:
$$\frac{2\times N\times acc+Z_{\alpha/2}^{2}\pm Z_{\alpha/2}\sqrt{Z_{\alpha/2}^{2}+4Nacc-4Nacc^{2}}}{2(N+Z_{\alpha/2}^{2})}$$
下表给出了在不同置信水平下$Z_{\alpha/2}$的值:
考虑一个模型,它在100个检验记录上具有80%的准确率。在95%的置信水平下,模型的真实准确率的置信区间是什么?根据上表,95%的置信水平对应于$Z_{\alpha/2}=1.96$。将它代入上面的公式得到置信区间在71.1%和86.7%之间。下表给出了随着记录数$N$的增大所产生的置信区间:
注意,随着$N$的增大,置信区间变得更加紧凑。
2、比较两个模型的性能
考虑一对模型$M_{1}$和$M_{2}$,它们在两个独立的检验集$D_{1}$和$D_{2}$上进行评估,令$n_{1}$是$D_{1}$中的记录数,$n_{2}$是$D_{2}$中的记录数。另外,假设$M_{1}$在$D_{1}$上的错误率为$e_{1}$,$M_{2}$在$D_{2}$上的错误率为$e_{2}$。目标是检验$e_{1}$与$e_{2}$的观察差是否是统计显著的。
假设$n_{1}$和$n_{2}$都充分大,$e_{1}$和$e_{2}$可以使用正态分布来近似。如果用$d=e_{1}-e_{2}$表示错误率的观察差,则$d$服从均值为$d_{t}$(其实际差)、方差为$\sigma_{d}^{2}$的正态分布。$d$的方差为:
$$\sigma_{d}^{2}\approx \widetilde{\sigma}_{d}^{2}=\frac{e_{1}(1-e_{1})}{n_{1}}+\frac{e_{2}(1-e_{2})}{n_{2}}$$
其中,$e_{1}(1-e_{1})/n_{1}$和$e_{2}(1-e_{2})/n_{2}$是错误率的方差。最后,在置信水平$(1-\alpha)%$下,可以证明实际差$d_{t}$的置信区间由下式给出:
$$d_{t}=d\pm Z_{\alpha/2}\widetilde{\sigma}_{d}$$
例:模型$M_{A}$在$N_{1}=30$个检验记录上的错误率$e_{1}=0.15$,而$M_{B}$在$N_{2}=5000$个检验记录上的错误率$e_{2}=0.25$。错误率的观察差$d=|0.15-0.25|=0.1$。在这个例子中,我们使用双侧检验来检查$d_{t}=0$还是$d_{t}\neq0$。错误率观察差的估计方差计算如下:
$$\widetilde{\sigma}_{d}^{2}=\frac{0.15(1-0.15)}{30}+\frac{0.25(1-0.25)}{5000}=0.0043$$
或$\widetilde{\sigma}_{d}=0.0655$。把该值代入公式,我们得到在95%的置信水平下,$d_{t}$置信区间如下:
$$d_{t}=0.1\pm1.96\times0.0655=0.1\pm0.128$$
由于该区间跨越了值0,我们可以断言在95%的置信水平下,该观察差不是统计显著的。
3、比较两种分类法的性能
假设我们想用k折交叉验证的方法比较两种分类法的性能。首先,把数据集D划分为k个大小相等部分,然后,使用每种分类法,在k-1份数据上构建模型,并在剩余的划分上进行检验,这个步骤重复k次,每次使用不同的划分进行检验。
令$M_{ij}$表示分类技术$L_{i}$在第$j$次迭代产生的模型,注意,每对 模型$M_{1j}$和$M_{2j}$在相同的划分$j$上进行检验。用$e_{1j}$和$e_{2j}$分别表示它们的错误率,它们在第$j$折上的错误率之差可以记作$d_{j}=e_{1j}-e_{2j}$。如果$k$充分大,则$d_{j}$服从于均值为$d_{t}^{cv}$(错误率的真实差)、方差为$\sigma^{cv}$的正态分布。与前面的方法不同,观察的差的总方差用下式进行估计:
$$\widetilde{\sigma}_{d^{cv}}^{2}=\frac{\sum_{j=1}^{k}(d_{j}-\overline{d})^{2}}{k(k-1)}$$
其中,$\overline{d}$是平均差。对于这个方法,我们需要用$t$分布计算$d_{t}^{cv}$的置信区间:
$$d_{t}^{cv}=\overline{d}\pm t_{1-\alpha,k-1}\widetilde{\sigma}_{d^{cv}}$$
系数 $t_{1-\alpha,k-1}$可以通过两个参数(置信水平$(1-\alpha)$和自由度$k-1$)查概率表得到。该$t$分布的概率表在下标中给出。
例:假设两个分类技术产生的模型的准确率估计差的均值等于0.05,标准差等于0.002。如果使用30折交叉验证方法估计准确率,则在95%置信水平下,真是准确率差为:
$$d_{t}^{cv}=0.05\pm 1.7\times0.002$$
因为置信区间不跨越0值,两个分类法的观察差是统计显著的。