决策树算法(ID3算法)
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算法)相关推荐
- 决策树算法ID3算法(Python3实现)
目录 1.数据集准备 2.使用ID3算法递归构建决策树并使用决策树执行分类 2.1 ID3算法概述 2.2 递归终止条件 2.3 代码实现 3.Matplotlib实现决策树可视化 4.决策树的存储与 ...
- 决策树算法——ID3算法,C4.5算法
目录(?)[-] 决策树算法 1摘要 2决策树引导 3决策树的构造 31ID3算法 32C45算法 4关于决策树的几点补充说明 41如果属性用完了怎么办 42关于剪枝 决策树算法 1.摘要 在前面两篇 ...
- 机器学习:决策树算法(ID3算法)的理解与实现
机器学习:决策树算法(ID3算法)的理解与实现 文章目录 机器学习:决策树算法(ID3算法)的理解与实现 1.对决策树算法的理解 1.概述 2.算法难点 选择最优划分属性 1.信息熵 2.信息增益 2 ...
- 语音识别学习日志 2019-7-16 语音识别基础知识准备5 {决策树算法(ID3、 C4.5、 CART)}
决策树算法(ID3. C4.5. CART) 决策树的定义 决策树学习采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一颗熵值下降最快的树,到叶子节点处,熵值为0.其具有可读性.分类速度快的 ...
- ID3和C4.5分类决策树算法 - 数据挖掘算法(7)
(2017-05-18 银河统计) 决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来判断其可行性的决策分析方法,是直观运用概率分析的一种图解法.由于这种决策分支画 ...
- 机器学习-决策树算法ID3实现,含例子(红酒分类)
决策树原理实现代码如下所示:(参考自机器学习实践 Peter Harrington). import mathx=[[0,1,"no"],[0,1,"no"], ...
- 最常见核心的决策树算法—ID3、C4.5、CART(非常详细)
点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 决策树是一个非常常见并且优秀的机器学习算法,它易于理解.可解释性强,其可作为分类算法, ...
- 决策树准确率低原因_机器学习决策树算法--剪枝算法
一.剪枝算法决策树生成算法递归地产生决策树,直到不能继续下去为止.这样产生的树往往对训练数据的分类很准确,但对未知的测试数据的分类却没有那么准确,即出现过拟合现象.过拟合的原因在于学习时过多地考虑如何 ...
- 机器学习算法(4)—— 决策树算法
决策树算法 1 决策树介绍 2 信息熵 3 决策树划分依据 3.1 信息增益 3.2 信息增益率 3.3 基尼指数 3.4 小结 4. cart 剪枝 4.1 为何要 cart 剪枝 4.2 常用的剪 ...
- ID3决策树算法及其Python实现
目录 一.决策树算法 基础理论 决策树的学习过程 ID3算法 二.实现针对西瓜数据集的ID3算法 实现代码 三.C4.5和CART的算法代码实现 C4.5算法 CART算法 总结 参考文章 一.决策树 ...
最新文章
- Seam开发环境的搭建
- 两个命令把 Vim 打造成 Python IDE
- Java9中的GC 调优
- boost::mp11::mp_for_each相关用法的测试程序
- 在Data Lake Analytics中使用视图
- pip镜像源+修改linux配置用永久生效
- java 求整_Java Math类的常用方法,求整运算
- mysql安装、配置、连接
- 目标检测——夏侯南溪模型搭建篇
- 哪些人在听 60 亿流量《惊雷》?Python 告诉你 | 原力计划
- Linux 环境下安装 MySQL,各种踩坑、疑难杂症 | 原力计划
- UE4删除C++Classes下的类
- transform-origin用于设置变换原点
- JS 模拟手机页面文件的下拉刷新
- 屏蔽非微信客户端和支付宝登陆登录操作
- python从入门到精通-张子夜-专题视频课程
- Ubuntu中docker的安装和使用
- uniapp 网易云音乐app项目总结
- 执行git merge,合并两个分支的代码,其中某个分支的文件或代码被删除或被覆盖
- JVM虚拟机的理解(上)