《数据挖掘导论》读书笔记(5)分类:基本概念决策树与模型评估[2016821]PythonerMLer

第4章分类:基本概念、决策树与模型评估

分类任务就是确定对象属于哪个预定义的目标类。分类问题是一个普遍存在的问题,有许多不同的应用。例如:根据电子邮件的标题和内容检查出垃圾邮件,根据核磁共振扫描的结果区分肿瘤是恶性的还是良性的,根据星系的形状对它们进行分析。

4.1预备知识

分类任务的输入数据是记录的集合。每条记录也称为实例或样例,用元组(x,y)表示,其中x是属性的集合,而y是一个特殊的属性,指出样例的类标号(也称为分类属性或目标属性)。下表列出一个样本数据集,用来将脊椎动物分成以下几类:哺乳类、鸟类、鱼类、爬行类和两栖类。属性集致命脊椎动物的性质,如提问、表皮覆盖、反之后代的方式、飞行的能力和在水中生存的能力等。尽管下表中的属性主要是离散的,但是属性集也可以包含连续特征。另一方面,类标号却必须是离散属性,这正是区别分类与回归(regression)的关键特征。回归是一种预测建模任务,其中目标属性y是连续的。

目标函数也称为分类模型(classificationmodel)。分类模型可以用于以下目的。

描述性建模分类模型可以作为解释性的工具,用于区分不同类中的对象。例如对于生物学家或者其他人,一个描述性模型有助于概括上表中的数据,并说明哪些特征决定一种脊椎动物是哺乳类、爬行类、鸟类、鱼类或两栖类。

预测性建模分类模型还可以用于预测未知记录的类标号。如下图所示,分类模型可以看做一个黑箱,当给定未知记录的属性集上的值时,它自动地赋予未知样本类标号。例如,假设有一种叫做毒蜥的生物,其特征如下:

可以根据使用4-1中的数据集建立的分类模型来确定该生物所属的类。

分类技术非常适合预测或描述二元或标称类型的数据集。对于序数分类(例如把人类分成高收入、中等收入或低收入组),分类技术不太有效。因为分类技术部考虑隐含在目标类中的序关系。其他形式的联系,如子类与超类的关系也被忽略。本章余下的部分只考虑二元的或标称类型的类标号。

4.2解决分类问题的一般方法

分类技术是一种根据输入数据集简历分类模型的系统方法。分类法的例子包括决策树分类法、基于规则的分类法、神经网络、支持向量机和朴素贝叶斯分类法。这些技术都使用一种学习算法(learningalgorithm)确定分类模型,该模型能够很好地拟合输入数据中类标号和属性之间的联系。学习算法得到的模型不仅要很好地拟合输入数据,还要能够正确地预测未知样本的类标号。因此,训练算法的主要目标就是建立具有很好的泛化能力模型,即建立能够准确地预测未知样本类标号的模型。

下图展示解决分类问题的一般方法。首先,需要一个训练集(trainingset),它由类标号已知的记录组成,使用训练集简历分类模型,该模型随后将运用于检验集(testset),检验集由类标号未知的记录组成。

分类模型的性能根据模型正确和错误预测的检验记录进行评估,这些计数存放在称作混淆矩阵(confusionmatrix)的表格中。表4-2描述二元分类问题的混淆矩阵。表中每个表项fij表示实际类标号为i但被预测为类j的记录数。例如,f01代表原本属于类0单被误分类为1的记录数。按照混淆矩阵中的表项,被分类模型正确预测的样本总数是(f11+f00),而被错误预测的样本总数是(f10+f01)。

虽然混淆矩阵通过衡量分类模型性能的信息,但是用一个数据汇总这些信息更便于比较不同模型的性能。为实现这一目的,可以使用性能度量(performancemetric),如准确率(accuracy),其定义如下:

同样,分类模型的性能可以用错误率(errorrate)来表示,其定义如下:

大多数分类算法都在寻求这样一些模型,当把他们应用于检验集时具有最高的准确率,或者等价地,具有最低的错误率。在4.5节再次讨论模型的评估问题。

4.3决策树归纳

本节介绍决策树(decisiontree)分类法,这是一种简单但却广泛使用的分类技术。

4.3.1决策树的工作原理

为解决决策树分类的工作原理,考虑上一节中介绍的脊椎动物分类问题的简化版本。这里我们不把脊椎动物分为五个不同的物种,而只考虑两个类别:哺乳类动物和非哺乳类动物。

假设科学家发现一个新的物种,怎么判断它是哺乳动物还是非哺乳动物呢?一种方法是针对物种的特征提出一系列问题,第一个问题可能是,该物种是冷血动物还是恒温动物。如果它是冷血的,则该物种肯定不是哺乳动物;否则它或者是鸟类,或者是某种哺乳动物。如果它是恒温的,需要接着问:该物种是由雌性产崽进行繁殖的吗?如果是,则它肯定为哺乳动物,否则它有可能是非哺乳动物。

通过一处一系列精心构思的关于检验记录属性的问题,可以解决分类问题。每当一个问题得到答案,后续的问题将随之而来,知道我们得到记录的类标号。这一些列的问题和这些问题的可能回答可以组织成决策树的形式,决策树是一种由节点和有向边组成的层次结构。图4-4显示哺乳类动物分类问题的决策树,树中包含三种节点。

根结点(rootnode),它没有入变,但有零条或多条出边。

内部结点(internalnode),恰有一条入边和两条或多条出边。

叶结点(leafnode),恰有一条入边,但没有出边。

在决策树中,每个叶结点都赋予一个类标号。非终结点(包括根节点和内部结点)包含属性测试条件,用以区分不同特性的记录。例如,在下图中,在根节点处,使用提问这个属性把冷血脊椎动物和恒温脊椎动物区别开来。因为所有的冷血脊椎动物都是非哺乳动物,所以用一个类称号为非哺乳动物的叶节点作为根节点的右子女。如果脊椎动物的提问是恒温的,则接下来用胎生这个属性来区分哺乳动物与其他恒温动物(主要是鸟类)。

