1.决策树算法

决策树(decision tree):

决策树类似于流程图的一个树形结构,如图1。其中每个内部结点表示在一个属性上的测试,每个分支代表一个属性的输出,每个叶子结点代表类或者类的分布。树的最顶层是根结点。一个决策树如图1所示

图1 决策树示例

该示例是一个通过室外的天气情况决定是否进行室外运动的决策树,方框内代表有多少个实例属于对应的分类,这里有9个属于play,有5个属于don't play,一共有14个实例。图中的outlook表示预测的天气,作为该决策树的根结点,根结点下面有三个分支,分别是sunny(晴天)、overcast(多云)、rain(雨天)三种天气情况。如果是sunny(晴天),属于play的个数是2,属于don't play的个数是3;(overcast)多云的话,属于paly的个数是4,属于don't play的个数是0,同样如果是rain(雨天)的话,属于play的个数是3,属于don't play的个数是2。在sunny(晴天)结点下还分出了一个分支humidity(湿度),这里将湿度这个连续值作了一个离散处理,取一个阈值(这里取70),将这个连续值分为两个部分;同样在rain下有一个分支windy(是否有风),用true和false来作为分支的条件。

1.1 构造决策树的基本算法

下面用一个数据集来简单说明构造决策树的基本算法过程。如图2

图2 是否购买电脑的数据集

这个数据集是关于顾客在电脑城里面是否购买电脑的信息,有age(年龄)、income(收入情况)、student(是否是学生)、credit_rating(信用等级)和分类:buys_computer(是否买电脑)。首先我们先给出对应的决策树,如图3。

图3 构建的决策树

从这个决策树可以看出,首先将年龄进行分类,分为youth、middle_aged、senior三种,如果是middle_aged,那么是yes,代表会购买电脑,返回数据集中可以验证。在youth中又出现一个分支student,student为yes的时候,结果是yes,代表会购买电脑;student为no的时候,结果是no,代表不会购买电脑。同样的,在senior中有一个分支credit_rating,有两种情况,fair和excellent,如果credit_rating是fair,结果是no,代表不会购买电脑;如果credit_rating是excellent,结果是yes,代表会购买电脑。这个决策树为什么是这样构造的呢?下面我们先来说几个概念。

熵(entropy):

信息是一个抽象的概念,如何度量信息呢?1948年,香农提出了“信息熵”的概念,描述了信源的不确定度,解决了对信息的量化度量的问题。香农指出,任何信息都存在冗余,冗余大小与信息中每个符号(数字、字母或单词)的出现概率或者说不确定性有关。即信息的度量就等于不确定性的大小。通常,一个信源发送出什么符号是不确定的,衡量它可以根据其出现的概率来度量。概率大,出现机会多,不确定性小;反之不确定性就大。比特(bit)来衡量信息的多少,用P(Xi)表示一个某个符号出现的概率,那么信息熵H(X)的值就是

变量的不确定性越大,熵也就越大,信息熵的取值范围是0到1之间。

ID3算法

1.选择结点

信息获取量(Information Gain):Gain(A)=info(D)- info_A(D),通过A来作为结点分类获取了多少信息。下面来用这个公式来计算,加深理解

这个式子表示的是只用Class:buys_computer来计算信息熵的值,不涉及其他分类。

下面用年龄(age)来对这个Class:buys_computer进行分类,计算对应的信息熵:

在age分类中youth有5个,middle_aged有4个,senior有5个。在youth中的5个人里面有2个人买电脑是yes,3个人是no,所以对应的信息熵是

同样的,在middle_aged中的4个人里面4个人买电脑都是yes,那么0个人买电脑是no,所以对应的信息熵是

在senior中的5个人里面有3个人买电脑是yes,2个人买电脑是no,所以对应的信息熵是

注意信息熵的公式是

将上式相加之后就得到结果了。所以计算出age的信息获取量如下:

类似可以计算出Gain(income)=0.029,Gain(student)=0.151,Gain(credit_rating)=0.048

所以选取age作为第一个结点,即根结点。根结点分出来之后,如下图

然后继续以上的步骤,计算出各个属性的信息获取量,选择最大的一个作为下一个结点,直到出现目标结果(这里是买电脑为yes或者no)全是一种情况为止。注意到年龄为middle_aged的人买电脑都是yes,此时不需要再分结点。年龄为youth中分别有yes和no,年龄为senior中也是有yes和no,这两种情况就需要构建新的结点。在income、student、credit_rating中分别计算各自的信息获取量,选择最大的作为下一个结点。计算方法和上面的一样。

下面总结一下ID3算法:

  • 树以代表训练样本的单个结点开始。
  • 如果样本都在同一个类,则该结点成为树叶,并用该类标号。
  • 否则,算法使用称为信息增益的基于熵的度量作为启发信息,选择能够最好地将样本分类的属性。该属性成为该结点的“测试”或“判定”属性。在算法的该版本中,
  • 所有的属性都是分类的,即离散值。连续属性必须离散化。
  • 对测试属性的每个已知的值,创建一个分枝,并据此划分样本。
  • 算法使用同样的过程,递归地形成每个划分上的样本判定树。一旦一个属性出现在一个结点上,就不必该结点的任何后代上考虑它。
  • 递归划分步骤仅当下列条件之一成立停止:
  • (a) 给定结点的所有样本属于同一类。
  • (b) 没有剩余属性可以用来进一步划分样本。在此情况下,使用多数表决。
  • 这涉及将给定的结点转换成树叶,并用样本中的多数所在的类标记它。替换地,可以存放结点样本的类分布。
  • (c) 分枝,test_attribute = a i 没有样本。在这种情况下,以 samples 中的多数类创建一个树叶

其他算法:

C4.5:  Quinlan

