决策树初探

决策树是一种常用的监督学习方法,它根据输入的训练集各样本的特征向量和标签从上到下建立一棵树,每个非叶结点是一个特征,每个叶结点是一个标签,结点之间的边是特征的一个取值。决策的过程就像程序流经层层嵌套的if-else语句,最后进到一个不再细分的块(叶结点)里,从而预测出样本的归类。

决策树的优点是简单实用、速度快、白盒决策(即人可以理解模型的决策过程,相应的像深度学习模型的决策过程人就无法理解),缺点是、、启发式建树往往找不到最优解;决策过程很“硬”,只根据信息增益来选择特征,且特征用过就不能“回头”,特征向量很大时问题可能更明显;容易造成过拟合。

建树的过程,本质上就是不断挑选特征作为“分叉标准”。我们当然希望能找出一颗“全局最优”的决策树,但很遗憾这是一个NP完全问题。因此只好退而求其次,采用启发式的学习方法,即每次都在当前剩下的特征里挑选一个“最能将训练集正确划分”的特征作为下一个结点,挑选的标准是来自信息论的“信息增益”等概念。所谓信息增益,即在获得这个信息之后,整个系统的混乱未知程度(熵)下降的大小。

决策树有三种生成算法,ID3、C4.5和CART,前两种是针对分类问题的,第三种既可以用于分类问题,也可用于回归问题。

一、ID3算法

采用信息增益作为特征选取的标准。伪代码如下:

1.初始有一个样本分组,即训练集全体样本;每组有一个对应的特征集合,初始样本分组对应的特征集合为全体特征。

2.若分组里绝大部分样本都处在同一个分类,或分组对应的特征集合为空,则创造一个叶结点,以样本投票决定该结点的标签名;

3.逐个计算特征集合里各特征的信息增益,若最大的信息增益未达到阈值,则创造叶结点;若达到了阈值,则以信息增益最大的特征为非叶结点,按特征取值将样本分组,并将该特征从特征集合里剔除,剩下的特征集合作为各新分组的对应特征集合。然后每组递归执行2、3步。

二、C4.5算法

与ID3几乎完全一样,唯一的区别是把信息增益换成了信息增益比,原因是信息增益的计算方法有利于取值较多的特征。信息增益比用特征本身的经验熵去除它所带来的信息增益,矫正了上述问题。

三、CART算法

CART全称Classification And Regression Tree,既可用于分类问题,也可用于回归问题。

CART最大的特点是,它构建的是二叉树。以分类树为例,其生成算法如下:

1.对结点上的特征集上的每个特征A及其每个取值a,根据样本对于A=a的测试结果为“true"或"false"将样本分为两组,并计算其基尼指数。

2.依基尼指数最小的特征相应的切分点,从现结点生成两个子节点,将现结点上的样本分配到子节点内。

递归执行1、2直到满足停止条件。停止条件包括:样本个数小于阈值、样本集基尼指数小于阈值(基本属于同一类)、没有更多特征可选等。

时间: 2024-11-05 06:24:46

决策树初探的相关文章

初探NO.2—离散分类问题&决策树的启示

今天梳理决策树.说起这一个模型真的也算是一个经典的模型,还好也不算太难.索性把我理解算法的精髓和编码实现都交代一下吧. 在现实生活中有些事情是可以或者方便量化的,比如上一篇逻辑回归中我们给每一道菜进行打分然后给这个菜一个评判,看看它是否好吃.然而有些事情可能量化起来不是这么容易,举一个例子,前两天Leo的同学说她被家里强迫去相亲,后来她说对方男孩还是挺好的.这个时候Leo就开始想相亲这种事,仁者见仁智者见智,每一个人评判的法则肯定不太一样,以我们世俗的眼光中,一般"高帅富"无疑是受女孩

初探MACHINE LEARNING(二)—–决策树好百家乐技巧他们都很愿意分享技

很抱歉又让你们等了两个月才更新文章,最近这段时间一直在忙着准备出国的材料,改文书.开证明基本上没课的时间都在旅顺校区和本部校区之间乱跑······不过看着自己的成绩单和几十张证书也是非常欣慰的,我感觉我的大学生活还是非常充实的,说说我的大学前三年是怎么过的吧,大一大二那会儿闲着没事的时候搞搞比赛,到了大三就去东软实训了一个学期我们实训从9月开始到12月就结束了因此要比在学校上课提前结束1个月左右吧,因此那年的冬天我没有选择立刻回家而是在大连这边找了一个小公司去实习了大概待了三个月不过这三个月确实

从决策树学习谈到贝叶斯分类算法、EM、HMM

