模型评估的基本方法
大家好!今天让创意岭的小编来大家介绍下关于模型评估的基本方法的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等
只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端
创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008
本文目录:
一、一起来读西瓜书:第二章 模型评估与选择
1. 章节主要内容(遇到不清楚的概念请在第二节基础知识中找寻解释)
在第一章绪论中,我们知道要根据具体的问题选择具体的算法和归纳偏好。那么我们怎么判定我们的选择是正确的呢?这就需要拥有一套规范的模型评估与选择方法论了。
1)首先,我们要理解机器学习为什么需要一套模型评估与选择方法论?(经验误差与过拟合)
在前一章的学习中,我们知道机器学习是对数据集的泛化过程,即从输入的数据中归纳出一套能适用于所有潜在样本的“普遍规律”。可因为训练数据不够充分,机器学习出来的模型并没办法涵盖所有的情况,这就会导致学习器的实际预测输出与样本的真实输出之间存在“误差”。
学习器在训练集上的误差称为“经验误差”,在新样本上的误差称为“泛化误差”。很明显,要使得分类器尽可能的有用,我们应该要让泛化误差仅可能的小。可惜在现实环境中,我们很难知道新样本是什么样的,所以我们实际能做的只有努力使经验误差最小化。
说到这里,也许有的心急的同学已经迫不及待的去将算法设计的尽可能百分百的满足所有训练样本了,可却忘了学习器真正要达到的是泛化误差尽可能小,而不是目前的折中方案降低经验误差。而在降低经验误差的道路上,驻守着机器学习领域最大的拦路虎之一:“过拟合”
“过拟合”是指学习器对训练样本学的太好了,导致泛化程度不够(还记得机器学习就是一个泛化过程吗),没法适应新的数据样本。与之相反的还有一个“欠拟合”的概念,就是对训练样本中的一般规律都没学习好。举个例子,你通过姚明这个训练样本来学习一个人类判断器,如果你将身高两米二十以上作为判断是否是人的依据,那就是过拟合了;而如果你没有“直立行走”这样的特征都没有找出来作为判断是否是人的标准,那就是欠拟合了。
上边例子是我自己想的,下边贴出书中一个更容易理解的例子来帮助大家理解吧:
所以,我们知道了吧,我们为什么需要一套模型评估与选择的方法论呢?因为我们的训练数据没法真正代表真实的样本空间,而泛化误差无法直接获得,经验误差又因为过拟合的存在而不适合作为标准,所以我们才需要一套模型评估与选择的方法论
2)我们知道了为什么要对模型进行评估,那么在不知道泛化误差的情况下,我们该如何进行评估呢?
一个合理的思路是:既然我们没法拿到新样本来进行泛化误差计算,那么我们可以从训练样本中取出一部分来,假装它是一组新样本,并用这些样本计算出来的误差作为泛化误差的近似。这组选出来的样本被称为“测试集”,测试集上的误差被称为测试误差。(我们学习本书的一个主要目的是学会机器学习领域的脉络和背后逻辑,这种评估思路是科学研究领域的一个常用思路。领悟这种思路有助于我们解决其它领域上的问题)
不过我们需要注意一点,那就是测试集应该尽量不与训练集重合,否则测试集计算出的误差将没法准确代表该学习器的泛化能力。
基于这个考虑,书中列出了以下几种把包含m个样例的数据集D划分为训练集S和测试集T的办法(只介绍中心思想,具体内容请查看书中原文)
[1]留出法(hold-out)
直接将D划分为互斥的两部分S和T,在S上训练出模型后,用T来评估测试误差
[2]交叉验证法(cross validation)
将D划分为互斥的k个子集,每次训练用其中(k-1)个数据,用剩下的一个作为测试集。这样就能获得k组训练/测试集,对这k组分别进行训练和测试,最终返回k个测试结果的均值
[3]自助法(bootstrapping)
每次从D中随机复制一个样本到D1中,重复m次,会得到一个拥有m个数据样本的D1数据集。显然,D中的一部分数据会多次出现在D1中,而另一部分样本不出现。根据平均分布概率计算,大约有36.8%的数据不会被复制到D1中
[4]注意点
训练/测试集的划分要尽可能保持数据分布一致性
单词划分往往不够稳定可靠,一般要采用若干次随机划分、重复进行实验评估后取平均值作为评估结果
训练/测试集的划分比例没有完美答案,训练样本多会使得模型更接近D,测试样本多会使得评估结果更可靠,这其中的取舍因人/场景而异。常见的训练/测试划分比例是2:1~4:1
[5]调参
不同的参数其实就代表着不同的模型了。一般参数分两种:一类是算法的参数,亦称“超参数”,如聚类要分的簇数量k;一类是模型的参数,如神经网络中每个节点的权重。前者多为人工选择一组候选,后者是让机器自己学习。
调参是机器学习的重点,也是决定模型性能的关键。一般调参过程中,会将训练数据再次划分为训练集和验证集(validation set)。具体包含关系如下:
(数据集 (训练数据(训练集)(验证集)) (测试集))
[6]适用性
自助法在数据集较小、难以有效划分训练/测试集时很有用
自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。因此,在初始数据量足够时,留出法和交叉验证法更常用一些
3)在上一节了解了什么是有效可行实验评估方法,接下来我们需要了解一下具体的衡量模型泛化能力的评价标准,即性能度量(performance measure)
性能度量反映了任务需求,使用不同的性能度量会导致对模型的评判结果不同。这意味着模型的“好坏”是相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于任务需求。
回归任务中最常用的性能度量是“均方误差”,即用模型的输出与实际输出计算输出结果的方差。本章节介绍了多种性能度量,请大伙在下边基础知识章节中查看具体含义,在这里我只总结描述这些指标的具体使用(因为书本中的公式介绍比较清楚,我在这里只记录每种度量的意思,详细公式请小伙伴们去书本中查看)
本章节介绍了很多性能度量指标,我这里选择其中的 查准率、查全率 进行重点介绍,以供小伙伴们对性能度量有着更清晰的认识:
从上可知查准率和查全率是一对矛盾的度量,一般情况下当一方增高时,另一方会下降,而决定这组度量升高下降的因素是学习器的分类阀值。举个例子大家就能理解:
假设有10个西瓜,6个好瓜,4个坏瓜。我们将这十个瓜按照预测结果排序,最可能是好瓜的排在前头,最不可能的排在最后,然后控制学习器的分类阀值来依次逐个把样本作为好瓜来进行预测,则可以计算出不同的阀值时的P和R如下表所示:
由上边例子可以看到,P和R的值也基本满足了一方升高,另一方下降的状况,通常只有在一些简单的任务(比如我举的这个)中,才可能使查全率和查准率都很高。以查准率为纵轴、查全率为横轴作图,就得到了查准率-查全率曲线,简称“P-R曲线”。
在进行比较时,若一个学习器的P-R曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者。当曲线有相交时,很难断言两者的优劣。真要判别时,“平衡点”(Break-Even Point)是一个不错的度量方法。下图是一个具体的示意图:
查准率顾名思义更关注的是预测的准确性(预测正确的比例)、查全率更关注的是预测的全面性(预测正确的个数)。
4)有了实验评估方法和性能度量,剩下的就是要好好研究研究如何应用方法和度量指标去对学习器的性能进行评估比较了
研究怎么来做“比较”是很有必要的,因为第一,我们要的是泛化性能,但是能用的只是测试性能;第二,测试性能和测试集的选择有很大关系;第三,有的机器学习算法本身也有随机性,对同一测试集的多次测试结果也会不同。
为了解决这些问题,统计假设检验(hypothesis test)为我们提供了重要的依据。
假设检验中的“假设”是对学习器泛化错误率分布的某种猜想或判断,然后通过假设的验证结果来对不同的学习器或模型的性能进行判断。比如假设“学习器A和B性能相同”,当该假设被拒绝时,说明学习器A和B具有显著差异,这时候错误率较低的学习器性能较优。
假设检验的具体逻辑和使用方法是这样的(这里只总结计算逻辑,详细的概念、公式等请查看专业书籍):
[1]设定一个假设,比如“一个机器学习真正的泛化错误率不大于0.3”
[2]设定一个置信概率“显著度a”,a的一般取值为0.05、0.1;a代表的意思是当我们的假设成立的概率在(1-a,1]的范围内时,我们认为是成立的。
[3]计算使假设在置信范围内成立的最大值是多少,比如根据上边[1]中的假设,要使泛化错误率不大于0.3成立,即泛化错误率小于0.3的概率大于(1-a)。要计算这个,我们要算出要使错误率大于0.3的概率之和小于a时的最大泛化错误率是多少。
[4]比较计算出的满足假设的最大值和我们实际计算出的值,如果我们实际计算出来的错误率已经大于最大可能的错误率了,说明假设不成立。
[5]在这里的假设中,假设不成立说明我们的学习器错误率要大于0.3啊,这是个很烂的学习器,我们还需要继续调优。
在实际实验时,我们会多次使用留出法或交叉验证法进行多次训练/测试,那么我们实际上会得到多个测试错误率(这里假设为k个)。我们可以通过求这些错误率的平均和方差来将假设检验转换为自由度为k-1的 t 分布。通过查询 t 检验常用临界表可以很方便的计算出假设是否成立。
书中提到的交叉验证 t 检验、Friedman检验与Nemenyi后续检验都是基于一样的假设检验流程的稍微变化。其中交叉验证 t 检验是针对两种学习器之间性能的比较,Friedman检验与Nemenyi后续检验是针对多个学习器之间性能的比较。在这里就不一一介绍了。
5)对学习算法除了通过实验估计其泛化性能,我们还需要理解“为什么”具有这样的性能,“偏差与方差分解”(bias-variance decomposition)是解释学习算法泛化性能的一种重要工具
省略具体的算法和公式推导过程,偏差与方差分解是对学习算法的期望泛化错误率的分解,分解结果是下边这个重要的公式
也就是说,泛化误差可分解为偏差、方差与噪声之和。
其中,偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所带来的影响;噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
偏差-方差分解说明,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。
一般来说,偏差与方差是有冲突的。要使偏差小则需要算法对数据充分拟合,这就有可能会导致过拟合,这样对新样本的适应性差,就会导致方差变高。反之亦然,拟合过低,偏差较大,但是方差会相对较低。
2. 基本知识
1)概念
错误率(error rate):m个样本中a个错误,则错误率为 E = a/m
精度(accuracy):精度=1 - a/m
误差(error):实际预测输出与样本的真实输出之间的差异。在训练集上的误差称为训练误差(training error)或 经验误差(empirical error),在新样本上的误差称为“泛化误差”(generalization error)
过拟合(overfitting):学习器把训练样本学得太好了,把训练样本中的特殊特征当作了普遍规律,导致泛化性能下降
欠拟合(underfitting):与过拟合相反,对训练样本中的一般规律都没有学好
测试集(testing set):训练样本中提取出来的作为测试学习器对新样本判别能力的一部分数据。测试集数据应该尽可能与训练样本不同
测试误差(testing error):在测试集上的误差
2)性能度量指标概念
[1]错误率与精度
分类任务中最常用的两种性能度量,其中错误率是分类错误的样本数占样本总数的比例。精度是分类正确的样本数占样本总数的比例。
[2]查准率、查全率与F1
查准率(precision):被模型预测为正的样本中,真正为正的样本比例(被预测为好瓜的西瓜中,真的是好瓜的西瓜比例)
查全率(recall):在所有正的样本上,被学习器预测为正的样本比例(在所有好瓜中,被学习器正确识别的好瓜比例)
F1:(2x查准率x查全率)/(查准率+查全率)。 F1是基于查准率和查全率的调和平均。
(查准率和查全率的概念不难理解,但是意思比较相近,看过一段时间之后老是会弄混。在读论文时,很多时候是用precision和recall来进行性能度量,所以将熟记这两个指标还是十分必要的)
“平衡点”(Break-Even Point):“查准率=查全率”时的取值。
[3]ROC与AUC
ROC:“受试者工作特征”(receiver operating characteristic)曲线,与P-R 曲线类似,只不过取用“真正利率”(TPR )作为纵轴,“假正例率”(FPR)作为横轴
[4]代价敏感错误率与代价曲线
代价敏感错误率代表数据的平均总体代价;代价曲线详情见书本
3)假设检验
基于假设检验结果我们可推断出,若在测试集上观察到学习器A比B好,则A的泛化性能是否在统计意义上优于B,以及这个结论的把握有多大。
4)偏差与方差
偏差-方差分解是对学习算法的期望泛化错误率进行的分解。泛化误差可分解为偏差、方差与噪声之和。
其中,偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所带来的影响;噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
3. 总结
泛化误差无法获得,经验误差因为过拟合的存在而不适合作为标准,导致我们需要专门的模型评估方法来测量学习器的效果
专门的模型评估方法是通过从数据集中选取一部分数据作为测试集来对训练出的模型进行验证,以测试误差来近似泛化误差实现的
测试误差体现在具体的性能度量指标上,我们要根据具体情况选择对应的指标
假设检验是我们对学习器性能进行比较的有效方法
泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的
(额外阅读)数据比算法要更重要的一个例子:对一批数据使用高明的算法,比不上用普通算法但是引入一部分外部数据源的效果要好( http://anand.typepad.com/datawocky/2008/03/more-data-usual.html )
具体的章节思路请参考下图理解:
二、风险量化评估模型有哪些?
1.风险量化评估模型主要有KMV模型、JP摩根的VAR模型、RORAC模型和EVA模型。
2.风险量化评估模型主要有KMV模型、JP摩根的VAR模型、RORAC模型和EVA模型:
1)KMV——以股价为基础的信用风险模型 历史上,银行在贷款决策时,曾经长时间忽视股票的市价。KMV模型基于这样一个假设——公司股票价格的变化为企业信用度的评估提供了可靠的依据。从而,贷款银行就可以用这个重要的风险管理工具去处理金融市场上遇到的问题了。尽管很少有银行在贷款定价中将KMV模型作为唯一的信用风险指示器,但非常多的银行将其用为信贷风险等级的早期报警工具。
2)JP摩根信贷风险资产组合模型——VAR 1997年,JP摩根推出了信贷风险资产的组合模型——信用矩阵,该模型引进了新的风 险管理理念。即根据信用质量的变动及时评级资产价值发生损失的可能性,它反映的主要问题是:如果明年情况不好,我的资产会有出现什么损失。
3)RAROC模型:RAROC为每笔交易分配一种“资本费用”,其数量等于该交易在一年内的预期最大损失(税后,99%的置信水平)。交易的风险越高,需占用的资本越多,要求其获得的现金流或收益也越多。RAROC可以广泛应用于银行管理,如利率风险管理、汇率风险管理、股权管理、产品风险、信用风险管理等
4)EVA模型:经济价值增量(Economic Value Added,简称EVA)在西方发达国家如美国已日益被越来越多的公司所采用,借以量化公司股东财富最大化目标的实现程度。EVA相对传统的会计利润而言,该指标不仅考虑了债务资本成本(利息),同时也考虑了普通股成本。从经济学的角度来看,会计利润高估了真实利润,而 EVA克服了传统会计的这一弱点。
风险量化是指通过风险及风险的相互作用的估算来评价项目可能结果的范围。风险量化的基本内容是确定哪些实践需要制定应对措施。风险量化涉及到对风险和风险之间相互作用的评估,用这个评估分析项目可能的输出。
三、ciro模型描述了几种基本的评估层次
ciro模型描述了四种基本的评估层次。如下:
CIRO由该模型中四个评估阶段的首字母组成,即背景评估(ContextEvaluation)、输入评估(InputEvaluation)、反应评估(ReactionEvaluation)、输出评估(OutputEvaluation)。该模型属于过程性评估模型。CIRO培训评估模型是一个由沃尔、伯德和雷克汉姆创造的四级评估模型。
详细分析:
一、背景评估:
评估任务是确认培训的必要性。包括:
1、收集和分析有关人力资源开发的信息。
2、分析和确定培训需求与培训目标。
二、输入评估:
评估任务确定培训的可能性。包括:
1、收集和汇总有价值的培训资源信息。
2、评估和选择培训资源--对可利用的培训资源进行利弊分析。
3、确定人力资源培训的实施战略与方法。
三、反应评估:
评估任务提高培训的有效性。包括:
1、收集和分析受训学员的反馈信息。
2、改进企业培训的运作流程。
四、输出评估:
评估任务检验培训的结果。包括:
1、收集和分析与培训结果相关的信息。
2、评价与确定培训的结果,即对照培训目录来检验,评定培训结果是否真正有效或有用。
四、分类:基本概念、决策树与模型评估
分类 (classification)分类任务就是通过学习得到一个目标函数(targetfunction)f,把每个属性集x映射到一个预先定义的类别号y。目标函数也称分类模型(classification model)。分类模型可用于以下目的:描述性建模、预测性建模
分类技术(或分类法)是一种根据输入数据集建立分类模型的系统方法。分类法的例子包括决策树分类法、基于规则的分类法、神经网络、支持向量机和朴素贝叶斯分类法。
首先,需要一个训练集(training set),它又类标号一致的记录组成。使用训练集建立分类模型,该模型随后运用于检验集(test set ),检验集由类标号未知的记录组成。
分类模型的性能根据模型正确和错误预的检验记录计数进行评估,这些计数存放在称作混淆矩阵( confusion matrix)的表格中。表4-2描述二元分类问题的混滑矩阵。表中每个表项 fij 表示实际类标号为i但被预测为类j的记录数,例如, f01 代表原本属于类0但被误分为类1的记录数。按照混淆矩阵中的表项,被分类模型正确预测的样本总数是( f11+f00 ),而被错误预测的样本总数是( f10+f01 )。
同样,分类模型的性能可以用错误率(error rate)来表示,其定义如下:
为了解释决策树分类的工作原理,考虑上一节中介绍的脊椎动物分类问题的简化版本。这里我们不把脊椎动物分为五个不同的物种,而只考虑两个类别:哺乳类动物和非哺乳类动物。假设科学家发现了一个新的物种,怎么判断它是哺乳动物还是非哺乳动物呢?一种方法是针对物种的特征提出一系列问题。第一个问题可能是,该物种是冷血动物还是恒温动物。如果它是冷血的,则该物种肯定不是哺乳动物;否则它或者是某种鸟,或者是某种哺乳动物。如果它是恒温的,需要接着问:该物种是由雌性产越进行繁殖的吗?如果是,则它肯定为哺乳动物,否则它有可能是非哺乳动物(鸭嘴兽和针鼹这些产蛋的哺乳动物除外)。
上面的例子表明,通过提出一系列精心构思的关于检验记录属性的问题,可以解决分类问题。每当一个问题得到答案,后续的问题将随之而来,直到我们得到记录的类标号。这一系列的问题和这些问题的可能回答可以组织成决策树的形式,决策树是一种由结点和有向边组成的层次结图4-4显示哺乳类动物分类问题的决策树,树中包含三种结点。
根节点 (root node),它没有入边,但有零条或多条出边。
内部节点 (internal node),恰有一条入边和两条或多条出边。
叶节点 (leaf node)或 终结点 (terminal node)。恰有一条入边,但没有出边。
在决策树中,毎个叶结点都赋予一个类标号。非终结点(non- terminal node)(包括根结点和内部结点)包含属性测试条件,用以分开具有不同特性的记录。例如,在图44中,在根结点处,使用体温这个属性把冷血脊権动物和恒温脊椎动物区别开来。因为所有的冷血脊椎动物都是非乳动物,所以用一个类称号为非嘴乳动物的叶结点作为根结点的右子女。如果脊椎动物的体温是恒温的,则接下来用胎生这个属性来区分乳动物与其他恒温动物(主要是鸟类)。
一旦构造了决策树,对检验记录进行分类就相当容易了。从树的根结点开始,将测试条件用于检验记录,根据测试结果选择适当的分支,沿着该分支或者到达另一个内部结点,使用新的测试条件,或者到达一个叶结点。到达叶结点之后,叶结点的类称号就被赋值给该检验记录。例如图45显示应用决策树预测火烈鸟的类标号所经过的路径,路径终止于类称号为非哺乳动物的叶结点。
在 Hunt算法中,通过将训练记录相继划分成较纯的子集,以递归方式建立决策树。设 是与结点t相关联的训练记录集,而y={y1,y2…,yc}是类标号,Humt算法的递归定义如下:
(1)如果 中所有记录都属于同一个类 ,则t是叶结点,用 标记。
(2)如果 中包含属于多个类的记录,则选择一个 属性测试条件 ( attribute test condition),将记录划分成较小的子集。对于测试条件的每个输出,创建一个子女结点,并根据测试结果将 中的记录分布到子女结点中。然后,对于每个子女结点,递归地调用该算法。为了解释该算法如何执行,考虑如下问题:预测贷款申请者是会按时归还贷款,还是会拖欠贷款。对于这个问题,训练数据集可以通过考察以前货款者的贷放记录来构造。在图4-6所示的例子中,每条记录都包含贷款者的个人信息,以及货款者是否拖欠货款的类标号。
该分类问题的初始决策树只有一个结点,类标号为“拖欠款者=否”(见图4-7a),意味大多数贷款者都按时归还贷款。然而,该树需要进一步的细化,因为根结点包含两个类的记录。根据“有房者”测试条件,这些记录被划分为较小的子集,如图4-7b所示。选取属性测试条件的理由稍后讨论,目前,我们假定此处这样选是划分数据的最优标准。接下来,对根结点的每个子女递归地调用Hunt算法。从图4-6给出的训练数据集可以看出,有房的货款者都按时偿还了贷款,因此,根结点的左子女为叶结点,标记为“抱欠款者=否”(见图4-7b)。对于右子女,我们需要继续递归调用Hunt算法,直到所有的记录都属于同一个类为止。每次递归调用所形成的决策树显示在图4-7c和图4-7d中。
如果属性值的每种组合都在训练数据中出现,并且每种组合都具有算法是有效的。但是对于大多数实际情况,这些假设太苛刻了,因此,需要附加的条件来处理以下的情况。
(1)算法的第二步所创建的子女结点可能为空,即不存在与这些结点相关联的记录。如果没有一个训练记录包含与这样的结点相关联的属性值组合,这种情形就可能发生。这时,该结点成为叶结点,类标号为其父结点上训练记录中的多数类。
(2)在第二步,如果与D相关联的所有记录都具有相同的属性值(目标属性除外),则不可能进一步划分这些记录。在这种情况下,该结点为叶结点,其标号为与该结点相关联的训练记录中的多数类。
决策树归纳的学习算法必须解决下面两个问题。
(1) 如何分裂训练记最? 树增长过程的每个递归步都必须选择一个属性测试条件,将记录划分成较小的子集。为了实现这个步骤,算法必须提供为不同类型的属性指定测试条件的方法,并且提供评估每种测试条件的客观度量。
(2) 如何停止分裂过程? 需要有结束条件,以终止决策树的生长过程。一个可能的策略是分裂结点,直到所有的记录都属于同一个类,或者所有的记录都具有相同的属性值。尽管两个结东条件对于结束决策树归纳算法都是充分的,但是还可以使用其他的标准提前终止树的生长过程。提前终止的优点将在4.4.5节讨论。
决策树归纳算法必须为不同类型的属性提供表示属性测试条件和其对应输出的方法。
二元属性 二元属性的测试条件产生两个可能的输出,如图4-8所示。
标称属性 由于标称属性有多个属性值,它的测试条件可以用两种方法表示,如图4-9所示对于多路划分(图4-9a),其输出数取决于该属性不同属性值的个数。例如,如果属性婚姻状况有三个不同的属性值一单身、已婚、离异,则它的测试条件就会产生一个三路划分。另一方面,某些决策树算法(如CART)只产生二元划分,它们考虑创建k个属性值的二元划分的所有 +1种方法。图4-9b显示了把婚姻状况的属性值划分为两个子集的三种不同的分组方法。
序数属性 序数属性也可以产生二元或多路划分,只要不违背序数属性值的有序性,就可以对属性值进行分组。图410显示了技照属性村衣尺吗划分训练记录的不同的方法。图4-10a和图4-10b中的分组保持了属性值间的序关系,而图4-10c所示的分组则违反了这一性质,因为它把小号和大号分为一组,把中号和加大号放在另一组。
连续属性对于连续属性来说,测试条件可以是具有二元输出的比较测试(A<v)或(A≥v),也可以是具有形如 ≤A< (i=1,…,k)输出的范查询,图4-11显示了这些方法的差别。对于二元划分,决策树算法必须考虑所有可能的划分点v,并从中选择产生最佳划分的点v。对于多路划分,算法必须考虑所有可能的连续值区间。可以采用2.3.6节介绍的离欧化的策略,离散化之后,每个离散化区间赋予一个新的序数值,只要保持有序性,相邻的值还可以聚集成较宽的间。
有很多度量可以用来确定划分记录的最佳方法,这些度量用划分前和划分后记录的类分布定义。设p(i|t)表示给定结点t中属于类i的记录所占的比例,有时,我们省略结点t,直接用 表示该比例。在两类问题中,任意结点的类分布都可以记作( , ),其中 =1- 。例如,考虑图4-12中的测试条件,划分前的类分布是(0.5,0.5),因为来自每个类的记录数相等。如果使用性属性来划分数据,则子女结点的类分布分别为(0.6,0.4)和(0.4,0.6),虽然划分后两个类的分布不再平衡,但是子女结点仍然包含两个类的记录:按照第二个属性车型进行划分,将得到纯度更高的划分。
选择最佳划分的度量通常是根据划分后子女结点不纯性的程度。不纯的程度越低,类分布就越倾斜。例如,类分布为(0,1)的结点具有零不纯性,而均衡分布(0.5,0.5)的结点具有最高的不纯性。不纯性度量的例子包括:
图4-13显示了二元分类问题不纯性度量值的比较,p表示属于其中一个类的记录所占的比例。从图中可以看出,三种方法都在类分布均衡时(即当p=0.5时)达到最大值,而当所有记录都属于同一个类时(p等于1或0)达到最小值。下面我们给出三种不纯性度量方法的计算实例。
为了确定测试条件的效果,我们需要比较父结点(划分前)的不纯程度和子女结点(划分后)的不纯程度,它们的差越大,测试条件的效果就越好。增益4是一种可以用来确定划分效果的标准:
考虑图4-14中的图表,假设有两种方法将数据划分成较小的子集。划分前,Gimi指标等于0.5,因为属于两个类的记录个数相等。如果选择属性A划分数据,结点N1的Gi指标等于0,.4898,而N2的Gimi指标等于0.480,派生结点的Gini指标的加权平均为(7/12)×0.4898+(5/2)×0.480=0.486。类似的,我们可以计算属性B的Gini指标加权平均是0.371。因为属性B具有更小的Gini指标,它比属性A更可取。
熵和Gini指标等不纯性度量趋向有利于具有大量不同值的属性。图4-12显示了三种可供选择的测试条件,划分本章习题2中的数据集。第一个测试条件性别与第二个测试条件车型相比,容易看出车型似乎提供了更好的划分数据的方法,因为它产生更纯的派生结点。然而,如果将这两个条件与顾客D相比,后者看来产生更纯的划分,但顾客D却不是一个有预测性的属性,因为每个样本在该属性上的值都是唯一的。即使在不太极端情形下,也不会希望产生大量输出的测试条件,因为与每个划分相关联的记录太少,以致不能作出可靠的预测。
解决该问题的策略有两种。第一种策略是限制测试条件只能是二元划分,CART这样的决策树算法采用的就是这种策略:另一种策略是修改评估划分的标准,把属性测试条件产生的输出数也考虑进去,例如,决策树算法C4.5采用称作增益率( gain ratio)的划分标准来评估划分。增益率定义如下:
建立决策树之后,可以进行树剪枝( tree-pruning),以减小决策树的规模。决策树过大容易受所谓过分拟合( overfitting)现象的影响。通过修剪初始决策树的分支,剪枝有助于提高决策树的泛化能力。过分拟合和树剪枝问题将在4.4节更详细地讨论。
Web使用挖据就是利用数据挖据的技术,从Web访问日志中提取有用的模式。这些模式能够揭示站点访问者的一些有趣特性:例如,一个人频繁地访问某个Web站点,并打开介绍同一产品的网页,如果商家提供一些打折或免费运输的优惠,这个人很可能会购买这种商品。
在Web使用挖掘中,重要的是要区分用户访问和Web机器人( Web robot)访问,Web机器人(又称Web爬虫)是一个软件程序,它可以自动跟踪嵌入网页中的超链接,定位和获取 Iinternet上的信息。这些程序安装在搜素引的入口,收集索引网页必须的文档。在应用Web挖掘技术分析人类的测览习惯之前,必须过滤掉Web机器人的访问。
下面是对决策树归纳算法重要特点的总结。
(1)决策树归纳是一种构建分类模型的非参数方法。换句话说,它不要求任何先验假设,不假定类和其他属性服从一定的概率分布(不像第5章介绍的一些技术)。
(2)找到最佳的决策树是NP完全问题。许多决策树算法都采取启发式的方法指导对假设空间的搜索。例如,4.3.5节中介绍的算法就采用了一种贪心的、自顶向下的递归划分策略建立决策树
(3)已开发的构建决策树技术不需要昂贵的计算代价,即使训练集非常大,也可以快速建立模型。此外,决策树一旦建立,未知样本分类非常快,最坏情况下的时间复杂度是O(w),其中w是树的最大深度。
(4)决策树相对容易解释,特别是小型的决策树。在很多简单的数据集上,决策树的准确率也可以与其他分类算法相媲美。
(5)决策树是学习离散值函数的典型代表。然而,它不能很好地推广到某些特定的布尔问题。个著名的例子是奇偶函数,当奇数(偶数)个布尔属性为真时其值为0(1)。对这样的函数准确建模需要一棵具有2^d个结点的满决策树,其中d是布尔属性的个数(见本章习题1)
(6)决策树算法对于噪声的干扰具有相当好的鲁棒性,采用避免过分拟合的方法之后尤其如此。避免过分拟合的方法将在4.4节介绍。
(7)元余属性不会对决策树的准确率造成不利的影响。一个属性如果在数据中它与另一个属性是强相关的,那么它是冗余的。在两个冗余的属性中,如果已经选择其中一个作为用于划分的属性,则另一个将被忽略。然而,如果数据集中含有很多不相关的属性(即对分类任务没有用的属性),则某些不相关属性可能在树的构造过程中偶然被选中,导致决策树过于庞大。通过在预处理阶段删除不相关属性,特征选择技术能够帮助提高决策树的准确率。我们将在4.4.3节考察不相关属性过多的问题。
(8)由于大多数的决策树算法都采用自顶向下的递归划分方法,因此沿着树向下,记录会越来越少。在叶结点,记录可能太少,对于叶结点代表的类,不能做出具有统计意义的判决,这就是所谓的数据碎片( data fragmentation)问题,解决该问题的一种可行的方法是,当样本数小于某个特定值时停止分裂。
(9)子树可能在决策树中重复多次,如图4-19所示,这使得决策树过于复杂,并且可能更难解释。当决策树的每个内部结点都依赖单个属性测试条件时,就会出现这种情形。由于大多数的决策树算法都采用分治划分策略,因此在属性空间的不同部分可以使用相同的测试条件,从而导致子树重复问题。
(10)迄今为止,本章介绍的测试条件每次都只涉及一个属性。这样,可以将决策树的生长过程看成划分属性空间为不相交的区域的过程,直到每个区域都只包含同一类的记录(见图4-20)。两个不同类的相邻区域之间的边界称作决策边界( decision boundary),由于测试条涉及单个属性,因此决策边界是直线,即平行于“坐标轴”,这就限制了决策树对连续属性之间复杂关系建模的表达能力。图4-21显示了一个数据集,使用一次只涉及一个属性的测试条件的决策树算法很难有效地对它进行分类。
斜决策树 ( oblique decision tree)可以克服以上的局限,因为它允许测试条件涉及多个属性。图4-21中的数据集可以很容易地用斜决策树表示,该斜决策树只有一个结点,其测试条件为:
x+y<1
尽管这种技术具有更强的表达能力,并且能够产生更紧凑的决策树,但是为给定的结点找出最佳测试条件的计算可能是相当复杂的。
构造归纳 ( constructive induction)提供另一种将数据划分成齐次非矩形区域的方法(见2.3.5节),该方法创建复合属性,代表已有属性的算术或逻辑组合。新属性提供了更好的类区分能力,并在决策树归纳之前就增广到数据集中。与斜决策树不同,构造归纳不需要昂贵的花费,因为在构造决策树之前,它只需要一次性地确定属性的所有相关组合。相比之下,在扩展每个内部结点时,斜决策树都需要动态地确定正确的属性组合。然而,构造归纳会产生冗余的属性,因为新创建的属性是已有属性的组合
(11)研究表明不纯性度量方法的选择对决策树算法的性能影响很小,这是因为许多度量方法相互之间都是一致的,如图4-13所示。实际上,树剪枝对最终决策树的影响比不纯性度量的选择的影响更大。
以上就是关于模型评估的基本方法相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。
推荐阅读: