决策树(主要针对CART)的生成与剪枝

这次主要想写两篇,一篇把决策树的相关思想和方法解释清楚,另外一个说一下ensemble形式的决策树,random forest,依据主要是breiman的论文。

这篇讲决策树(主要以cart为例,因为random forest的大多实现也是根据cart)

1、cart的生成。

cart的全称是classification and regression tree,意为分类回归树。也就是说这类决策树既可以解决分类问题,也能解决回归问题。因此针对分类树和回归树,cart有两种生成方式。这里要注意,树是根据训练集数据依据一定的规则生成,对于测试集数据,只需要将数据从根节点输入,像流水一样,沿着应该走的管道,到达所预测的类别或者回归数值。

针对任何一种机器学习模型,其训练过程都大同小异,目的都是为了使训练集数据尽可能被较好地分类和拟合。cart也不例外,无论是分类树还是回归树,无外乎都需要在生成过程(训练过程)使得某些误差最小,最恰当的安排训练数据。下面分别说明。

(1)分类树的生成。

对于一份lable为分类变量的训练集,存在一个指标叫做基尼指数,只需要知道基尼指数是概率分布的其中一种表示

                  

pk表示某一类别的样本数占总样本数的比例。再说一次,只要是分类性质的样本集,本身就存在基尼指数这个属性。

然后就是到底按照哪个特征的哪个值进行二分训练集,注意,cart树的每一步都是二分,没有多分情况。

没有简单的办法,只有穷举,用每个特征(这里是A)的每个可能的值(这里是a)进行二分,每分一次就会产生两份样本,然后按照上式求每一次的综合基尼指数,最后选择基尼指数最小的那个分法就好了。为什么选择最小的呢?我们看看基尼指数的含义,实质上表示的是一份样本集的纯净程度,拿二分类类型的样本集来说,这个算式在什么情况下最大?最小?当所有样本都是一类的时候,最小,为0;当一半一半时,最大,为2*0.5^2。所以,越小的基尼指数,意味着这次二分最大程度保证了分开的两份样本集各自的纯净度,这也正是我们想要的。

2、回归树的生成

对应与分类树的最小化基尼指数准则,回归树该怎么确定哪个分法才最好呢?最小二乘!经典的最小二乘算法!

对于每一个特征的每一个值,我们依然都尝试一遍,每一次,都算一下5.21式。c1,c2分别是分开的两份样本的各自均值,也就是能使拟合误差最小的预测值。直至满足停止条件。

(3)关于停止条件。

对于分类回归树来说,停止条件可以有多种,也可以人为设定。比如对于分类树,可以当所有特征都用尽时停止,也可以当某个树杈包含的所有样本都纯净时停止。对于回归树,可以认为设定当某个树杈包含的样本个数或者方差小于某个阈值时停止。

2、cart的剪枝以及其它的剪枝算法。

这里介绍两种主要的剪枝算法--reduced error prune and cost complexity prune(ccp)

插一句,为什么要剪枝。可以想象一下,对于决策树来说,它可以把训练集训练的100%准确,就是完全拟合,但是对于任何新的数据,它会产生巨大的误差。因此一颗生长完全的决策树其实是overfitting的,必须要通过剪枝来降低它的泛化误差。

另外,剪枝算法通常都需要有验证集数据的帮助。

(1)reduced error prune

这种剪枝算法是最简单最直观的。它完全脱离训练集数据,采用新的验证集数据去判断某一个subtree该不该替换成leaf。首先,先用完整的未剪枝的树把验证集测试一遍,肯定有很多错误。这时候,针对每一个node,都试着剪掉一遍,然后每剪掉一个node,都再测试一遍,看看是否提高了准确度,最终选择那个提高准确度最高的node,剪掉它。这叫做一轮剪枝,然后继续重复,每次剪一个node,直到准确度不再有提高为止。

(2)ccp

这种剪枝算法就是cart树使用的。

这种算法并没有完全脱离训练集。第一步先依据训练集,尝试剪掉每个节点(有歧义,其实是每次只剪一个,比如节点A,B,C,先剪掉A,保留B,C;再剪掉B,保留A,C....)

在训练集上计算以下指标a:

取最小的那个a对应的节点,剪掉!,这时候生成了第一个子树(N-1个节点,原树N个)。重复以上步骤,直到最后只剩下根节点,作为最后一个子树。

这时候,我们有了一系列的子树,然后第二步:

验证集登场,这时候,只需要使用验证集对所有子树走一遍,取误差最小的那棵树,就是我们最终需要的树!

可以看出,这个指标a,既联系了tree size,又联系了error,最终的optimal a相当于一定程度上给决策树加上了复杂度的惩罚项,也就是做了相应的正则化。既减少了误差,又平衡了复杂度。

好了,大概就是这些!

下一次写一点random forest。

时间: 2024-08-04 03:13:50

决策树(主要针对CART)的生成与剪枝的相关文章

机器学习笔记(九)——决策树的生成与剪枝