从决策树学习谈到贝叶斯分类算法.EM.HMM 引言 近期在面试中,除了基础 &  算法 & 项目之外,经常被问到或被要求介绍和描写叙述下自己所知道的几种分类或聚类算法(当然,这全然不代表你将来的面试中会遇到此类问题,仅仅是由于我的简历上写了句:熟悉常见的聚类 & 分类算法而已),而我向来恨对一个东西仅仅知其皮毛而不得深入,故写一个有关数据挖掘十大算法的系列文章以作为自己备试之用,甚至以备将来经常回想思考.行文杂乱,但侥幸若能对读者起到一点帮助,则幸甚至哉. 本文借鉴和參考了两本书,

初探NO.3—从头到尾聊聊贝叶斯的分类方法

宅在家无聊之余决定看着<概率论和数理统计>&<统计学习方法>总结一下朴素贝叶斯和贝叶斯估计. 正好这一块我最近温习了一下,我从一开始条件概率开始写,把我所理解的贝叶斯分类算法完整呈现一下吧. 学的概率论最开始是在高中,当时是条件概率,给出条件概率的定义:事件A在另外一个事件B已经发生条件下的发生概率.条件概率表示为P(A|B),读作"在B条件下A的概率". 其次我们有必要温习一下乘法定理,乘法定理的定义:设P(A)>0,则有P(AB)=P(B|A)

从决策树学习谈到贝叶斯分类算法、EM、HMM --别人的,拷来看看

从决策树学习谈到贝叶斯分类算法.EM.HMM 引言 最近在面试中,除了基础 &  算法 & 项目之外,经常被问到或被要求介绍和描述下自己所知道的几种分类或聚类算法(当然,这完全不代表你将来的面试中会遇到此类问题,只是因为我的简历上写了句:熟悉常见的聚类 & 分类算法而已),而我向来恨对一个东西只知其皮毛而不得深入,故写一个有关数据挖掘十大算法的系列文章以作为自己备试之用,甚至以备将来常常回顾思考.行文杂乱,但侥幸若能对读者起到一点帮助,则幸甚至哉. 本文借鉴和参考了两本书,一本是T

决策树之ID3、C4.5、C5.0 、CART

决策树是一种类似于流程图的树结构,其中,每个内部节点(非树叶节点)表示一个属性上的测试,每个分枝代表该测试的一个输出,而每个树叶节点(或终端节点存放一个类标号).树的最顶层节点是根节点.下图是一个典型的决策树(来自<数据挖掘:概念与技术>[韩家炜](中文第三版)第八章): 在构造决策树时,使用属性选择度量来选择将元祖划分成不同类的属性.这里我们介绍三种常用的属性选择度量-----信息增益.信息增益率和基尼指数.这里使用的符号如下.设数据分区\(D\)为标记类元组的训练集.假设类标号属性具有\(

进阶之初探nodeJS

一.前言 在"初探nodeJS"随笔中,我们对于node有了一个大致地了解,并在最后也通过一个示例,了解了如何快速地开启一个简单的服务器. 今儿,再次看了该篇随笔,发现该随笔理论知识稍多,适合初级入门node,固萌生一个想法--想在该篇随笔中,通过一步步编写一个稍大一点的node示例,让我们在整体上更加全面地了解node. so,该篇随笔是建立在"初探nodeJS"之上的,固取名为"进阶之初探nodeJS". 好了,侃了这多,那么我们即将实现一个

决策树 随机森林 adaboost

? 熵.互信息? 决策树学习算法 ? 信息增益 ? ID3.C4.5.CART? Bagging与随机森林? 提升 ? Adaboost/GDBT ? 熵.互信息 熵是对平均不确定性的度量. 平均互信息:得知特征Y的信息而使得对标签X的信息的不确定性减少的程度.描述随机变量之间的相似程度.(条件熵.相对熵:差异性) ? 决策树 决策树学习采用的是自顶向下的递归方法,有监督学习. 其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处的熵值为零,此时每个叶节点中的实例都属于同一类. 建立

从273二手车的M站点初探js模块化编程

前言 这几天在看273M站点时被他们的页面交互方式所吸引,他们的首页是采用三次加载+分页的方式.也就说分为大分页和小分页两种交互.大分页就是通过分页按钮来操作,小分页是通过下拉(向下滑动)时异步加载数据. 273这个M站点是产品推荐我看的.第一眼看这个产品时我就再想他们这个三次加载和翻页按钮的方式,那么小分页的pageIndex是怎么计算的.所以就顺便看了下源码. 提到看源码时用到了Chrome浏览器的格式化工具(还是朋友推荐我的,不过这个格式化按钮的确不明显,不会的话自行百度). 三次加载和分