一旦构造了决策树,对检验记录进行分类就相当容易了。从树的根节点开始,将测试条件用于检验记录,根据测试结果选择适当的分支。沿着该分支或者到达另一个内部结点,使用新的测试条件,或者到达一个叶节点。到达叶节点之后,叶节点的类称号就被赋值给该检验记录。例如,下图显示应用决策树预测火烈鸟的类标号所经过的路径,路径终止于类称号为非哺乳动物的叶节点。

4.3.2如何建立决策树

1.Hunt算法

(1)如果Dt中所有记录都属于用一个类yt,则t是叶节点,用yt标记。

(2)如果Dt中包含属于多个类的记录,则选择一个属性测试条件(attributetestcondition),将记录划分成较小的子集。对于测试条件的每个输出,创建一个子女节点,并根据测试结果将Dt中的记录分布到子女节点中。然后对于每个子女节点,递归地调用该算法。

为了解释该算法如何执行,考虑如下问题:预测贷款申请者是会按时归还贷款,还是会拖欠贷款。对于这个问题,训练数据集可以通过考察以前贷款者的贷款记录来构造。下图所示的例子中,每条记录都包含贷款者的个人信息,以及贷款者是否拖欠贷款的类标号。

该分类问题的初始决策树只有一个节点,类标号为“拖欠贷款者=否”,意味着大多数贷款者都按时归还贷款。然而,该树需要进一步细化,因为根节点包含两个类的记录。根据“有房者”测试条件,这些记录被划分为较小的子集,如图(b)所示。选取属性测试条件的理由稍后讨论,目前,我们假定此处这样选择是划分数据的最优标准。接下来,对根节点的每个子女递归地调用Hunt算法。从上图给出的训练数据集可以看出,有房的贷款者都能按时偿还了贷款,因此,根节点的左子女为叶节点,标记为“拖欠贷款者=否”。对于右子女,我们需要继续递归地调用Hunt算法,知道所有的记录都属于同一类为止。每次递归调用所形成的决策树显示在图(c)图(d)中。

如果属性值的每种组合都在训练数据集中出现,并且每种组合都具有唯一的类标号,则Hunt算法是有效的。但是对于大多数实际情况,这些假设太苛刻了。因此,需要附加的条件来处理以下的情况。

2.决策树归纳的设计问题

决策树归纳的学习算法必须解决下面的两个问题:

(1)如何分裂训练记录?树增长过程的每个递归步都必须选择一个属性测试条件,将记录划分成较小的子集。为了实现这个步骤,算法必须提供为不同类型的的属性指定测试条件的方法,并且提供评估每种测试条件的客观度量。

(2)如何停止分裂过程?需要有结束条件,以终止决策树的生长过程。一个可能的策略是分列二结点,直到所有的记录都属于同一个类,或者所有的记录都具有相同的属性值。尽管两个结束条件对于结束决策树归纳算法都是允许的,但是还可以使用其他的标准提前终止树的生长过程。提前终止的优点将在4.4.5节讨论。

4.3.3表示属性测试条件的方法

决策树归纳算法必须为不同类型的属性提供表示属性测试条件和其对应输出的方法。

二元属性二元属性的测试条件产生两个可能的输出,如下图所示:

标称属性由于标称属性有多个属性值,它的测试条件可以用两种方法表示,对于多路划分,其输出数取决于该属性值的个数。例如,如果属性婚姻状况有三个不同的属性值---单身、已婚、离异,则它的测试条件就会产生一个三路划分。另一方面,某些决策树算法(如CART)只产生二元化分,它们考虑创建k个属性值的二元化分的所有2^(k-1)-1种方法。图(b)显示了把婚姻状况的属性值划分为两个子集的三种不同的分组方法。

序数属性序数属性也可以产生二元或多路划分,只要不违背序数属性值的有序性,就可以对属性值进行分组。下图显示了按照属性衬衣尺码划分训练记录的不同的方法。图(a)和图(b)中的分组保持了属性值间的序关系,而图(c)所示的分组则违反了这一性质,因为它把小号和大号分为一组,把中号和加大号放在另一组。

4.3.4选择最佳划分的度量

有很多度量可以用来确定划分记录的最佳方法,这些度量用划分谦和划分后记录的类分布定义。

设p(i|t)表示给定结点t中属于类i的记录所占的比例,有时,我们省略结点t,直接Pi表示该比例。在两类问题中,任意结点的类分布都可以记录(p0,p1),其中p1=1-p0。例如,考虑下图中的测试条件,划分前的类分布时(0.5,0.5),因为来自每个类的记录数相等。如果使用性别属性来划分数据,则子女结点的类分布分别为(0.4,0.4)和(0.4,0.6),虽然划分后两个类的分布不再平衡,但是子女结点仍然包含两个类的记录;按照第二个属性车型进行划分,将得到纯度更高的划分。

选择最佳划分的度量通常是根据划分后子女结点不纯性的程度。不纯的程度越低,类分布就越倾斜。例如,类分布为(0,1)的结点具有零不纯性,而均衡分布(0.5,0.5)的结点具有最高的不纯性。不纯性度量的例子包括:

其中c是类的个数,并且在计算熵时,Olog20=0。

下图显示了二分类问题不纯性度量值的比较,p表示属于其中一个类的记录所占的比例。从图中可以看出,三种方法都在类分布均衡时(即当p=0.5时)达到最大值,而当所有记录都属于同一个类时(p等于1或0)达到最小值。下面我们给出三种不纯性度量方法的计算实例。

从上面的例子及上图可以看出,不同的不纯性度量是一致的。根据计算,结点N1具有最低的不纯性度量值,接下来依次是N2,N3,虽然结果是一致的,但是作为测试条件的属性选择仍然因不纯性度量的选择而异。

