决策树剪枝
《机器学习(周志华)》笔记--决策树(3)--剪枝处理:预剪枝、后剪枝、预剪枝与后剪枝优缺点比较
《机器学习(周志华)》笔记--决策树(3)--剪枝处理:预剪枝、后剪枝、预剪枝与后剪枝优缺点⽐较五、剪枝处理 过拟合:在决策树学习过程中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分⽀过多,这时就可能会因训练样本学得太好,以致于把训练集⾃⾝的⼀些特点当作所有数据都具有的⼀般性质导致过拟合。
剪枝:对付过拟合的⼀种重要⼿段,通过主动去掉⼀些分⽀来降低过拟合的风险。
基本策略:预剪枝和后剪枝。
预剪枝:对每个结点划分前先进⾏估计,若当前结点的划分不能带来决策树的泛化性能的提升,则停⽌划分,并标记为叶结点。
后剪枝:现从训练集⽣成⼀棵完整的决策树,然后⾃底向上对⾮叶⼦结点进⾏考察,若该结点对应的⼦树⽤叶结点能带来决策树泛化性能的提升,则将该⼦树替换为叶结点。
如何评估:留出法,即预留⼀部分数据⽤作“验证集”以进⾏性能评估。
举例: 我们将西⽠数据集随机分成两部分,如图5.0.1所⽰: 图 5.0.1 假设我们采⽤信息增益准则来进⾏划分属性选择,则从图5.0.1的训练集中会⽣成⼀个决策树,如图5.0.2. 图5.0.2 划分前:5个正例,5个负例,拥有样本数最对的类别。
根据前⾯讲到的信息增益准则,得到了⼀个决策树。
进⾏了5次划分1、预剪枝 基于信息增益准则,我们会选取属性“脐部”来对测试集进⾏划分,并产⽣三个分⽀。
然⽽,是否应该进⾏这个划分呢?预剪枝要对划分前后的泛化性能进⾏估计。
划分之前,所有样例集中在根结点,如图5.1.1 图5.1.1 在⽤属性“脐部”划分之后,如图5.1.2 图5.1.2 基于预剪枝策略从表5.0.1数据所⽣成的决策树如图5.1.3 图5.1.32、后剪枝 后剪枝先从训练集中⽣成⼀棵完整的决策树,其验证集精度测得为 42.9%。
⾸先考虑结点⑥,若将其替换为叶结点,根据落在其上的训练样例{7,15},将其标记为“好⽠”,测得验证集精度提⾼⾄ 57.1%,于是决定剪枝: 然后考虑结点⑤,若将其替换为叶结点,根据落在其上的训练样例{6,7,15},将其标记为“好⽠”,测得验证集精度仍为 57.1%,可以不剪枝: 对结点②,若将其替换为叶结点,根据落在其上的训练样例{1,2,3,14},将其标记为“好⽠”,测得验证集精度提升⾄ 71.4%,决定剪枝: 对结点③和①,先后替换为叶结点,均未测得验证集精度提升,于是不剪枝: 最终,后剪枝得到的决策树:3、预剪枝与后剪枝优缺点⽐较(1)时间开销 • 预剪枝:训练时间开销降低,测试时间开销降低 • 后剪枝:训练时间开销增加,测试时间开销降低(2)过/⽋拟合风险 • 预剪枝:过拟合风险降低,⽋拟合风险增加 • 后剪枝:过拟合风险降低,⽋拟合风险基本不变(3)泛化性能:后剪枝通常优于预剪枝。
决策树及其剪枝原理
决策树及其剪枝原理决策树可以分成ID3、C4.5和CART。
CART与ID3和C4.5相同都由特征选择,树的⽣成,剪枝组成。
但ID3和C4.5⽤于分类,CART可⽤于分类与回归。
ID3和C4.5⽣成的决策树可以是多叉的,每个节点下的叉树由该节点特征的取值种类⽽定,⽐如特征年龄分为(青年,中年,⽼年),那么改节点下可分为3叉。
⽽CART为假设决策树为⼆叉树,内部结点特征取值为”是”和”否”。
特征选择CART分类树通过基尼指数选择最优特征,同时决定该特征的最优⼆值切分点,⽽ID3和C4.5直接选择最优特征,不⽤划分。
算法⽬的:决策树的剪枝是为了简化决策树模型,避免过拟合。
剪枝类型:预剪枝、后剪枝预剪枝:在构造决策树的同时进⾏剪枝。
所有决策树的构建⽅法,都是在⽆法进⼀步降低熵的情况下才会停⽌创建分⽀的过程,为了避免过拟合,可以设定⼀个阈值,熵减⼩的数量⼩于这个阈值,即使还可以继续降低熵,也停⽌继续创建分⽀。
但是这种⽅法实际中的效果并不好。
后剪枝是在决策树⽣长完成之后,对树进⾏剪枝,得到简化版的决策树。
剪枝的过程是对拥有同样⽗节点的⼀组节点进⾏检查,判断如果将其合并,熵的增加量是否⼩于某⼀阈值。
如果确实⼩,则这⼀组节点可以合并⼀个节点,其中包含了所有可能的结果。
后剪枝是⽬前最普遍的做法。
后剪枝的剪枝过程是删除⼀些⼦树,然后⽤其叶⼦节点代替,这个叶⼦节点所标识的类别通过⼤多数原则(majority class criterion)确定。
所谓⼤多数原则,是指剪枝过程中, 将⼀些⼦树删除⽽⽤叶节点代替,这个叶节点所标识的类别⽤这棵⼦树中⼤多数训练样本所属的类别来标识,所标识的类称为majority class ,(majority class 在很多英⽂⽂献中也多次出现)。
预剪枝依据:作为叶结点或作为根结点需要含的最少样本个数决策树的层数结点的经验熵⼩于某个阈值才停⽌后剪枝算法后剪枝算法有很多种,这⾥简要总结如下:Reduced-Error Pruning (REP,错误率降低剪枝)这个思路很直接,完全的决策树不是过度拟合么,我再搞⼀个测试数据集来纠正它。
决策树的优化-剪枝优化
决策树的优化-剪枝优化剪枝(pruning)的⽬的是为了避免决策树模型的过拟合。
因为决策树算法在学习的过程中为了尽可能的正确的分类训练样本,不停地对结点进⾏划分,因此这会导致整棵树的分⽀过多,也就导致了过拟合。
决策树的剪枝策略最基本的有两种:预剪枝(pre-pruning)和后剪枝(post-pruning):预剪枝(pre-pruning):预剪枝就是在构造决策树的过程中,先对每个结点在划分前进⾏估计,若果当前结点的划分不能带来决策树模型泛化性能的提升,则不对当前结点进⾏划分并且将当前结点标记为叶结点。
后剪枝(post-pruning):后剪枝就是先把整颗决策树构造完毕,然后⾃底向上的对⾮叶结点进⾏考察,若将该结点对应的⼦树换为叶结点能够带来泛化性能的提升,则把该⼦树替换为叶结点。
⼀、预剪枝(pre-pruning)关于预剪枝(pre-pruning)的基本概念,在前⾯已经介绍过了,下⾯就直接举个例⼦来看看预剪枝(pre-pruning)是怎样操作的。
数据集为(图⽚来⾃西⽠书):这个数据集根据信息增益可以构造出⼀颗未剪枝的决策树(图⽚来⾃西⽠书):下⾯来看下具体的构造过程:前⾯博客()讲过⽤信息增益怎么构造决策树,这边还是⽤信息增益构造决策树,先来计算出所有特征的信息增益值:因为⾊泽和脐部的信息增益值最⼤,所以从这两个中随机挑选⼀个,这⾥选择脐部来对数据集进⾏划分,这会产⽣三个分⽀,如下图所⽰:但是因为是预剪枝,所以要判断是否应该进⾏这个划分,判断的标准就是看划分前后的泛华性能是否有提升,也就是如果划分后泛化性能有提升,则划分;否则,不划分。
下⾯来看看是否要⽤脐部进⾏划分,划分前:所有样本都在根节点,把该结点标记为叶结点,其类别标记为训练集中样本数量最多的类别,因此标记为好⽠,然后⽤验证集对其性能评估,可以看出样本{4,5,8}被正确分类,其他被错误分类,因此精度为43.9%。
划分后:划分后的的决策树为:则验证集在这颗决策树上的精度为:5/7 = 71.4% > 42.9%。
决策树模型的剪枝方法及实践技巧(Ⅰ)
决策树模型的剪枝方法及实践技巧决策树模型是一种常用的机器学习算法,它通过一系列的决策节点和叶子节点来对数据进行分类或预测。
在构建决策树模型时,常常会出现过拟合的问题,为了解决这个问题,我们需要对决策树进行剪枝。
本文将介绍决策树模型的剪枝方法及实践技巧。
一、剪枝方法1. 预剪枝预剪枝是在构建决策树的过程中,根据一定的规则提前终止树的生长。
常用的预剪枝规则包括最大深度、节点包含的样本数量、信息增益等。
通过设定这些规则,可以在树生长过程中避免过拟合,从而提高模型的泛化能力。
2. 后剪枝后剪枝是在决策树构建完成后,对树进行修剪。
常用的后剪枝方法包括代价复杂度剪枝和悲观剪枝。
代价复杂度剪枝是通过考虑节点的代价和树的复杂度来进行剪枝,以降低模型的复杂度。
悲观剪枝则是通过交叉验证等方法来评估剪枝前后模型的性能,从而确定最优的剪枝策略。
二、实践技巧1. 数据预处理在进行决策树模型的剪枝之前,需要对数据进行预处理。
包括处理缺失值、处理离散特征、特征选择等工作。
只有在数据预处理完成后,才能进行有效的剪枝操作。
2. 参数调优决策树模型有很多参数需要调优,包括树的深度、节点划分的最小样本数、信息增益的阈值等。
通过调优这些参数,可以更好地控制树的生长,从而避免过拟合问题。
3. 交叉验证在进行后剪枝时,可以使用交叉验证来评估剪枝前后模型的性能。
通过交叉验证,可以选择最优的剪枝策略,从而得到更好的模型性能。
4. 可视化分析在进行剪枝操作时,可以通过可视化分析来观察树的结构和剪枝效果。
通过可视化分析,可以更直观地理解剪枝的效果,从而更好地调整剪枝策略。
结论决策树模型的剪枝是提高模型泛化能力的重要手段。
通过预剪枝和后剪枝,可以有效地控制模型的复杂度,从而避免过拟合问题。
在实践中,需要进行数据预处理、参数调优、交叉验证和可视化分析等工作,才能得到更好的剪枝效果。
希望本文介绍的决策树模型的剪枝方法及实践技巧能够对读者有所帮助。
python决策树后剪枝代码
Python决策树后剪枝代码一、导言决策树是一种常用的机器学习算法,它能够通过对数据集进行分割,构建一棵树形结构,从而进行分类或回归预测。
决策树的主要优点是易于理解和解释,但也容易出现过拟合的问题。
为了解决这个问题,可以采用后剪枝的方法对决策树进行修剪。
本文将介绍如何使用Python实现决策树后剪枝的代码。
二、决策树后剪枝简介决策树的过拟合问题是由于树的深度过大、节点过多导致的。
为了解决这个问题,可以采用后剪枝的方法对决策树进行修剪。
后剪枝的基本思想是通过修改决策树的结构,减少树的复杂度,从而提高泛化能力。
三、Python实现决策树后剪枝代码在Python中,可以使用scikit-learn库来实现决策树的后剪枝。
需要导入相关的库和数据集。
1. 导入库```pythonfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.model_selection import train_test_splitfrom sklearn.datasets import load_iris```2. 导入数据集```pythoniris = load_iris()X = iris.datay = iris.target```接下来,将数据集划分为训练集和测试集,并构建决策树模型。
3. 划分数据集并构建决策树模型```pythonX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)clf = DecisionTreeClassifier()clf.fit(X_train, y_train)```现在,我们已经得到了一个未经剪枝的决策树模型。
接下来,我们将使用scikit-learn提供的方法对决策树进行后剪枝。
4. 决策树后剪枝```pythonclf.costplexity_pruning_path(X_train, y_train)```在上述代码中,我们使用了`costplexity_pruning_path`方法来获取不同复杂度参数下的决策树模型。
后向剪枝算法
后向剪枝算法
后向剪枝算法是一种决策树的剪枝方法,主要用于简化决策树的结构,降低过拟合风险,提高泛化能力。
该算法在决策树自由生长之后进行,通过逐步移除叶节点来剪枝决策树,直到达到预设的剪枝条件或达到剪枝停止的准则。
后向剪枝算法的步骤包括:
1. 构建决策树:使用训练数据集生成完整的决策树。
2. 剪枝处理:从决策树的叶节点开始,向上遍历决策树,根据剪枝条件对每个叶节点进行剪枝处理。
剪枝条件可以是预定阈值的达到、节点不纯度的增加等。
3. 评估剪枝后的模型:使用验证数据集对剪枝后的模型进行评估,计算模型的精度、误差率等指标。
4. 确定最佳剪枝点:根据评估结果,选择最优的剪枝点,使得模型在保持稳定性的同时,具有最佳的泛化能力。
5. 生成最终的决策树模型:将最佳剪枝点作为决策树的最终结构,使用训练数据集和验证数据集对模型进行训练,生成最终的决策树模型。
相较于预剪枝算法,后向剪枝算法具有更高的灵活性,可以更准确地选择合适的剪枝节点,提高模型的泛化能力。
但后向剪枝算法的计算量相对较大,特别是在大样本集中,因此在实际应用中需要根据具体情况选择合适的剪枝算法。
机器学习中的决策树剪枝与集成学习
机器学习中的决策树剪枝与集成学习决策树剪枝和集成学习是机器学习中常用的两种技术,它们能够提高决策树模型的性能和泛化能力。
下面分别介绍决策树剪枝和集成学习的原理和应用。
决策树剪枝是一种用于降低决策树模型复杂度的技术。
决策树模型通过将训练样本按照特征进行划分,生成一棵树状结构来表示决策过程。
但是,如果决策树生长过深或过宽,容易导致模型过拟合,泛化能力较差。
决策树剪枝的目的是通过优化决策树的结构,降低模型复杂度,提高模型的泛化能力。
决策树剪枝可以分为预剪枝和后剪枝两种策略。
预剪枝是在决策树生长过程中,根据一些准则提前停止递归划分的过程,从而限制了决策树的生长。
常见的预剪枝策略有:限制树的最大深度、限制叶子节点的最小样本数、限制叶子节点的最小信息增益等。
后剪枝是在决策树生成完毕后,通过剪去一些叶子节点及其子树,构建一个更简化的决策树。
常见的后剪枝算法有:代价复杂度剪枝、悲观剪枝等。
集成学习是一种通过组合多个模型来提高预测准确性的技术。
在集成学习中,有多种方法可以用来构建多个模型,如:装袋法(bagging)、提升法(boosting)和随机森林(random forest)等。
这些方法的共同点是生成多个弱学习器,然后将它们结合起来得到一个更强的集成模型。
装袋法是一种基于自助采样的集成学习方法。
装袋法通过随机采样的方式生成多个数据集,每个数据集都是从原始训练集中有放回地采样得到的。
然后,每个数据集都用来训练一个基学习器,最后将这些基学习器投票或平均得到最终的预测。
常见的装袋法有:随机森林、提升树等。
提升法是一种通过顺序训练和组合模型的集成学习方法。
提升法的核心思想是通过迭代的方式训练多个弱学习器,每次迭代都重点关注之前学习器分类错误的样本,通过调整权重或采样策略等方式提高模型对于这些样本的分类能力。
最终将这些弱学习器加权结合得到强学习器。
常见的提升法有:AdaBoost、Gradient Boosting等。
机器学习__决策树剪枝
决策树剪枝
预剪枝
不必生成整棵决策树且算法相对简单,效率很高,适合解决大规模问题。但是,预剪
枝方法存在两个问题:
✓ 很难精确地估计何时停止决策树的生长;
很难为提前终止选取正确的阈值 ➢ 阈值太高,导致拟合不足 ➢ 阈值太低,导致不能充分解决过分拟合的问题。
选择一个适当的阈值 是困难的
✓ 预剪枝存在视野效果问题,也就是说可能当前的扩展会造成过渡拟合训练数据, 但更进一步的扩展能够满足要求,也有可能准确地拟合训练数据。这将使得算 法过早地停止决策树的构造。
决策树规模生长,然后进行剪枝的步骤,按照自底向上的 方式修剪完全增长的决策树。 修剪有两种做法:
① 用新的叶结点替换子树,该叶结点的类标号由子树下记录中的多数 类确定
② 用子树中最常用的分支代替子树(子树提升)
带来决策树泛化性能的提升!
决策树剪枝
怎么样决定是否要用单个叶子结点来替换一个内部结点,或者是否要用位于一 个内部结点下面的某个结点来替换它。
决策树剪枝
✓错误率降低剪枝
从底向上的处理结点
其验证集精度测得为 42.9%
决策树剪枝
验证集精度 剪枝前: 42.9% 剪枝后: 57.1% 后剪枝决策: 剪枝
决策树剪枝
好瓜
验证集精度 剪枝前: 42.9% 剪枝后: 57.1% 后剪枝决策: 剪枝
决策树剪枝
验证集精度 剪枝前: 57.1% 剪枝后: 71.4% 后剪枝决策: 剪枝
好瓜
验证集精度 剪枝前: 57.1% 剪枝后: 57.1% 后剪枝决策: 不剪枝
决策树剪枝
好瓜
验证集精度 剪枝前: 57.1% 剪枝后: 71.4% 后剪枝决策: 剪枝
好瓜
验证集精度 剪枝前: 57.1% 剪枝后: 57.1% 后剪枝决策: 不剪枝
决策树模型的剪枝方法及实践技巧(四)
决策树模型的剪枝方法及实践技巧决策树是一种经典的机器学习算法,它通过一系列的决策节点来对数据进行分类或者回归预测。
然而,决策树模型往往会出现过拟合的问题,因此需要进行剪枝来降低模型的复杂度,提高泛化能力。
本文将介绍决策树模型的剪枝方法及实践技巧,帮助读者更好地理解和应用决策树模型。
1. 决策树模型剪枝方法决策树模型的剪枝方法主要包括预剪枝和后剪枝两种方式。
预剪枝是在决策树构建过程中,在每个节点分裂前,先对分裂后的子树进行评估,如果分裂后无法提升模型的泛化能力,就停止分裂。
这样可以避免过拟合,提高模型的泛化能力。
后剪枝是在决策树构建完成后,对已有的决策树进行修剪。
具体方法是通过交叉验证等技术,对每个节点进行剪枝,从而降低模型的复杂度,提高泛化能力。
2. 决策树模型剪枝实践技巧在实际应用中,对决策树模型进行剪枝需要注意以下几点技巧。
首先,选择合适的评估指标。
在预剪枝中,需要选择合适的评估指标来衡量分裂后模型的泛化能力,常用的评估指标包括信息增益、基尼指数等。
在后剪枝中,可以通过交叉验证等技术来选择合适的剪枝节点。
其次,合理设置剪枝参数。
在实践中,需要根据具体问题合理设置剪枝参数,以达到最佳的泛化能力。
这需要结合实际应用场景和数据特点来进行调参,需要一定的经验和技巧。
最后,进行模型评估和验证。
在进行剪枝之后,需要对剪枝后的模型进行评估和验证,以确保模型的泛化能力得到提升。
可以通过交叉验证、留出法等技术来对模型进行评估,选择最佳的剪枝策略。
3. 决策树模型剪枝的应用案例在实际应用中,决策树模型的剪枝技巧被广泛应用于各个领域。
以金融领域为例,决策树模型可以用来进行信用评分、风险控制等工作。
通过合理的剪枝方法,可以提高模型的准确性和稳定性,帮助金融机构更好地进行风险管理。
另外,在医疗领域,决策树模型也被广泛应用于疾病诊断、药物治疗等方面。
通过剪枝方法,可以提高模型的泛化能力,提高诊断准确性,为医生提供更好的辅助决策。
决策树预剪枝过程例题
决策树预剪枝过程例题决策树预剪枝是一种用于构建决策树的技术,它可以在树的构建过程中提前停止分裂节点,以避免过度拟合训练数据。
这种方法有助于提高模型的泛化能力,避免对训练数据过度敏感。
下面我将通过一个例题来说明决策树预剪枝的过程。
假设我们有一个训练数据集,其中包含一些特征和它们对应的目标变量。
我们想要构建一个决策树来对这些数据进行分类。
在预剪枝过程中,我们需要考虑以下几个步骤:1. 确定停止分裂的条件,在决策树构建的过程中,我们需要确定何时停止对节点进行分裂。
这可以通过设置一个阈值来实现,例如限制节点的最大深度、最小样本数或者最小信息增益等。
2. 评估分裂前后的性能,在每次尝试对节点进行分裂时,我们需要评估分裂前后的性能提升。
这可以通过计算信息增益、基尼指数或者熵等指标来实现,以确保分裂能够有效地提高模型的预测能力。
3. 进行分裂操作,如果分裂前后的性能提升满足预先设定的条件,我们可以对节点进行分裂操作,将其分裂成两个子节点。
否则,我们将停止分裂,将当前节点标记为叶节点,并将其设定为该节点所属的类别。
举个例子,假设我们有一个包含年龄、收入和购买意向的训练数据集,我们想要构建一个决策树来预测用户是否会购买某个产品。
在预剪枝过程中,我们可以设置最大深度为3,最小样本数为5。
然后我们对每个节点尝试进行分裂,计算信息增益,如果信息增益超过一定阈值,我们就对节点进行分裂操作,直到达到预设的停止条件为止。
总之,决策树预剪枝是一种有效的技术,可以帮助我们构建泛化能力更强的决策树模型,避免过度拟合训练数据。
通过合理设置停止条件并进行性能评估,我们可以在构建决策树的过程中有效地进行预剪枝操作,从而得到更加稳健的模型。
决策树预剪枝技术的常用方法最小化分实例数
决策树预剪枝技术的常用方法最小化分实例数决策树是一种常用的机器学习算法,用于进行分类和回归任务。
在构建决策树时,预剪枝技术是一种常用的方法,用于防止决策树过拟合训练数据,提高模型的泛化能力。
预剪枝技术中的一种常见方法是最小化分实例数。
该方法在构建决策树的过程中,限制每个叶节点必须包含的最小样本数。
当一个节点的样本数小于该阈值时,停止继续划分,将该节点作为叶节点。
这样做的目的是防止决策树在训练数据上过度拟合,因为拥有较少样本的节点更容易出现过拟合的问题。
最小化分实例数的方法有助于减少决策树的复杂度,避免生成过于复杂的模型。
这样可以提高模型的解释性和泛化能力,使其更适用于未知数据的预测。
此外,最小化分实例数还可以提高决策树的训练速度,因为剪枝后的树结构更简单,计算开销更小。
除了最小化分实例数外,还有其他一些常用的预剪枝技术,例如限制树的最大深度、限制节点的最大样本数、设定最小信息增益等。
这些方法可以根据实际问题的特点进行选择和调整,以达到最佳的预剪枝效果。
总之,最小化分实例数是决策树预剪枝技术中的一种常用方法。
通过
限制每个叶节点的最小样本数,可以有效防止决策树过拟合,提高模型的泛化能力和解释性。
在实际应用中,我们可以根据数据集的特点选择合适的预剪枝方法,并结合交叉验证等技术进行调优,以获得更好的模型性能。
决策树算法的剪枝过程
决策树算法的剪枝过程好嘞,咱们今天聊聊决策树算法的剪枝过程,这个话题听起来可能有点儿复杂,但咱们就轻松点儿说,绝对不会让你打瞌睡。
想象一下,决策树就像一个老爷爷,满头白发,满口故事。
他把所有的经历都给记录在树上,每一根枝条都代表着一个选择。
比如说,今天咱们吃什么?一根枝条可能指向“米饭”,另一根可能指向“面条”。
这爷爷真是个话痨,讲得细致入微,直到你觉得都快饱了。
不过,问题来了,讲得太多,反而让人迷糊了。
咱们知道,选择太多可不是好事,听得让人脑壳疼,最后可能连“吃什么”都忘了。
这时候,就得想办法给这棵树“剪剪枝”了。
剪枝就像给头发修个发型,修得好看又清爽。
其实就是把那些不必要的细枝末节去掉,让树看起来更清晰、更简洁。
决策树剪枝分为两种:预剪枝和后剪枝。
预剪枝就像你在去理发店前就决定好只剪一点点,给人留下个好印象。
你一开始就决定只在特定条件下继续分裂,不然就停下。
这样做的好处就是避免树长得太复杂,没事儿还省得浪费时间。
后剪枝呢?就好比你已经剪完头发,发现没啥造型可言,哎呀,怎么那么丑。
于是,你就找个发型师给你重新修整。
后剪枝是在树构建完成后,再去掉那些表现不佳的分支,留下最有用的部分。
这样做的结果就是,你最终得到一棵既好看又实用的树,听着是不是舒服多了?剪枝的好处可多着呢!一方面,剪枝能减少过拟合,过拟合就像是你在一堆泡泡糖里越陷越深,结果根本分不清哪里是树,哪里是糖。
另一方,剪枝还能提高模型的泛化能力,意思就是说,剪得漂亮,面对新数据时也能表现得像个老手,绝对不会被难倒。
想想看,生活中不就是这么回事嘛,不能总是贪多嚼不烂,偶尔还得回头看看,究竟哪些才是最有价值的东西。
剪枝的过程还带点儿人情味。
每一次选择都是一种放弃,每一次放弃都是为了让自己更专注。
人生不也如此?我们都在做选择,剪去那些多余的杂念,把精力放在最重要的事上。
想想你每天的生活,看看那些让你分心的东西,咱们得学会适时放手,才能迎接更美好的明天。
解决决策树过拟合的方法
解决决策树过拟合的方法解决决策树过拟合的方法决策树是一种常用的分类和回归算法,但是在实际应用中往往会出现过拟合的问题。
为了解决这个问题,本文将介绍几种解决决策树过拟合的方法。
一、剪枝剪枝是一种常用的解决决策树过拟合问题的方法。
它通过去掉一些不必要的节点来降低模型复杂度,从而避免过拟合。
具体来说,剪枝分为预剪枝和后剪枝两种方式。
1.预剪枝预剪枝是在构建决策树时,在每个节点处判断是否应该继续分裂。
如果当前节点无法提高模型性能,则停止分裂,将当前节点标记为叶子节点。
这样可以有效地减少模型复杂度,避免过拟合。
2.后剪枝后剪枝则是在构建完整个决策树之后,对树进行修剪。
具体来说,它通过递归地考虑每个非叶子节点是否可以被替换成叶子节点来达到降低模型复杂度、避免过拟合的目的。
二、限制树的深度另一种解决决策树过拟合问题的方法是限制树的深度。
通过限制树的深度,可以有效地控制模型复杂度,避免过拟合。
三、增加样本量过拟合通常是由于训练数据量太少导致的。
因此,增加样本量可以有效地缓解过拟合问题。
在实际应用中,可以通过收集更多的数据来增加样本量。
四、降低特征维度另一个常用的解决决策树过拟合问题的方法是降低特征维度。
通过减少特征数量和/或特征值数量,可以有效地减少模型复杂度,避免过拟合。
五、随机森林随机森林是一种基于决策树的集成学习算法,它通过构建多个不同的决策树来提高模型性能和鲁棒性,并且可以有效地避免过拟合问题。
具体来说,随机森林中每个决策树都是基于不同的子集数据和特征集构建出来的。
六、交叉验证交叉验证是一种常用的评估模型性能和选择最佳模型的方法。
在实际应用中,可以通过交叉验证来评估决策树模型的性能,并选择最佳的剪枝参数、特征选择等超参数来优化模型。
七、正则化正则化是一种常用的降低模型复杂度和避免过拟合问题的方法。
在决策树中,可以通过引入正则化项来惩罚模型复杂度,从而避免过拟合问题。
总结:本文介绍了几种解决决策树过拟合问题的方法,包括剪枝、限制树的深度、增加样本量、降低特征维度、随机森林、交叉验证和正则化等。
决策树模型中的常见问题及解决方法(九)
在数据科学和机器学习领域,决策树模型是一种常见且有效的预测模型。
然而,尽管其在分类和回归问题上表现出色,但在实际应用中仍然存在一些常见的问题需要解决。
本文将讨论决策树模型中的一些常见问题以及相应的解决方法。
过拟合问题决策树模型容易出现过拟合问题,特别是在训练数据集较小或者特征值较多的情况下。
过拟合会导致模型在训练集上表现良好,但在测试集上的表现却很差。
为了解决这个问题,可以采取以下几种方法:1. 剪枝:决策树剪枝是一种有效的方法,可以防止过拟合。
剪枝分为预剪枝和后剪枝两种方式,预剪枝是在构建决策树的过程中,通过设置停止条件来避免过度生长;后剪枝则是在决策树构建完成后,通过删除子树或节点来减小模型的复杂度。
2. 增加数据量:增加训练数据集的大小可以帮助减轻过拟合问题,因为更多的数据可以提供更多的信息,有助于提高模型的泛化能力。
缺失值处理在现实数据中,常常会出现缺失值的情况,而决策树模型对缺失值的处理比较麻烦。
为了解决这个问题,可以采取以下方法:1. 忽略缺失值:可以选择忽略缺失值所在的样本或者特征,直接在剩余的完整数据上构建决策树模型。
2. 填充缺失值:另一种方法是通过填充缺失值来处理。
常见的填充方法包括使用平均值、中位数、众数等统计量填充,或者使用插补法来预测缺失值。
多分类问题决策树模型通常适用于二分类和多分类问题,但在面对多分类问题时,可能会出现一些挑战。
为了解决这个问题,可以采取以下方法:1. 一对多策略:在多分类问题中,可以采用一对多的策略来处理,即将多分类问题转化为多个二分类问题,分别对每个类别进行建模,然后将结果组合起来。
2. 多数投票策略:另一种方法是通过多数投票的方式来进行分类,即让每个叶子节点投票决定最终属于哪个类别。
特征选择在构建决策树模型时,特征选择是一个非常重要的环节。
过多的特征会使模型变得复杂,容易过拟合;而过少的特征则可能导致模型欠拟合。
为了解决这个问题,可以采取以下方法:1. 信息增益:信息增益是一种常用的特征选择方法,它通过计算每个特征对于分类的贡献度,然后选择贡献度最大的特征作为节点进行划分。
剪枝的原则和方法
剪枝的原则和方法
剪枝原则:
1. 完整性:在决策过程中,遵循完整性原则,要求必须尝试所有可行的解决方案;
2. 近似算法:近似算法主要是在原问题存在的时候,在其某些方面变形,并且降低难度来得到更佳的结果;
3. 统计学期望:根据问题可以得出可能性,在找到最佳解中,有可能在增加期望值时,也会降低枝叶节点数;
4. 优化:采用交叉验证对节点进行优化,当后续节点满足弊端值时,就会有可能会横向剪枝,以减少决策树的宽度;
剪枝方法:
1. 预剪枝:预剪枝是指在生成决策树之前,确定剪枝规则,当节点的属性和分类标签都确定的时候,就可以直接剪枝,从而大大减少决策树的节点数量;
2. 后剪枝:后剪枝是指,在生成完决策树之后,采用后剪枝将树中一
些没用的节点剔除,从而降低决策树的复杂性;
3. 枚举法:表示从候选节点中挑选最优的时,就要进行枚举,此时可以采用多棵树的模型,先将最优的节点从模型中剔除,再完整生成多棵树,比对最终结果,挑选出表现最优的那棵。
4. 动态剪枝:在扩展树的时候会维护一个动态节点,当发现此节点不能提高决策树性能的时候,就可以删除掉,从而减少多余节点。
决策树系列(二)——剪枝
决策树系列(⼆)——剪枝什么是剪枝?剪枝是指将⼀颗⼦树的⼦节点全部删掉,根节点作为叶⼦节点,以下图为例:为甚么要剪枝?决策树是充分考虑了所有的数据点⽽⽣成的复杂树,有可能出现过拟合的情况,决策树越复杂,过拟合的程度会越⾼。
考虑极端的情况,如果我们令所有的叶⼦节点都只含有⼀个数据点,那么我们能够保证所有的训练数据都能准确分类,但是很有可能得到⾼的预测误差,原因是将训练数据中所有的噪声数据都”准确划分”了,强化了噪声数据的作⽤。
剪枝修剪分裂前后分类误差相差不⼤的⼦树,能够降低决策树的复杂度,降低过拟合出现的概率。
怎样剪枝?两种⽅案:先剪枝和后剪枝先剪枝说⽩了就是提前结束决策树的增长,跟上述决策树停⽌⽣长的⽅法⼀样。
后剪枝是指在决策树⽣长完成之后再进⾏剪枝的过程。
这⾥介绍三种后剪枝⽅案:(1)REP—错误率降低剪枝顾名思义,该剪枝⽅法是根据错误率进⾏剪枝,如果⼀棵⼦树修剪前后错误率没有下降,就可以认为该⼦树是可以修剪的。
REP剪枝需要⽤新的数据集,原因是如果⽤旧的数据集,不可能出现分裂后的错误率⽐分裂前错误率要⾼的情况。
由于使⽤新的数据集没有参与决策树的构建,能够降低训练数据的影响,降低过拟合的程度,提⾼预测的准确率。
(2)PEP—悲观剪枝悲观剪枝认为如果决策树的精度在剪枝前后没有影响的话,则进⾏剪枝。
怎样才算是没有影响?如果剪枝后的误差⼩于剪枝前经度的上限,则说明剪枝后的效果与剪枝前的效果⼀致,此时要进⾏剪枝。
进⾏剪枝必须满⾜的条件:其中:表⽰剪枝前⼦树的误差;表⽰剪枝后节点的误差;两者的计算公式如下:令⼦树误差的经度满⾜⼆项分布,根据⼆项分布的性质,,,其中,N为⼦树的数据量;同样,叶⼦节点的误差。
上述公式中,0.5表⽰修正因⼦。
由于⼦节点是⽗节点进⾏分裂的结果,从理论上讲,⼦节点的分类效果总⽐⽗节点好,分类的误差更⼩,如果单纯通过⽐较⼦节点和⽗节点的误差进⾏剪枝就完全没有意义了,因此对节点的误差计算⽅法进⾏修正。
浅析决策树的生长和剪枝
浅析决策树的⽣长和剪枝简述:决策树(Decision Tree)是在已知各种情况发⽣概率的基础上,通过构成决策树来求取净现值的期望值⼤于等于零的概率,评价项⽬风险,判断其可⾏性的决策分析⽅法,是直观运⽤概率分析的⼀种图解法。
由于这种决策分⽀画成图形很像⼀棵树的枝⼲,故称决策树。
在机器学习中,决策树是⼀个预测模型,他代表的是对象属性与对象值之间的⼀种映射关系,它是⼀种监督学习。
⼀.决策树模型⾸先说明下什么是决策树呢?决策树是⼀个类似流程图的树结构:每个内部节点(分⽀节点/树枝节点)表⽰⼀个特征或属性,每个树叶节点代表⼀个分类。
在决策树的⽣长过程中主要会存在的问题是:对于选择分⽀节点的主观性较强。
解决办法:利⽤信息熵或信息增益解决因为⼈主观判断问题,只需要计算信息熵或信息增益再排序从⽽正确分类的过程。
信息增益的含义:划分数据集前后信息发⽣的变化。
熵:物理学中指物体能量的分布均匀情况,信息熵:对信息的不确定性的度量:公式:H(x)=-sum(plog(p))。
信息熵越⼩,不确定性越⼩,确定性越⼤,信息的纯度越⾼。
H(D)是数据集D的熵,计算公式:Ck是在数据集D中出现k类的数量,N是样本的数量,类别的总数。
H(D|A) 是特征A对与数据集D的条件熵,其意义是:在⼦集Di中Y的分布。
计算⽅法是:GainA(A的信息增益)=H_All(总体的信息熵)-H(A)(以A节点作为划分节点的信息熵)决策树中分⽀节点选择:信息增益⼤的作为分⽀节点信息增益越⼤,信息熵越⼩,信息不确定性越⼩,确定性越⼤,纯度越⾼。
综合之后信息增益的公式:特征A对训练集D的信息增益⽐gR(D,A)定义为HA(D)刻画了特征A对训练集D的分辨能⼒,信息增益率改进由于信息增益偏向特征取值较多的不⾜之处,使⽤信息增益率进⼀步划分决策树。
以上决策算法:ID3算法-信息增益、C4.5算法-信息增益率。
决策树剪枝策略:先剪枝、后剪枝,⽤于解决过拟合问题。
决策树剪枝
剪枝理论,决策树的剪枝在上一节中没有仔细讲,趁这个机会学习了剪枝的基础理论,这里会详细学习。
决策树为什么(WHY)要剪枝?原因是避免决策树过拟合(Overfitting)样本。
前面的算法生成的决策树非常详细并且庞大,每个属性都被详细地加以考虑,决策树的树叶节点所覆盖的训练样本都是“纯”的。
因此用这个决策树来对训练样本进行分类的话,你会发现对于训练样本而言,这个树表现完好,误差率极低且能够正确得对训练样本集中的样本进行分类。
训练样本中的错误数据也会被决策树学习,成为决策树的部分,但是对于测试数据的表现就没有想象的那么好,或者极差,这就是所谓的过拟合(Overfitting)问题。
Quinlan教授试验,在数据集中,过拟合的决策树的错误率比经过简化的决策树的错误率要高。
现在问题就在于,如何(HOW)在原生的过拟合决策树的基础上,生成简化版的决策树?可以通过剪枝的方法来简化过拟合的决策树。
剪枝可以分为两种:预剪枝(Pre-Pruning)和后剪枝(Post-Pruning),下面我们来详细学习下这两种方法:PrePrune:预剪枝,及早的停止树增长,方法可以参考见上面树停止增长的方法。
PostPrune:后剪枝,在已生成过拟合决策树上进行剪枝,可以得到简化版的剪枝决策树。
其实剪枝的准则是如何确定决策树的规模,可以参考的剪枝思路有以下几个:1:使用训练集合(Training Set)和验证集合(Validation Set),来评估剪枝方法在修剪结点上的效用2:使用所有的训练集合进行训练,但是用统计测试来估计修剪特定结点是否会改善训练集合外的数据的评估性能,如使用Chi-Square(Quinlan,1986)测试来进一步扩展结点是否能改善整个分类数据的性能,还是仅仅改善了当前训练集合数据上的性能。
3:使用明确的标准来衡量训练样例和决策树的复杂度,当编码长度最小时,停止树增长,如MDL(Minimum Description Length)准则。
决策树-剪枝算法(二)
决策树-剪枝算法(⼆)上⼀章主要描述了ID3算法的的原理,它是以信息熵为度量,⽤于决策树节点的属性选择,每次优选信息量最多的属性,以构造⼀颗熵值下降最快的决策树,到叶⼦节点处的熵值为0,此时每个叶⼦节点对应的实例集中的实例属于同⼀类。
理想的决策树有三种:1.叶⼦节点数最少2.叶⼦加点深度最⼩3.叶⼦节点数最少且叶⼦节点深度最⼩。
在实际的操作中还会设计到ID3算法的收敛,过度拟合等问题下⾯依次进⾏描述1.ID算法收敛2.过度拟合问题1.ID3算法的收敛当ID3确定根节点以及后续节点之后,因此当算法满⾜以下条件该分⽀的既可以结束1.该群数据的每⼀个数据都已经归类到同⼀类别中2.该群数据已经没有办法找到新的属性进⾏节点分割3.该群数据已经没有任何尚未处理的数据。
2.过度拟合问题原因:造成多度拟合的潜在原因主要以下两个⽅⾯1.噪声导致的过度拟合⽐如错误的分类,或者属性值。
2.缺乏代表性样本所导致的过度拟合⽅法:1.预剪枝通过提前停⽌树的构建⽽对树剪枝,⼀旦停⽌,节点就是树叶,该树叶持有⼦集元祖最频繁的类。
停⽌决策树⽣长最简单的⽅法有:1.定义⼀个⾼度,当决策树达到该⾼度时就停⽌决策树的⽣长2.达到某个节点的实例具有相同的特征向量,及时这些实例不属于同⼀类,也可以停⽌决策树的⽣长。
这个⽅法对于处理数据的数据冲突问题⽐较有效。
3.定义⼀个阈值,当达到某个节点的实例个数⼩于阈值时就可以停⽌决策树的⽣长4.定义⼀个阈值,通过计算每次扩张对系统性能的增益,并⽐较增益值与该阈值⼤⼩来决定是否停⽌决策树的⽣长。
2.后剪枝⽅法后剪枝(postpruning):它⾸先构造完整的决策树,允许树过度拟合训练数据,然后对那些置信度不够的结点⼦树⽤叶⼦结点来代替,该叶⼦的类标号⽤该结点⼦树中最频繁的类标记。
相⽐于先剪枝,这种⽅法更常⽤,正是因为在先剪枝⽅法中精确地估计何时停⽌树增长很困难。
以上可以理解为后剪枝的基本思想,其中后剪枝⽅法主要有以下⼏个⽅法:Reduced-Error Pruning(REP,错误率降低剪枝)Pesimistic-Error Pruning(PEP,悲观错误剪枝)Cost-Complexity Pruning(CCP,代价复杂度剪枝)EBP(Error-Based Pruning)(基于错误的剪枝)以下分别进⾏说明:1.REPREP⽅法是⼀种⽐较简单的后剪枝的⽅法,在该⽅法中,可⽤的数据被分成两个样例集合:⼀个训练集⽤来形成学习到的决策树,⼀个分离的验证集⽤来评估这个决策树在后续数据上的精度,确切地说是⽤来评估修剪这个决策树的影响。
如何对决策树进行剪枝
决策树剪枝是一种通过减少决策树的复杂度来提高其泛化能力的方法。
常见的决策树剪枝方法包括预剪枝和后剪枝。
1. 预剪枝(Pre-pruning):
- 基于信息增益(或基尼系数)进行预剪枝:在决策树构建的过程中,每次划分前先计算该划分能够带来的信息增益(或基尼系数),如果划分后的信息增益(或基尼系数)小于一个预先设定的阈值,则停止划分并将当前节点标记为叶子节点;
- 基于验证集进行预剪枝:将原始数据集划分为训练集和验证集,构建决策树时,在每个节点上计算该划分在验证集上的性能指标(例如准确率),如果划分后的性能指标没有显著提升,则停止划分并将当前节点标记为叶子节点。
2. 后剪枝(Post-pruning):
- 基于验证集进行后剪枝:在决策树构建完成后,自底向上地对决策树进行剪枝。
对每个节点进行考察,将其替换为叶子节点,并计算在验证集上的性能指标的变化(例如准确率),如果剪枝后的性能指标有所提升,则进行剪枝操作,否则保留当前节点。
- 基于不确定性度量进行后剪枝:利用统计学中的结构判断与不确定性(如卡方检验)来判断对应的剪枝操作。
需要注意的是,剪枝会牺牲一部分训练集上的准确率,但能够提高模型在未见样本上的泛化能力。
另外,剪枝操作还可以用于控制模型的复杂度,防止过拟合。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
= −
/ 1 − 1 = 1/60
剪枝算法比较
REP
PEP
CCP
剪枝方式
自底向上
自顶向下
自底向上
独立剪枝集
需要
-----
-----
计算复杂度
它对于两阶段决策树学习方法的优点和缺点提供了一个很好的学习思路。由于
验证集合没有参与决策树的创建,所以用REP剪枝后的决策树对于测试样例的偏
差要好很多,能够解决一定程度的过拟合问题。
PEP 悲观错误剪枝
悲观错误剪枝法是根据剪枝前后的错误率来判定子树的修剪。该方法引入
了统计学上连续修正的概念弥补REP中的缺陷,在评价子树的训练错误公式中
PPT课件下载:/kejian/
范文下载:/fanwen/
试卷下载:/shiti/
教案下载:/jiaoan/
PPT论坛:
谢谢
O(n)
O(n)
O(n²)
误差估计
剪枝集上误差估
使用连续纠正
计
标准误差
PPT模板下载:/moban/
行业PPT模板:/hangye/
节日PPT模板:/jieri/
PPT素材下载:/sucai/
PPT背景图片:/beijing/
PPT图表下载:/tubiao/
优秀PPT下载:/xiazai/
PPT教程: /powerpoint/
Word教程: /word/
Excel教程:/excel/
资料下载:/ziliao/
Correction)。PEP方法认为,如果: ′ ≤ ′ + ′
成立,则Tt应该被剪枝
上式中: ′
= ⅇ +
′ = ⅈ +
1
2
;
ⅇ
′
2
其中,e(t)为结点t出的误差;
i为覆盖 的叶子结点;
为子树 的叶子树;
n(t)为在结点t处的训练集合数量。
R(Tt):子树Tt错误代价,计算公式为R(Tt)=∑R(i),i为子树Tt的叶节点。
CCP 代价复杂度剪枝
例如
找到α值最小的非叶子节
点,令其左右孩子为NULL。
当多个非叶子节点α值同
时达到最小时,取 1 较
大的进行剪枝
我们以非叶子结点T4为例,假设已有60条数据,那么:
R(t) = r(t) ∗p(t) = (7/16) ∗(16/60) = 7/60
的标准误差内。
PEP 悲观错误剪枝
那么一棵树错误分类一个样本值为1,正确分类一个样本值为0,该树错误分类的
概率(误判率)为e(e为分布的固有属性,可以通过 + 0.5 ∗ Τ 统计出来),
那么树的误判次数就是伯努利分布,我们可以估计出该树的误判次数均值和方差:
E(subtree_err_count)= e
节点替代而增加的错分样本,复杂度表示剪枝后子树Tt减少的叶结点数,α则表示剪枝
后树的复杂度降低程度与代价间的关系,定义为:
其中,
1 :子树Tt中的叶节点数;
R(t):节点t的错误代价,计算公式为R(t)= r(t)∗ p(t),
r(t)为节点t的错分样本率,p(t)为落入结点t的样本占所有样本的比例;
方法会有剪枝失败的情况出现。
PEP 悲观错误剪枝
虽然PEP方法存在一些局限性,但是在实际应用中表现出了较高的精度。另外
PEP方法不需要分离训练集合和验证集,对于数据量比较少的情况比较有利。其
剪枝策略比其它方法相比效率更高,速度更快。因为在剪枝过程中,树中的每棵
子树最多需要访问一次,在最坏的情况下,它的计算时间复杂度也只和非剪枝树
2)使其成为叶子节点
3)赋予该节点关联的训练数据的最常见分类
4)当修剪后的树对于验证集合的性能不会比原来的树差时,才真正删除该结点
5)算法终止的条件:以bootom-up方式遍历所有的子树,直到没有任何子树可以替换使得
测试数据集的表现得以改进。
因为训练集合的过拟合,使得验证集合数据能够对其进行修正,反复进行上面的操作,
添加了一个常数,假定每个叶子结点都自动对实例的某个部分进行错误的分类。
把一棵子树(具有多个叶子节点)的分类用一个叶子节点来替代的话,在
训练集上的误判率肯定是上升的,但是在新数据上不一定。于是我们需要把子
树的误判计算加上一个经验性的惩罚因子。
PEP 悲观错误剪枝
对于一叶子节点,它覆盖了N个样本,其中有E个错误,那么该叶子节点的错误率
3.定义一个阈值,当达到某个节点的实例个数小于阈值时就可以停止决策树
的生长。或定义一个阈值,通过计算每次扩张对系统性能的增益,并比较增益
值与该阈值大小来决定是否停止决策树的生长。
不足:阈值不好设置,过大决策树过于简单;过小,有多余树枝,过于茂盛。
后剪枝方法
后剪枝(postpruning):它首先构造完整的决策树,允许树过度拟合训练数据,
为(E+0.5)/N。这个0.5就是惩罚因子,那么一棵子树,它有L个叶子节点,那么该
子树的误判率估计为: + 0.5 ∗ Τ
剪枝后内部节点变成了叶子节点,其误判个数J也需要加上一个惩罚因子,变
成J+0.5。那么子树是否可以被剪枝就取决于剪枝后的错误J+0.5在 + 0.5 ∗
的非叶子节点数目成线性关系。
CCP 代价复杂度剪枝
CCP 剪枝时,选择“表面误差率增益值“最小的非叶子节点,删除该非叶子
节点的左右子节点。若有多个非叶子节点的表面误差率增益值相同小,则选
择子节点数最多的非叶子节点进行剪枝。
CCP 代价复杂度剪枝
CCP剪枝算法分为两个步骤:
1.对于完全决策树T的每个非叶结点计算α值,循环剪掉具有最小α值的子树,
从底向上的处理节点,删除那些能够最大限度的提高验证集合精度的节点,直到进一步
修剪有害为止(有害是指修剪会减低验证集合的精度)。
REP 错误率降低剪枝
REP是最简单的后剪枝方法之一,不过由于使用独立的测试集,原始决策树
相比,修改后的决策树可能偏向于过度修剪。
尽管REP有这个缺点,不过REP仍然作为一种基准来评价其它剪枝算法的性能。
这Байду номын сангаас方法的动机是:即使学习器可能会被训练集中的随机错误和巧合规律所误
导,但验证集合不大可能表现出同样的随机波动。所以验证集可以用来对过度拟合
训练集中的虚假特征提供防护检验。
该剪枝方法考虑将树上的每个节点作为修剪的候选对象,决定是否修剪这个结
点,步骤如下。
REP 错误率降低剪枝
1)删除以此结点为根的子树
第二步骤的关键。通常可以采用V-交叉验证(V-fold Cross-Validation)和基于独立剪枝
数据集两种方法。
CCP 代价复杂度剪枝
该算法为子树Tt定义了代价(cost)和复杂度(complexity),以及一个可由用户
设置的衡量代价与复杂度之间关系的参数α,其中,代价指在剪枝过程中因子树Tt被叶
=
′
⋅ −
′
Τ
1Τ
2
PEP 悲观错误剪枝
PEP采用自顶向下的方式,如果某个非叶子结点符合上面的不等式,就裁剪掉
该叶子结点。该算法被认为是当前决策树后剪枝算法中精度比较高的算法之一,
但是也存在缺陷。首先,PEP算法是唯一使用Top-Down剪枝策略,这种策略会导致
与先剪枝出现同样的问题,将该结点的某子节点不需要被剪枝时被剪掉;另外PEP
然后对那些置信度不够的节点子树用叶子节点来代替,该叶子的类标号用该节点子
树中最频繁的类标记。相比于先剪枝,这种方法更常用,正是因为在先剪枝方法中
精确地估计何时停止树增长很困难。
后剪枝方法主要有以下几个方法:
Reduced-Error Pruning (REP,错误率降低剪枝)
Pesimistic-Error Pruning (PEP,悲观错误剪枝)
Cost-Complexity Pruning (CCP,代价复杂度剪枝)
REP 错误率降低剪枝
REP方法是一种比较简单的后剪枝的方法,在该方法中,可用的数据被分成两个
样例集合:一个训练集用来生成决策树,一个分离的验证集用来评估这个决策树在
后续数据上的精度,确切地说是用来评估修剪这个决策树的影响。
var(subtree_err_count)= ⅇ 1 − ⅇ
那么,如果子树可以被叶子节点替代,它必须满足下面的条件:
这个条件就是剪枝的标准。根据置信区间,我们设定一定的显著性因子,我们可
以估算出误判次数的上下界。
PEP 悲观错误剪枝
PEP为了提高对测试集合的预测可靠性,PEP对误差估计增加了连续性校正(Continuity
直到剩下根节点。在该步可得到一系列的剪枝树 0 , 1 , 2 ⋯ ,其中0 为原有的
完全决策树, 为根结点, + 1为对 进行剪枝的结果;
2.从子树序列中,根据真实的误差估计选择最佳决策树。
如何从步骤1产生的子树序列 0 , 1 , 2 ⋯ 中选择出最佳决策树是CCP方法的
决策树剪枝算法
目 录
CONTENTS
1
先剪枝
2
错误率降低剪枝
3
悲观剪枝
4
代价复杂度剪枝
为什么需要剪枝
在有些时候,一棵经过训练的决策树过于“繁茂”,知识过多,或者说得到的规
则集合过大。经过剪枝,可以得到一棵相对简洁的决策树,较少的规则使得在进行
分类预测时,决策树效率更高。同时,剪枝也可以减少过拟合现象的发生。