一.决策树的生成算法 基本的决策树生成算法主要有ID3和C4.5, 它们生成树的过程大致相似,ID3是采用的信息增益作为特征选择的度量,而C4.5采用信息增益比.构建过程如下: 从根节点开始,计算所有可能的特征的信息增益(信息增益比),选择计算结果最大的特征. 根据算出的特征建立子节点,执行第一步,直到所有特征的信息增益(信息增益比)很小或者没有特征可以选择为止. 以上算法只有树的生成,容易产生过拟合. 二.决策树的剪枝 决策树对于训练数据有很好的分类,但是对于未知测试集的分类并没有那么准确,这

Uva140 Bandwidth 全排列+生成测试法+剪枝

参考过仰望高端玩家的小清新的代码... 思路:1.按字典序对输入的字符串抽取字符,id[字母]=编号,id[编号]=字母,形成双射       2.邻接表用两个vector存储,存储相邻关系       3.先尝试字母编号字典序最小的排列,此为next_permutation的最上排列       4.在最理想的情况下都不能得到比当前最优解更好的方案,则应当剪枝(prune)       5.memcpy(),strchr()方法来自于库函数 测试集: Input:      A:FB;B:GC

模式识别:分类回归决策树CART的研究与实现

摘 要:本实验的目的是学习和掌握分类回归树算法.CART提供一种通用的树生长框架,它可以实例化为各种各样不同的判定树.CART算法采用一种二分递归分割的技术,将当前的样本集分为两个子样本集,使得生成的决策树的每个非叶子节点都有两个分支.因此,CART算法生成的决策树是结构简洁的二叉树.在MATLAB平台上编写程序,较好地实现了非剪枝完全二叉树的创建.应用以及近似剪枝操作,同时把算法推广到多叉树. 一.技术论述 1.非度量方法 在之前研究的多种模式分类算法中,经常会使用到样本或向量之间距离度量(d

机器学习经典算法详解及Python实现--CART分类决策树、回归树和模型树

摘要: Classification And Regression Tree(CART)是一种很重要的机器学习算法,既可以用于创建分类树(Classification Tree),也可以用于创建回归树(Regression Tree),本文介绍了CART用于离散标签分类决策和连续特征回归时的原理.决策树创建过程分析了信息混乱度度量Gini指数.连续和离散特征的特殊处理.连续和离散特征共存时函数的特殊处理和后剪枝:用于回归时则介绍了回归树和模型树的原理.适用场景和创建过程.个人认为,回归树和模型树

机器学习总结(八)决策树ID3,C4.5算法,CART算法

本文主要总结决策树中的ID3,C4.5和CART算法,各种算法的特点,并对比了各种算法的不同点. 决策树:是一种基本的分类和回归方法.在分类问题中,是基于特征对实例进行分类.既可以认为是if-then规则的集合,也可以认为是定义在特征空间和类空间上的条件概率分布. 决策树模型:决策树由结点和有向边组成.结点一般有两种类型,一种是内部结点,一种是叶节点.内部结点一般表示一个特征,而叶节点表示一个类.当用决策树进行分类时,先从根节点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到子结点.而

02-23 决策树CART算法

[TOC] 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnblogs.com/nickchen121/ 决策树CART算法 决策树C4.5算法虽然对决策树ID3算法做了很大的改良,但是缺点也是很明显的,无法处理回归问题.使用较为复杂的熵来作为特征选择的标准.生成的决策树是一颗较为复杂的多叉树结构,CART算法针对这些问题又做了进一步的优化. 一.决策树CART算法学习目标 基尼指数和熵 CART算法对连续值和特

机器学习技法-决策树和CART分类回归树构建算法

课程地址:https://class.coursera.org/ntumltwo-002/lecture 重要!重要!重要~ 一.决策树(Decision Tree).口袋(Bagging),自适应增强(AdaBoost) Bagging和AdaBoost算法再分类的时候,是让所有的弱分类器同时发挥作用.它们之间的区别每个弱分离器是否对后来的blending生成G有相同的权重. Decision Tree是一种有条件的融合算法,每次只能根据条件让某个分类器发挥作用. 二.基本决策树算法 1.用递

数据挖掘-CART,C4.5,ID3,决策树

CART和C4.5决策树有什么区别? 1.C4.5算法是在ID3算法的基础上采用信息增益率的方法选择测试属性. ID3算法和C4.5算法虽然在对训练样本集的学习中可以尽可能多地挖掘信息,但其生成的决策树分支较大,规模较大.为了简化决策树的规模,提高生成决策树的效率,又出现了根据GINI系数来选择测试属性的决策树算法CART.2.CART算法采用一种二分递归分割的技术,与基于信息熵的算法不同,CART算法对每次样本集的划分计算GINI系数,GINI系数,GINI系数越小则划分越合理.CART算法总

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

第4章 分类:基本概念.决策树与模型评估 分类任务就是确定对象属于哪个预定义的目标类.分类问题是一个普遍存在的问题,有许多不同的应用.例如:根据电子邮件的标题和内容检查出垃圾邮件,根据核磁共振扫描的结果区分肿瘤是恶性的还是良性的,根据星系的形状对它们进行分析. 本章介绍分类的基本概念,讨论诸如模型的过分拟合等关键问题,并提供评估和比较分类技术性能的方法.尽管本章主要关注一种称作决策树归纳的技术,但是本章讨论的大部分内容也适用于其他的分类技术. 4.1 预备知识 分类任务的输入数据是记录的集合.每