决策树算法概念以及代码实现

一、决策树(ID3)算法

概念:采用西瓜书上的描述来说,决策树是一类常见的机器学习方法,以二分类为例,我们希望从给定的训练数据集学得一个模型用以对新示例进行分类,把这个样本分类的任务,可看作对“当前样本属于正类吗?”这个问题的“决策” 或“判定”过程。顾名思义,决策树是基于树结构来进行决策的,这恰是人类在面临决策问题时一种很自然的处理机制。

例如:判断一个西瓜是否好瓜可以通过如下决策树

现在则给出个问题,为什么最开始会先看 “色泽” 而不是先看 “根蒂” 或者 “敲声”?那么按照生活习惯的理解可以认为色泽属性在某种程度上对于是不是好瓜这个结果的影响最大,所以看一个瓜是不是好瓜我们一般先从色泽上面开始观察,即属性优先级上 “色泽” 要优于其他属性,所以构建决策树的关键问题出来了!那就是:


决策树的关键问题 :如何从属性集中选择最优划分属性出来!!


那么现在假设我们需要训练一个用来对西瓜进行分类的决策树:首先需要使用一部分既有的数据集来作训练数据集,则若给定如下数据

总共提供17个西瓜给我们做训练数据集,每个瓜有6个属性即{“色泽”,“根蒂”,“敲声”,“纹理”,“脐部”,“触感”},有两个分类{“是好瓜”,“不是好瓜”}

那么怎么判断哪个属性是最优划分属性?

引入一个 信息熵” 的概念:



D是样本集,|y| 是数据的类别数,这儿 |y| = 2。pk是指当前样本集合D中第K类样本所占的比例。

当然光凭信息熵还不能够,还要引入一个 “信息增益” 的概念


在这儿根节点的信息熵为:Ent (D) = - (8/17 * log 8/17 + 9/17 * log 9/17) = 0.998

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 决策树理论在决策树理论中,有这样一句话,“用较少的东西,照样可以做很好的事情。越是小的决策树,越优于大的决策树”。...
    制杖灶灶阅读 5,972评论 0 25
  • 转自算法杂货铺--决策树决策树和随机森林学习笔记-欢迎补充 http://www.cnblogs.com/fion...
    尧字节阅读 10,801评论 1 6
  • 1、决策树算法 决策树(decision tree)又叫判定树,是基于树结构对样本属性进行分类的分类算法。以二分类...
    JasonJe阅读 2,860评论 0 22
  • PS:看起来简书好像不支持MathJax,文章中的数学公式都没渲染出来,大家将就点看吧...(或者可以访问我的个人...
    gaunthan阅读 2,183评论 0 2
  • 今天,我早餐是五谷粥,我们住宾馆,现在还在看电视呢!就在琼海,在宾馆的窗户往外看都是装着灯的房子。另外,今天...
    艾利克斯诺阅读 237评论 0 2