决策树

本文介绍了决策树的工作原理,以一种类似游戏的比喻来解释。详细讲述了决策树的建立过程,包括Hunt算法和ID3算法,以及如何选择最佳分类属性。讨论了决策树的优劣势,如简单易用、容忍噪点,但也存在过拟合问题。文章提供了使用Python的sklearn库构建决策树的指导,并给出了输出决策树结果的示例,强调了在实际应用中防止过拟合的策略和参数调整的重要性。

简介

很多人都玩过一个游戏,通过限定次数的提问猜出对方在纸上写出的一个词,当然对方必须对我们的每一个猜测做出回应,通过一连串正确或者错误的判断,如果最终我们猜出了对方的那个词,那么我们就取得了胜利,决策树的工作原理就和这个游戏类似,看下面一个例子:

上面这张图就是一个典型的决策树,我们每天出门前要想一下今天是开车还是走路呢?首先看看窗外,下雨了吗?如果有再看看到底是雪还是雨?哇靠!是雪,开车吧!这样一个决策的过程就是在根节点处做出的,其他的节点可以类似的推导,每一个椭圆的节点都对应着我们需要考虑的属性(天气,气温,时间,地点.....)而每个叶子节点就是我们做出的决策了,到这里就是一棵树生长的终点。

现在如果要建立一棵决策树,需要什么数据呢?需要建立的是一堆属性到最后决策的映射关系,那么训练数据集包含了一堆属性值,以及样例正确分类的值,如下所示,对于星期六,我们有一下属性,每个属性的取值包含在了花括号内。

outlook, with values {sunny, overcast, rain}

temperature, with values {cool, mild, hot}

humidity, with values {high, normal}

windy, with values {true, false }

将各个属性去一定的值并集合在一起,就形成了一个特殊的星期天:

outlook: overcast

temperature: cool

humidity: normal

windy: false

分类的类别只有两类:N(反例),P(正例),任务是建立一个分类的方式,将属性值正确的映射至分类方式。

试想如果训练样例中只有两例,而且他们的属性值相同,但是对应着不同的分类,那么这样肯定不能从这样的数据集中正确的分类。所以我们需要足够的原料来开锅(喂给算法学习).如果训练的样例充足,我们总是可能利用训练数据来建立一棵决策树的,所以是否能不仅仅让它符合训练数据,还能在未知的数据集上表现出色?那么需要我们的决策树很好的抓住了属性与分类值之间的联系,越是简单的树约可能在未知的数据集上表现良好,因为他的复杂度较低,可能遭遇的variance也会较低,在未知的数据中的表现更接近于在训练数据中的表现。

决策树算法

Hunt算法

从原则上讲,给定我们一个训练数据集,通过各种属性的组合可以构造指数级的决策树,找出最佳的决策树在计算上是不可行的,所以决策树是人们在复杂度和效率之间权衡的产物,现在市面上的决策树都采用了贪心算法策略,在选择划分的数据属性时,采用一系列局部最优决策来构造决策树。他们的基础就是Hunt算法,算法的描述如下:

Hunt算法:

在Hunt算法中,通过递归的方式建立决策树。

1:如果数据集D中所有的数据都属于一个类,那么将该节点标记为为节点。

2:如果数据集D中包含属于多个类的训练数据,那么选择一个属性将训练数据划分为较小的子集,对于测试条件的每个输出,创建一个子女节点,并根据测试结果将D中的记录分布到子女节点中,然后对每一个子女节点重复1,2过程,对子女的子女依然是递归的调用该算法,直至最后停止。 

ID3算法

ID3算法(Iterative Dichotomiser 3 迭代二叉树3代)是一个由Ross Quinlan发明的用于决策树的算法。这个算法便是建立在上述所介绍的奥卡姆剃刀的基础上:越是小型的决策树越优于大的决策树(be simple简单理论)。尽管如此,该算法也不是总是生成最小的树形结构,而是一个启发式算法。

    从信息论知识中我们知道,期望信息越小,信息增益越大,从而纯度越高。ID3算法的核心思想就是以信息增益度量属性选择,选择分裂后信息增益最大的属性进行分裂。该算法采用自顶向下的贪婪搜索遍历可能的决策树空间。

     所以,ID3的思想便是:

  1. 自顶向下的贪婪搜索遍历可能的决策树空间构造决策树(此方法是ID3算法和C4.5算法的基础);
  2. 从“哪一个属性将在树的根节点被测试”开始;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值