为了确定测试条件的效果,我们需要比较父结点(划分前)的不纯程度和子女结点(划分后)的不纯程度,它们的差越大,测试条件的效果就越好,增益是一种可以用来确定划分效果的标准:

1.二元属性的划分

考虑4-14中的图表,假设有两种方法将数据划分成较小的子集。划分前,Gini指标等于0.5,因为属于两个类的记录的个数相等。如果选择属性A划分数据,节点N1的Gini指标等于0.486,而N2的Gini指标等于0.480,派生结点的Gini指标的加权平均为(7/12)*0.4898+(5/12)*0.480=0.486。类似的,我们可以计算属性B的Gini指标甲醛平均值是0.371。因为属性B具有更小的Gini指标,它比属性A更可取。

2.标称属性的划分

正如前面提到的,标称属性可以产生二元划分或多路划分。如图4-15所示。二元划分的Gini指标与计算与二元属性类型。对于车型属性第一种二元分组,{运动,豪华}的Gini指标是0.4922,而{家用}的Gini指标是0.3750。该分组的Gini指标加权平均是:

16/20*0.4922+4/20*0.3750=0.468

类似的,对第二种二元分组{运动}和{家用,豪华},Gini指标加权平均是0.167。第二种分组的Gini指标值相对较低,因为其对应的子集的纯度高的多。