Classification and Regression Trees (CART): (L. Breiman, J. Friedman, R. Olshen, C. Stone)

共同点:都是贪心算法,自上而下(Top-down approach)

区别:属性选择度量方法不同: C4.5 (gain ratio), CART(gini index), ID3 (Information Gain)

在机器学习中,如果树的深度太大,会表现为在训练集上表现非常好,在测试集上的表现不好,这是因为树的叶子分得太多,太细化,导致该情况的出现,这被称为overfitting(过拟合)。为了避免overfitting,有两种方法:

1.先剪枝。分到一定情况下,就不再分下去,比如设定一个阈值,在类的纯度达到该阈值之后就不再分下去。

2.后剪枝。将树完全建好,再根据某些条件去将多余的树叶剪去。

决策树的优缺点:

优点:直观,便于理解,小规模数据集有效

缺点:处理连续变量不好;类别较多时,错误增加的比较快(算法复杂度大);可规模性一般

转载于:https://my.oschina.net/u/3470937/blog/3009396

决策树算法(ID3算法)相关推荐

  1. 决策树算法ID3算法(Python3实现)

    目录 1.数据集准备 2.使用ID3算法递归构建决策树并使用决策树执行分类 2.1 ID3算法概述 2.2 递归终止条件 2.3 代码实现 3.Matplotlib实现决策树可视化 4.决策树的存储与 ...

  2. 决策树算法——ID3算法,C4.5算法

    目录(?)[-] 决策树算法 1摘要 2决策树引导 3决策树的构造 31ID3算法 32C45算法 4关于决策树的几点补充说明 41如果属性用完了怎么办 42关于剪枝 决策树算法 1.摘要 在前面两篇 ...

  3. 机器学习:决策树算法(ID3算法)的理解与实现

    机器学习:决策树算法(ID3算法)的理解与实现 文章目录 机器学习:决策树算法(ID3算法)的理解与实现 1.对决策树算法的理解 1.概述 2.算法难点 选择最优划分属性 1.信息熵 2.信息增益 2 ...

  4. 语音识别学习日志 2019-7-16 语音识别基础知识准备5 {决策树算法(ID3、 C4.5、 CART)}

    决策树算法(ID3. C4.5. CART) 决策树的定义 决策树学习采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一颗熵值下降最快的树,到叶子节点处,熵值为0.其具有可读性.分类速度快的 ...

  5. ID3和C4.5分类决策树算法 - 数据挖掘算法(7)

    (2017-05-18 银河统计) 决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来判断其可行性的决策分析方法,是直观运用概率分析的一种图解法.由于这种决策分支画 ...

  6. 机器学习-决策树算法ID3实现,含例子(红酒分类)

    决策树原理实现代码如下所示:(参考自机器学习实践 Peter Harrington). import mathx=[[0,1,"no"],[0,1,"no"], ...

  7. 最常见核心的决策树算法—ID3、C4.5、CART(非常详细)

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 决策树是一个非常常见并且优秀的机器学习算法,它易于理解.可解释性强,其可作为分类算法, ...

  8. 决策树准确率低原因_机器学习决策树算法--剪枝算法

    一.剪枝算法决策树生成算法递归地产生决策树,直到不能继续下去为止.这样产生的树往往对训练数据的分类很准确,但对未知的测试数据的分类却没有那么准确,即出现过拟合现象.过拟合的原因在于学习时过多地考虑如何 ...

  9. 机器学习算法(4)—— 决策树算法

    决策树算法 1 决策树介绍 2 信息熵 3 决策树划分依据 3.1 信息增益 3.2 信息增益率 3.3 基尼指数 3.4 小结 4. cart 剪枝 4.1 为何要 cart 剪枝 4.2 常用的剪 ...

  10. ID3决策树算法及其Python实现

    目录 一.决策树算法 基础理论 决策树的学习过程 ID3算法 二.实现针对西瓜数据集的ID3算法 实现代码 三.C4.5和CART的算法代码实现 C4.5算法 CART算法 总结 参考文章 一.决策树 ...

最新文章

  1. Seam开发环境的搭建
  2. 两个命令把 Vim 打造成 Python IDE
  3. Java9中的GC 调优
  4. boost::mp11::mp_for_each相关用法的测试程序
  5. 在Data Lake Analytics中使用视图
  6. pip镜像源+修改linux配置用永久生效
  7. java 求整_Java Math类的常用方法,求整运算
  8. mysql安装、配置、连接
  9. 目标检测——夏侯南溪模型搭建篇
  10. 哪些人在听 60 亿流量《惊雷》?Python 告诉你 | 原力计划
  11. Linux 环境下安装 MySQL,各种踩坑、疑难杂症 | 原力计划
  12. UE4删除C++Classes下的类
  13. transform-origin用于设置变换原点
  14. JS 模拟手机页面文件的下拉刷新
  15. 屏蔽非微信客户端和支付宝登陆登录操作
  16. python从入门到精通-张子夜-专题视频课程
  17. Ubuntu中docker的安装和使用
  18. uniapp 网易云音乐app项目总结
  19. 执行git merge,合并两个分支的代码,其中某个分支的文件或代码被删除或被覆盖
  20. JVM虚拟机的理解(上)

热门文章

  1. 第一次制作中秋博饼小游戏的心得与吐槽(软件工程)
  2. Android源码下载repo以及repo init总结
  3. kudu设计-tablet
  4. tablepc是什么平板电脑_平板电脑 Tablet PC
  5. Struts2-boobooke-概述
  6. 运维安全是指什么?如何做好运维安全?
  7. 紧固件基础知识之规格篇和功能篇
  8. 模拟登录幸运抽奖(java)
  9. 软件工程师具体的工作内容是什么?
  10. web前端开发面试题(四)