对于多路划分,需要计算每个属性值Gini指标。Gini({家用{)=0.375,Gini({运动})=0,Gini({豪华})=0.219,多路划分的总Gini指标等于:

4/20*0.375+8/20*0+8/20*0.219=0.163

多路划分的Gini指标比两个二元划分都小,这一结果并不奇怪,因为二元划分实际上合并了多路划分的某些输出,自然降低了子集的纯度。

3.连续属性的划分

对第一个候选v=55,没有年收入小于55K的记录,所以年收入<55k的派生结点的Gini指标是0;另一方面,年收入大于或等于55K的样本记录数目分别为3(类Yes)和7(类No),这样,该结点的Gini指标是0.420.该候选划分的总Gini指标等于0*0+1*0.420=0.420。

..........

4.增益率

解决该问题的策略有两种。第一种策略是限制测试条件只能是二元划分,CART这样的决策树算法采用的就是这种策略;另一种策略是修改评估划分的标准,把属性测试条件产生的输出数也考虑进去。例如,决策树算法C4.5采用称作增益率(gainratio)的划分标准来评估划分。增益率定义如下:

4.3.5决策树归纳算法

算法4.1给出了称作TreeGrowth的决策树归纳算法的框架。该算法的输入是训练记录集E合属性集F。算法递归地选择最优的属性来划分数据(步骤7),并扩展树的叶结点(步骤11和步骤12),知道满足结束条件(步骤1)。算法的细节如下:

(1)函数createdNode()为决策树建立新结点。决策树的节点或者是一个测试条件,记作mode.test_cond,或者是一个类标号,记作node.label。

(2)函数find_best_split()确定应当选择哪个属性作为划分训练记录的测试条件。如前所述,测试条件的选择取决于使用哪种不纯性度量来评估划分,一些广泛使用的度量包括熵、Gini指标和X2统计量。

(3)函数Classify()为叶结点确定类标号。对于每个叶结点t,令P(i|t)表示该节点上属于类i的训练记录所占的比例,在大多数情况下,都将叶结点指派到具有多数记录的类:

leaf.label=argmaxp(i|t)

其中,操作argmax返回最大化p(i|t)的参数值i。p(i|t)除了提供确定叶结点类标号所需要的信息之外,还可以用来估计分配到叶结点t的记录属于类i的概率。5.7节讨论如何使用这种概率估计,在不同的代价函数下,确定决策树的性能。

(4)函数stopping_cond()通过检查是否所有的记录都属于同一个类,或者都具有相同额属性值,决定是否终止决策树的增长。终止递归函数的另一种方法是,检查记录数是否小于某个最小阈值。

建立决策树之后,可以进行树剪枝(tree-pruning),以减小决策树的规模。决策树过大容易受所谓过分拟合(overfitting)现象的影响。通过修建初始决策树的分支,剪枝有助于提高决策树的泛化能力。过分拟合和树剪枝问题将在4.4更详细的讨论。

4.3.6例子,Web机器人检测

web使用挖掘就是利用数据挖掘的技术,从web访问日志中提取有用的模式。这些模式能够提示站点访问者的一些有趣特性:例如,一个人频繁地访问某个web站点,并打开介绍同一产品的网页,如果商家提供一些打折或者免费运输的优惠,这个人很可能会购买这种商品。

在web使用挖掘中,重要的是要区分用户访问和web机器人(webrobot)访问。web机器人(又称为web爬虫)是一个软件程序,它可以自动跟踪嵌入网页中的超链接,定位和获取Internet上的信息。这些程序安装在搜索引擎的入口,收集索引网页必须的文档。在应用web挖掘技术分析人类的浏览习惯之前,必须过滤掉web机器人的访问。

用于分类的数据集包含2916个记录,web机器人(类1)和正常用户(类2)会话的个数相等,10%的数据用于训练,而90%的数据用于检验。生成的决策树模型显示在图4-18中,该决策树在训练集上的错误率为3.8%,在检验集上的错误率为5.3%。

该模型表明可以从以下4个方面区分出web机器人和正常用户。

(1)web机器人的访问倾向于宽而浅,而正常用户访问比较集中(窄而深)。

(3)web机器人的会话的长度趋于较长,包含了大量请求页面。

(4)web机器人更可能对相同的文档发出重复的请求,因为正常用户访问的网页常常会被浏览器保存。

4.3.7决策树归纳的特点

下面是对决策树归纳算法重要特点的总结。

(1)决策树归纳是一种构建分类模型的非参数方法。换句话说,它不要求任何先验假设,不假定类和其他属性服从一定的概率分布。

(2)找到最佳的决策树是NP完全问题。许多决策树算法都采取启发式的方法指导对假设空间的搜索。例如,4.3.5节中介绍的算法就采用了一种贪心的、自顶向下的递归划分策略建立决策树。

(4)决策树相对容易解释,特别是小型的决策树,在很多简单的数据集上,决策树的准确率也可以与其他分类算法相媲美。

(5)决策树是学习离散值函数的典型代表。然而,它不能很好地推广到某些特定的布尔问题。一个著名的例子是奇偶函数,当奇数(偶数)个布尔属性为真时其值为0(1)。对这样的函数准确建模需要一颗具有2d个结点的满决策树,其中d是布尔属性的个数。

(6)决策树算法对于噪声的干扰具有相当好的鲁棒性,采用避免过分拟合的方法之后尤其如此。避免过分拟合的方法将在4.4节介绍。

(8)由于大多数的决策树算法都采用自顶向下的递归划分方法,因此沿着树向下,记录会越来越少。在叶结点,记录可能太少,对于叶结点代表的类,不能做出具有统计意义的判决,这就是所谓的数据碎片(datafragmentation)问题。解决该问题的一种可行的方法是,当样本小于某个特定阈值时停止分裂。

(9)子树可能在决策树中重复多次,如图4-19所示,这使得决策树过于复杂,并且可能更难解释。当决策树的每个内部结点都依赖单个属性测试条件时,就会出现这种情形。由于大多数的决策树算法都采用分治划分策略,因此在属性空间的不同部分可以使用相同的测试条件,从而导致子树重复问题。

(10)迄今为止,本章介绍的测试条件每次都只涉及一个属性。这样,可以将决策树的生长过程看成划分属性空间为不相交的区域的过程,直到每个区域都只包含同一类的记录(见图4-20)。两个不同类的相邻区域之间的边界称作决策边界(decisionboundary)。由于测试条件只涉及单个属性,因此决策边界是直线,即平行于“坐标轴”,这就限制了决策树对连续属性之间复杂关系建模的表达能力。图4-21显示了一个数据集,使用一次只涉及一个属性的测试条件的决策树算法很难有效地对它进行分类。

斜决策树(obliquedecisiontree)可以克服以上的局限,因为它允许测试条件涉及多个属性。图4-21中的数据集可以很容易地用斜决策树表示,该斜决策树只有一个结点,其测试条件为:

x+y<1

尽管这种技术具有更强的表达能力,并且能够产生更紧凑的决策树,但是为给定的结点找出最佳测试条件的计算可能是相当复杂的。

(11)研究表明不纯性度量方法的选择对决策树算法的性能的影响很小,这是因为许多度量方法相互之间都是一致的,如图4-13所示,实际上,树剪枝对最终决策树的影响比不纯性度量选择的影响更大。

4.4模型的过分拟合

分类模型的误差大致分为两种:训练误差(trainingerror)和泛化误差(generalizationerror)。训练误差也称再代入误差(resubstitutionerror)或表现误差(apparenterror),是在训练记录上误分类样本比例,而泛化误差是模型在未知记录上的期望误差。

回顾4.2节,一个好的分类模型不仅要能够很好地拟合训练数据,而且对未知样本也要能准确地分类。换句话说,一个好的分类模型必须具有低训练误差和低泛化误差。这一点非常重要,因为对训练数据拟合度过高的模型,其泛化误差可能比具有较高训练误差的模型高。这种情况就是所谓的模型过分拟合。

二维数据过分拟合的例子关于过分拟合问题的具体例子,考虑图4-22所示的二维数据集。数据集中的数据点属于两个类,分别标记为类“0”和类“+”,类“0”的数据点由三个高斯分布混合产生,而类“+”的数据点用一个均匀分布产生。数据集中,总共有1200个数据点是属于类“0”,1800个属于类“+”,其中30%的点用于训练,剩下的70%用于检验。对训练集使用以Gini指标作为不纯性度量的决策树分类。为了研究过分拟合的影响,对初始的、完全生长的决策树进行了不同程度的剪枝。图4-23显示了决策树的训练误差和检验误差。

注意,当决策树很小时,训练和检验误差都很大,这种情况称作模型拟合不足(modelunderfitting)。出现拟合不足的原因是模型尚未学习到数据的真实结构,因此,模型在训练集合检验集上的性能都很差。随着决策树中结点数的增加,模型的训练误差和检验误差都会随之降低。然而,一旦树的规模变得太大,即使训练误差还在继续降低,但是检验误差开始增大,这种现象称为模型过分拟合(modeloverfitting)。

为了理解过分拟合现象,注意模型的训练误差随模型的复杂度增加而降低。例如,可以扩展树的叶结点,直到它完全拟合训练误差为0,但是检验误差可能很大,因为该树可能包含这样的结点,它们偶然地拟合训练数据中某些噪声。这些结点降低了决策树的性能,因为它们不能很好的泛化到检验样本。图4-24是两颗具有不同结点数的决策树,结点树少的决策树具有较高的训练误差,但是与更复杂的树相比,它具有较低的检验误差。

过分拟合与拟合不足是两种与模型复杂度有关的异常现象。本节余下的部分将继续讨论造成模型过分拟合的一些潜在因素。

4.4.1噪声导致的过分拟合

考虑表4-3和表4-4中哺乳动物的分类问题的训练数据集合和检验数据集合。十个训练记录中有两个被错误地标记:蝙蝠和鲸被错误地标记为非哺乳类动物,而不是哺乳动物。

完全拟合训练数据的决策树实现在图4-25a中。虽然该树的训练误差为0,但它在检验数据上的误差高达30%。人和海豚都被误分类为非哺乳类动物,因为它们在属性体温、胎生、4条腿上的属性值与训练数据中被错误标记的样本属性值相同。另一方面,针鼹是个例外,其检验记录中的类标号与训练集中相似的记录的类标号相反。例外导致的错误是不可避免的,它设定了分类器可以达到的最小错误率。

相反,图4-25b中决策树M2具有较低的检验误差(10%),尽管它的训练误差较高(20%)。很明显,决策树M1过分拟合了训练数据,因为存在一个更简单、但在检验数据集上具有更低检验误差的模型。模型M1中的属性测试条件4条脚具有欺骗性,因为它拟合了无标记的训练记录,导致了对检验集中记录的五分类。

4.4.2缺乏代表性样本导致的过分拟合

根据少量训练记录做出分类决策的模型也容易受过分拟合的影响。由于训练数据缺乏具有代表性的样本,在没有多少训练记录的情况下,学习算法仍然继续细化模型就会产生这样的模型。下面举例说明。

考虑表4-5中的五个训练记录,表中所有的记录都是正确标记的,对应的决策树在图4-26中。尽管它的训练误差为0,但是它的检验误差却高达30%。

人、大象和海豚都被误分类,因为决策树把很温但不冬眠的脊柱动物划分为非哺乳动物。决策树做出这样的分类决策是因为只有一个训练记录具有这样的特征。这个例子清楚地表明,当决策树的叶结点没有足够的代表性样本时,很可能做出错误的预测。

4.4.3过分拟合与多重比较过程

模型的过分拟合可能出现在使用所谓的多重比较过程(multiplecomparisonprocedure)的学习算法中。为了理解多重比较过程,考虑预测未来10个交易日股市是升还是降的任务。如果股票分析家简单地随机猜测,则对任意交易日预测正确的概率是0.5,然而,10次猜测至少正确预测8次的概率是。

这看起来不大可能。

假设我们想从50个股票分析家中选择一个投资顾问,策略是选择在未来的10个交易日做出最多正确预测的分析家。该策略的缺点是,即使所有的分析家都用随机猜测做出预测,至少有一个分析家做出8次正确预测的概率是:

这相当高,尽管每个分析家做出8次正确预测的概率很低。但是把他们放在一起,找到一个能够做出准确的预测。

......

4.4.4泛化误差估计

虽然过分拟合的主要原因一直是个争议的话题,大家还是普遍同意模型的复杂度对模型的过分拟合有影响。如图4-23所示。问题是,如何确定正确的模型复杂度?理想的复杂度是能产生最低泛化误差的模型的复杂度。然而,在简历模型的过程中,学习算法只能访问训练数据集(见图4-3),对检验数据集,它一无所知,因此也不知道所建立的决策树在未知记录上的性能。我们所能做的就是估计决策树的泛化误差。本节提供一些估计泛化误差的方法。

1.使用再代入估计

再代入估计方法假设训练数据集可以很好地代表整体数据,因而,可以使用训练误差(又称再代入误差)提供对泛化误差的乐观估计。在这样的前提下,决策树归纳算法简单地选择产生最低训练误差的模型作为最终的模型。然而,训练误差通常是泛化误差的一种很差的估计。

例4.1考虑图4-27中的二叉决策树,假设两棵决策树都由相同的训练数据产生,并且都根据每个叶结点多数类做出分类决策。注意,左边的树TL复杂一些,它扩展了右边决策树TR的某些叶结点。左决策树的训练误差是e(TL)=4/24=0.167,而右决策树的训练误差是e(TR)=6/24=0.25。根据再代入估计,左决策树要优于右决策树。

2.结合模型复杂度

如前所述,模型越是复杂,出现过分拟合的几率就越高。因此,我们更喜欢采用较为简单的模型。这种策略与应用众所周知的奥卡姆剃刀(Occam'srazor)或节俭原则(principleofparsimony)一致。

定义4.2奥卡姆剃刀:给定两个具有相同泛化误差的模型,较简单的模型比较复杂的模型更可取。

奥卡姆剃刀是很直观的原则,因为复杂模型中的附加成分很大程度上是完全对偶然的拟合。用爱因斯坦的话来说,“所有事情都应该尽可能的简单,但不是简化。”下面我们介绍两种把模型复杂度与分类模型评估结合在一起的方法。

悲观误差评估第一种方法明确地把使用训练误差与模型复杂度罚项的和计算泛化误差。结果泛化误差可以看做模型的悲观误差估计(pessimisticerrorestimate)。例如,设n(t)是结点t分类的训练数据记录,e(t)是被误分类的记录数。决策树T的悲观误差估计eg(T)可以用下式计算:

其中,k是决策树的叶结点数,e(T)决策树的总训练误差,Nt是训练记录数,Ω(ti)是每个结点ti对应的罚项。

例4.2考虑图4-27中的二叉决策树,如果罚项等于0.5,左边的决策树的悲观误差估计为:

右边的决策树的悲观误差估计为:

这样,左边的决策树比右边的决策树具有更好的悲观误差估计。对二叉树来说,0.5的罚项意味着只要至少能够改善一个训练记录的分类,结点就应当扩展。因为扩展一个结点等价于总误差增加0.5,代价比犯一个训练错误小。

如果对于所有的结点t,Ω(t)=1,左边的决策树的北瓜误差估计为eg(TL)=11/24=0.458,右边的决策树的悲观误差估计为eg(TR)=10/24=0.417。因此,右边的决策树比左边的决策树具有更好的悲观错误率。这样,除非能够减少一个以上训练记录的误分类,否则结点不应当扩展。

最小描述长度原则另一种结合模型复杂度的方法是基于称作最小描述长度(minimumdescriptionlenght,MDL)原则的信息论方法。为了解释说明该原则,考虑图4-28中的例子。在该例子中,A和B都是已知属性x值的给定记录集。另外,A知道每个记录的确切类标号,而B却不知道这些信息。B可以通过要求A顺序传送类标号而获得每个记录的分类。一条消息需要θ(n)比特的信息,其中n是记录的总数。

另一种可能是,A决定建立一个分类模型,概括x和y之间的关系。在传送给B前,模型用压缩形式编码。如果模型的准确率是100%,那么传输的代价就等于模型编码的代价。否则,A还必须传输哪些记录被模型错误分类信息。传输的总代价是:

其中,等式右边的第一项是模型编码的开销,而第二项是五分类记录编码的开销。根据MDL原则,我们寻找最小化开销函数的模型。

3.估计统计上节

4.使用确认集

在该方法中,不是用训练集泛化误差,而是把原始的训练数据集分为两个较小的子集,一个子集用于训练,而另一个称作确认集,用于估计泛化误差。典型的做法是,保留2/3的训练数据集来建立模型,剩余的1/3用作误差估计。

该方法常常用于通过参数控制获得具有不同复杂度模型的分类技术。通过调整学习算法中的参数(如决策树中剪枝的程度),知道学习算法产生的模型在确认集上达到最低的错误率。可以估计最佳模型的复杂度。虽然该方法为评估模型在未知样本上的性能提供了较好的办法,但用于训练的记录也减少了。

4.4.5处理决策树归纳中的过分拟合

在前面章节中,我们介绍了一些估计分类模型泛化误差的方法。对于泛化误差可靠的估计能让学习算法搜索到准确的模型,而不会对训练数据集过分拟合。本节介绍两种在决策树归纳上避免过分拟合的策略。

先剪枝(提前终止规则)在这种方法中,树增长算法在产生完全拟合整个训练数据集的完全增长的决策树之前就停止决策树的生长。为了做到这一点,需要采用更具有限制性的结束条件,例如,当观察到的不纯性度量的增益(或估计的泛化误差的改进)低于某个确定的阈值时就停止扩展叶结点。这种方法的优点在于避免产生过分拟合训练数据的过于复杂的子树。然而,很难为提前终止选择正确的阈值。阈值太高将导致拟合不足的模型,而阈值太低就不能充分地解决过分拟合的问题。此外,即便使用已有的属性测试条件得不到显著的增益,接下来的划分也可能产生较好的子树。

后剪枝在该方法中,初始决策树按照最大规模生长,然后进行剪枝的步骤。按照自底向上的方式修建完全增长的决策树。修剪有两种做法:(1)用新的叶结点替换子树,该叶结点的类标号由树下记录中的多数类确定;或者(2)用子树中最长使用的分支代替子树。当模型不能再改进时终止剪枝步骤。与先剪枝相比,后剪枝技术倾向于产生更好的结果,因为不像先剪枝,后剪枝是根据完全增长的决策树做出的剪枝决策。先剪枝则可能过早终止决策树的生长。然后,对于后剪枝,当子树被剪掉后,生长完全决策树的额外的计算就被浪费了。

图4-29展示了4.3.6节web机器人检测的简化后的决策树模型。注意跟在depth=1的子树已经用涉及属性ImagePages的一个分支替换,这种方法又称子树提升(subtreeraising);depth>1且MultiAgent=0的子树被类标号为0的叶结点替换,这种方法称作子树替换(subtreereplacement);depth>1且MultiAgent=1的子树完整保留。

4.5评估分类器的性能

4.4.4节中介绍了集中在训练过程中估计模型泛化误差的方法。估计误差有助于学习算法进行模型选择(modelselection),即找到一个具有合适复杂度、不易发生过拟合的模型。模型一旦建立,就可以应用到检验数据集上,预测未知记录的来标号。

测试模型在检验集上的性能是有用的,因为这样的测量给出模型泛化误差的无偏估计。在检验集上计算出的准确率或错误率可以用来比较不同分类器在相同领域上的性能。然而,为了做到这一点,检验记录的类标号必须是已知的。本节回顾一些常用的评估分类器性能的方法。

4.5.1保持方法

在保持(Holdout)方法中,将被标记的原始数据划分成两个不相交的集合,分别称为训练集合检验集。在训练数据集上归纳分类模型,在检验集上评估模型的性能。训练集和检验集的划分比例通常根据分析家的判断(例如,50-50,或者2/3作为训练集,1/3作为检验集)。分类器的准确率根据模型在检验集上的准确率估计。

4.5.2随机二次抽样

4.5.3交叉验证

替代随机二次抽样的一种方法时交叉验证(cross-validation)。在该方法中,每个记录用于训练的次数相同吗,并且恰好检验一次。为了解释该方法,假设把数据分为相同大小的两个子集,首先,我们选择一个子集作为训练集,而另一个做检验集,然后交换两个集合的角色,原先做训练集的现在做检验集,反之亦然,这种方法较二折交叉验证。总误差通过对两次运行的误差求和得到。在这个例子中,每个样本各做一次训练样本和检验样本。k折交叉验证是对该方法的推广,把数据分为大小相同的k分,在每次运行,选择其中一份做检验集,而其余的全部作为训练集,该过程重复k次,使得每份数据都用于检验恰好一次。同样,总误差是所有k次运行的误差纸之和。k折价差验证方法的一种特殊情况使令k=N,其中N是数据集的大小,在这种所谓留一(leave-one-out)方法中,每个检验集只有一个记录。该方法的优点是使用尽可能多的训练记录,此外,检验集之间是互斥的,并且有效地覆盖了整个数据集;该方法的缺点是整个过程重复N次,计算上开销很大,此外,因为每个检验集只有一个记录,性能估计度量的方法偏高。

4.5.4自助法

迄今为止,我们介绍的方法都是假定训练记录采用不放回抽样,因此,训练集和检验集都不包含重复记录。在自助(boostrap)方法中,训练记录采用有放回抽样,即已经选座训练的记录将放回原来的记录集中,使得它等概率地被重新抽取。如果原始数据有N个记录,可以证明,平均来说,大小为N的自助样本大约包含原始数据中63.2%的记录。这是因为一个记录被自助抽样抽取的概率是1-(1-1/N)N,当N充分大时,该概率逐渐逼近1-e-1=0.632。没有抽中的记录就称为检验集的一部分,将训练集简历的模型应用到检验集上,得到自助样本准确率的一个估计εt。抽样过程重复b次,产生b个自助样本。

按照如何计算分类器的总准确率,有几种不同的自助抽样法。常用的方法之一是.632自助(.632boostrap),它通过组合每个自助样本的准确率εt和由包含所有标记样本的训练集计算的准确率(accs)计算总准确率(accboot):

THE END
1.数据挖掘概念(AnalysisServices这些模式和趋势可以被收集在一起并定义为“数据挖掘模型”。挖掘模型可以应用于特定的业务方案,例如: 预测销售额 向特定客户发送邮件 确定可能需要搭售的产品 查找客户将产品放入购物车的顺序序列 生成挖掘模型是大型过程的一部分,此过程包括从提出相关数据问题并创建模型以解答这些问题到将模型部署到工作环境的所有事情。https://technet.microsoft.com/zh-cn/library/ms174949(en-us,sql.105).aspx
2.数据挖掘的分析方法可以划分为关联分析序列模式分析分类分析和数据挖掘是从大量数据中提取有用信息的方法,主要分为四种分析方式:关联分析、序列模式分析、分类分析和聚类分析。在本指南中,我们将详细介绍这四种方法的实现过程,并提供相应的代码示例。 数据挖掘流程 首先,我们需要明确数据挖掘的基本流程,如下表所示: 流程图 https://blog.51cto.com/u_16213297/12863680
3.C语言在数据挖掘中的作用编程语言C语言在数据挖掘中扮演着重要的角色,尽管它可能不是最常用的工具,但它的性能和灵活性使其在特定情况下非常有用。C语言在数据挖掘中的应用主要体现在以下几个方面: C语言在数据挖掘中的作用 高效处理大数据:C语言允许程序员直接操作内存,提高程序的执行效率,适合处理大规模数据集和复杂计算任务。 自定义算法开发:Chttps://m.yisu.com/zixun/942501.html
4.物联网原理及应用期末复习免挂指南交互原理:电子标签与阅读器之间通过耦合元件实现射频信号的空间(无接触)耦合;在耦合通道内,根据时序关系,实现能量的传递和数据交换。 传感器概念、分类、工作原理 传感器定义与工作原理:传感器(sensor)是由敏感元件和转换元件组成的一种检测装置,能感受到被测量,并能将检测和感受到的信息,按一定规律变换成为电信号(电压https://www.jianshu.com/p/33aa0cb1147c
5.什么是数据挖掘?定义重要性与类型SAP数据挖掘工具内置于高管仪表盘,用于从社交媒体、物联网传感器、位置感知设备、非结构化文本、视频等大数据中挖掘洞察。现代数据挖掘工具依托云计算、虚拟计算和内存数据库,能够以成本高效的方式管理各种来源的数据,并支持按需扩展。 数据挖掘的工作原理 数据挖掘的方法多种多样,不同的数据挖掘者会采用不同的方式。具体https://www.sap.cn/products/technology-platform/hana/what-is-data-mining.html
6.数据挖掘原理与实践学习(1)监视地震活动的地震波是数据挖掘吗说来惭愧,开始写这篇博客的动力是由于我数据挖掘考试挂了自己在寒假重新学习这一科,顺带着写写自己的感悟,希望能与大家一起学习。我有什么错漏或者大家什么好的建议都可以在评论区留言,我会认真回复的。我在这里使用的教材是电子工业出版社出版的《数据挖掘原理与实践学习》。 什么是https://blog.csdn.net/debug_robot/article/details/86521986
7.数据挖掘技术方法(精选十篇)笔者认为要提高复习课的效率,必须突破现在的复习课模式,挖掘技术背后的思想与方法,让学生进行深度学习,学生才会乐意参与到复习课堂中来。 二、高中信息技术复习课的现状 1.忽略知识的原理性 技术起源于人类生活的需求,人在开发技术的过程中,总会持有一定的思想去设想它,会持有一定的方法或遵循某种规律、原理去实现它,https://www.360wenmi.com/f/cnkeyg31vygx.html
8.2023版最新最强大数据面试宝典14. 在写MR时,什么情况下可以使用规约 规约(combiner)是不能够影响任务的运行结果的局部汇总,适用于求和类,不适用于求平均值,如果reduce的输入参数类型和输出参数的类型是一样的,则规约的类可以使用reduce类,只需要在驱动类中指明规约的类即可。 15. YARN集群的架构和工作原理知道多少 https://blog.itpub.net/70024922/viewspace-2935571/
9.人工智能心得体会(通用11篇)近年来,人工智能的研究和应用出现了许多新的领域,它们是传统人工智能的延伸和扩展。在新世纪开始的时候,这些新研究已引起人们的更密切关注。这些新领域有分布式人工智能与艾真体(agent)、计算智能与进化计算、数据挖掘与知识发现,以及人工生命等。下面逐一加以概略介绍。 https://www.ruiwen.com/xindetihui/5729744.html
10.基于数据挖掘技术研究评审专家名单泄露风险数据挖掘的基本原理和适用场景 数据挖掘是从大量的、不完全的、随机的数据中,提取隐含在其中的、事先无法预知的、但是潜在有用的信息和知识的过程。数据挖掘技术可以用来支持商务智能应用,如顾客分析、定向营销、工作流管理、欺诈检测以及自动化销售等。例如,银行可以通过数据挖掘技术对客户的信用评级进行分析https://www.ahggzy.org.cn/showdoc?docid=05a0af6a3f4d4d70a4ad128f256e36b3&id=557a28633b8d41c1bee5227e57518c30&subid=2957ab2c43e947c69c7f5158c159f601
11.数据挖掘的定义和解释数据挖掘的原理是什么? 数据挖掘涉及检查和分析大量信息,旨在发现有意义的模式和趋势。该过程包括收集数据、制定目标和应用数据挖掘技术。所选策略可能因目标而异,但数据挖掘的经验过程是相同的。典型的数据挖掘过程可能如下所示: 定义目标:例如,是否要进一步了解客户行为?是否要削减成本或增加收入?是否要识别欺诈?在数据https://www.kaspersky.com.cn/resource-center/definitions/data-mining
12.数据挖掘需要具备哪些思维原理?近几年,数据挖掘受到了学术界和工业界的广泛关注。所谓数据挖掘,指的是从数据库的大量数据中,揭示出隐含的、先前未知的、有潜在价值的信息的非平凡过程。日前,公众号“人工智能产业链联盟”发文称,如果你想从事数据挖掘工作的话,就需要具备以下四个思维原理。 https://time.geekbang.org/column/article/220218
13.爬虫课堂(十六)Scrapy框架结构及工作原理腾讯云开发者社区爬虫课堂(十六)|Scrapy框架结构及工作原理 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services)或者通用https://cloud.tencent.com/developer/article/1131826
14.数据挖掘原理(豆瓣)我要写书评 数据挖掘原理的书评 ···(全部 0 条) 这本书的其他版本· ···(全部2) The MIT Press (2001) 7.5分12人读过https://book.douban.com/subject/1103515/
15.人工智能心得体会9篇人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。人工智能的定义可以分为两部分,即“人工”和“智能”。“人工”比较好理解,争议性也不大。有时我们会要考虑什么是人力所能及制造的,或者https://www.unjs.com/fanwenwang/xdth/20221130181133_6041555.html
16.一小时了解数据挖掘④:商务智能原理解读の数据挖掘九大定律一小时了解数据挖掘④:商务智能原理解读の数据挖掘九大定律 马云在2012年网商大会上的演讲中说过:“假如我们数据分析师有了一个数据预报台,就像为企业装上了一个GPS和雷达,企业的出海将会更有把握。”。这里的数据预报台就是下文所述的商业智能。 什么是商业智能(Business Intelligence) https://www.cda.cn/view/621.html
17.MongoDB的集群架构与设计比如:用于分析、报表,数据挖掘,系统任务等。 3.3 副本集集群架构原理 一个副本集中Primary节点上能够完成读写操作,Secondary节点仅能用于读操作。Primary节点需要记录所有改变数据库状态的操作,这些记录保存在oplog中,这个文件存储在local数据库,各个Secondary节点通过此oplog来复制数据并应用于本地,保持本地的数据与主节点https://developer.aliyun.com/article/1323982
18.连锁经营管理专业(专科)(630604)商业采购与配送原理(07986本课程是连锁经营管理专业的核心主干课程之一。先修课程是管理学、市场营销和连锁经营原理与管理技术。 Ⅱ、课程内容与考核目标 第一章 导论 一、学习目的和要求 要求学生能够掌握商品概念,了解商品管理研究对象,掌握商品组织机构和商品管理原则,了解商品管理流程。 https://www.shmeea.edu.cn/page/04400/20190517/12734.html
19.数据挖掘原理与算法PDF扫描版[10MB]电子书下载数据挖掘原理与算法的使用对象是在校高年级的本科生、研究生及各个领域的高级软件开发人员。 数据挖掘原理与算法 目录: 前言 第1章 导论 1.1 数据挖掘的社会需求 1.2 什么是数据挖掘 1.3 数据挖掘的数据来源 1.4 数据挖掘的分类 1.4.1 分类分析(classification analysis) 1.4.2 聚类分析(clustering analysishttps://www.jb51.net/php/332629
20.遥测终端机的工作原理和主要应用领域无线数据采集传输终端,它是自动化监测与控制系统的核心装置,将现场的传感仪表与监控中心的平台无线连接起来,起到承上启下的作用。通常由信号输入/出模块、微处理器、有线/无线通讯设备、电源及外壳等组成,由微处理器控制,并支持网络系统。本文将详细介绍遥测终端机的定义、工作原理、应用领域以及未来发展趋势。一https://baijiahao.baidu.com/s?id=1781168882790697138&wfr=spider&for=pc
21.过来看!27个深度学习中的神经网络工作原理及其应用27个深度学习中的神经网络,这些神经网络拓扑结构应用于不同的场合,达到不同的目的,今天主要介绍每个神经网络的应用及其工作原理。 01感知器(P) 感知器模型也称为单层神经网络,这个神经网络只包含两层: 输入层 输出层 在这种类型的神经网络中,没有隐藏层。它接受一个输入并计算每个节点的加权输入。之后,它使用激活https://www.bilibili.com/read/cv12079642
22.80本值得一读的最佳数据科学书籍(一),站长资讯平台商业数据科学由著名的数据科学专家Foster Provost和Tom Fawcett撰写,介绍了数据科学的基本原理,并引导您完成从收集的数据中提取有用的知识和业务价值所必需的“数据分析思维”。本指南还可以帮助您了解当今使用的许多数据挖掘技术。 3.Doing Data Science:Straight Talk from the Frontline https://www.west.cn/cms/news/idcnews/2019-12-23/218777.html
23.《数据挖掘:原理与应用》参考答案.pdf《数据挖掘:原理与应用》参考答案.pdf 19页内容提供方:小逗号 大小:914.95 KB 字数:约1.95万字 发布时间:2022-09-07发布于四川 浏览人气:937 下载次数:仅上传者可见 收藏次数:0 需要金币:*** 金币 (10金币=人民币1元)《数据挖掘:原理与应用》参考答案.pdf 关闭预览 想预览更多内容,点击免费在线https://max.book118.com/html/2022/0905/7060035031004162.shtm
24.waf工作原理流程图WAF权限管理华为云帮助中心为你分享云计算行业信息,包含产品介绍、用户指南、开发指南、最佳实践和常见问题等文档,方便快速查找定位问题与能力成长,并提供相关资料和解决方案。本页面关键词:waf工作原理流程图。https://support.huaweicloud.com/topic/1336652-3-W