1 什么是决策树

决策树(Decision Tree)是一种基本的分类与回归方法,本文主要讨论分类决策树。决策树模型呈树形结构,在分类问题中,表示基于特征对数据进行分类的过程。它可以认为是if-then规则的集合。每个内部节点表示在属性上的一个测试,每个分支代表一个测试输出,每个叶节点代表一种类别。
决策树的优点:
1)可以自学习。在学习过程中不需要使用者了解过多的背景知识,只需要对训练数据进行较好的标注,就能进行学习。
2)决策树模型可读性好,具有描述性,有助于人工分析;
3)效率高,决策树只需要一次构建,就可以反复使用,每一次预测的最大计算次数不超过决策树的深度。

举一个通俗的例子,假设一位母亲在给女儿介绍对象时,有这么一段对话:
母亲:给你介绍个对象。
女儿:年纪多大了?
母亲:26。
女儿:长的帅不帅?
母亲:挺帅的。
女儿:收入高不?
母亲:不算很高,中等情况。
女儿:是公务员不?
母亲:是,在税务局上班呢。
女儿:那好,我去见见。
这个女生的决策过程就是典型的分类决策树。相当于对年龄、外貌、收入和是否公务员等特征将男人分为两个类别:见或者不见。假设这个女生的决策逻辑如下:

上图完整表达了这个女孩决定是否见一个约会对象的策略,其中绿色结点(内部结点)表示判断条件,橙色结点(叶结点)表示决策结果,箭头表示在一个判断条件在不同情况下的决策路径,图中红色箭头表示了上面例子中女孩的决策过程。
这幅图基本可以算是一棵决策树,说它“基本可以算”是因为图中的判定条件没有量化,如收入高中低等等,还不能算是严格意义上的决策树,如果将所有条件量化,则就变成真正的决策树了。

2 构建决策树

2.1 构建决策树的基本步骤

决策树构建的基本步骤如下:
1. 开始,所有记录看作一个节点
2. 遍历每个特征的每一种分裂方式,找到最好的分裂特征(分裂点)
3. 分裂成两个或多个节点
4. 对分裂后的节点分别继续执行2-3步,直到每个节点足够“纯”为止
如何评估分裂点的好坏?如果一个分裂点可以将当前的所有节点分为两类,使得每一类都很“纯”,也就是同一类的记录较多,那么就是一个好分裂点。
具体实践中,到底选择哪个特征作为当前分裂特征,常用的有下面三种算法:
ID3:使用信息增益g(D,A)进行特征选择
C4.5:信息增益率 =g(D,A)/H(A)
CART:基尼系数
一个特征的信息增益(或信息增益率,或基尼系数)越大,表明特征对样本的熵的减少能力更强,这个特征使得数据由不确定性到确定性的能力越强。

2.2 构建决策树例子

下面就以一个经典的打网球的例子来说明如何构建决策树。我们今天是否去打网球(play)主要由天气(outlook)、温度(temperature)、湿度(humidity)、是否有风(windy)来确定。样本中共14条数据。

NO. Outlook temperature humidity windy play
1 sunny hot high FALSE no
2 sunny hot high TRUE no
3 overcast hot high FALSE yes
4 rainy mild high FALSE yes
5 rainy cool normal FALSE yes
6 rainy cool normal TRUE no
7 overcast cool normal TRUE yes
8 sunny mild high FALSE no
9 sunny cool normal FALSE yes
10 rainy mild normal FALSE yes
11 sunny mild normal TRUE yes
12 overcast mild high TRUE yes
13 overcast hot normal FALSE yes
14 rainy mild high TRUE no

下面将分别介绍使用ID3和C4.5算法构建决策树。

2.2.1 使用ID3算法构建决策树

ID3算法是使用信息增益来选择特征的。

2.2.1.1 信息增益的计算方法

信息增益的计算方法如下:
1、计算数据集D的经验熵

其中|D|是数据集中所有样本个数,k是目标变量的类别数,|Ck |是该分类下的样本个数。
2、遍历所有特征,对于特征A:
计算特征A对数据集D的经验条件熵H(D|A)
计算特征A的信息增益g(D,A)=H(D)-H(D|A)
选择信息增益最大的特征作为当前分裂特征。

2.2.1.2 计算是否打球的经验熵

在本例子中,目标变量D就是play是否打球,即yes打球和no不打球。|D|=14。K就是目标变量play是否打球的分类数,有两类yes打球和no不打球。yes打球这个分类下有9个样本,而no不打球这个分类下有5个样本,
所以信息熵H(D)=H(play)=-((9/14)*log(9/14)+(5/14)*log(5/14))= 0.651756561173
注意本文中log(x)均按照以e为底的。

2.2.1.3 计算outlook天气特征的信息增益

计算outlook天气特征对数据集D的经验条件熵为:

其中|D|是数据集中所有样本个数,j是当前特征的不同取值个数, |Dj|是第j个取值的样本个数, H(Dj)是该取值的样本的基于目标变量的信息熵。

具体计算如下:
特征A(天气)有三个不同的取值{sunny、overcast、rainy},即v=3,根据特征A(天气)的取值,将数据集D划分为三个子集:
其中sunny的子集中有5个样本,2个打球(play=yes),3个不打球(play=no);
Overcast的子集中有4个样本,都为打球(play=yes)
Rainy的子集中有5个样本,3个打球(play=yes),2个不打球(play=no)。
每个子集可以分别计算熵,具体公式如下
H(D|A)=H(play|outlook)=(5/14)sunny熵 + (4/14)*overcast熵+ (5/14)*rainy熵=(5/14)(-(2/5)log(2/5)-(3/5)*log(3/5)) + (4/14)(-(4/4)log(4/4)) + (5/14)(-(3/5)*log(3/5)-(2/5)*log(2/5))= 0.480722619292
所以天气特征的信息增益为:g(D,A)=g(D,outlook)=H(D)-H(D|A)= 0.17103394188

2.2.1.4 计算temperature温度特征的信息增益


http://www.taodudu.cc/news/show-3555897.html

相关文章:

  • 学习决策树
  • 决策树——理论
  • 决策树的剪枝理论
  • 数据结构 - 决策树(分类)
  • 决策树_理论
  • 决策树算法理论基础
  • 决策树理论--Decision tree
  • 1、决策树理论知识详解与sklearn实践
  • 决策树(理论)
  • <机器学习>决策树理论
  • 数据挖掘学习——决策树分类算法理论(包含Iris实战)
  • top命令参数详解(linux top命令的用法详细详解)
  • Linux TOP命令各参数详解
  • linux 中 top 命令参数详解
  • ubuntu top命令参数详解
  • Linux top 命令的参数详解
  • Linux top命令参数详解
  • top命令参数详解_Linux、AIX的top命令各项指标详解(非原创侵删)
  • TOP命令参数详解-(转)
  • Linux 史上最全top命令及参数详解
  • linux的top命令参数详解
  • TOP命令参数详解
  • 图解JVM内存结构
  • JVM:JVM内存结构、内存溢出及简单排查思路
  • JVM内存结构图解
  • Java架构学习(十二)java内存结构新生代老年代JVM参数调优堆内存参数配置解决堆栈溢出
  • 【OWIN】ASP.NET
  • C# Owin快速搭建网站(免IIS),一个.exe文件即是一个服务器
  • OWIN初探
  • 初步了解Owin

决策树算法及Python实现相关推荐

  1. 决策树算法及Python 代码示例

    决策树是一种基于树形结构的算法,用于在一系列决策和结果之间建立模型.它通过对特征和目标变量之间的关系进行划分,来预测目标变量的值. 决策树算法示例: 假设我们有一组数据,其中包含天气,温度,湿度和是否 ...

  2. python决策树算法_决策树算法及python实现

    决策树算法是机器学习中的经典算法 1.决策树(decision tree) 决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别. 假设小明去看 ...

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

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

  4. 机器学习笔记(4)——ID3决策树算法及其Python实现

    决策树是一种基于树结构来进行决策的分类算法,我们希望从给定的训练数据集学得一个模型(即决策树),用该模型对新样本分类.决策树可以非常直观展现分类的过程和结果,一旦模型构建成功,对新样本的分类效率也相当 ...

  5. python决策树算法代码_决策树算法的Python实例

    1.部分代码实现 import numpy as np from sklearn import datasets from math import log from collections impor ...

  6. 是否打球的决策树算法(python 文件读取,决策树,误差计算)

    一.数据集 PlayTennis.txt 利用打网球数据集PlayTenis构建决策树,该数据集的特性如下:     属性包括天气(outlook).温度(temperature).湿度(humidi ...

  7. Python中应用决策树算法预测客户等级

    ​机器学习越来越多地在企业应用,本文跟大家分享一个采用python,应用决策树算法对跨国食品超市顾客等级进行预测的具体案例.如果想先行了解决策树算法原理,可以阅读文章决策树-ID3算法和C4.5算法. ...

  8. 机器学习——决策树算法

    文章目录 一.决策树介绍 二.利用信息增益选择最优划分属性 三.ID3代码实现 1.jupyter下python实现 2. 使用sklearn实现ID3 四.C4.5算法实现 五.CART算法实现 六 ...

  9. 【机器学习入门】(5) 决策树算法实战:sklearn实现决策树,实例应用(沉船幸存者预测)附python完整代码及数据集

    各位同学好,今天和大家分享一下python机器学习中的决策树算法,在上一节中我介绍了决策树算法的基本原理,这一节,我将通过实例应用带大家进一步认识这个算法.文末有完整代码和数据集,需要的自取.那我们开 ...

最新文章

  1. 用ajax写以随机数验证码,关于前端ajax请求url为何添加一个随机数
  2. OpenGL设置透视投影并渲染旋转的立方体
  3. [一天一个小知识]instanceof
  4. 类加载器-双亲委派-源码分析2
  5. el-input 输入框类型;只能输入数字的输入框;保留两位小数输入框;只能输入正整数和0的输入框;手机号正则校验;车牌号码正则校验
  6. python学习实例(3)
  7. (20)FPGA面试技能提升篇(SGMII、LOCALBUS)
  8. 它们才是真正的数学家 寻找自然界中的数学
  9. mockito模拟依赖注入_Mockito @InjectMocks –模拟依赖注入
  10. 2021年危险化学品经营单位安全管理人员考试总结及危险化学品经营单位安全管理人员作业考试题库
  11. 【Python计量】RESET模型设定偏误检验
  12. 【观察】西部数据:再定义分层存储架构,赋能数据中心新基建
  13. C | 运算符、表达式和语句
  14. 使用linux集体升级系统,1.3. 利用mtd工具升级Linux系统
  15. IMSI号和IMEI解释
  16. 时间的加减法怎么用计算机算,时间加减计算器
  17. 海康智能分析服务器设置,【胖猴小玩闹】智能门锁与网关: 海康萤石智能门锁的网关分析(三)...
  18. idea 创建spark项目
  19. 哈工大近世代数定义、定理、推论汇总
  20. 崔云php_崔云恒新书《我的家乡我的亲》将出版

热门文章

  1. 在虚拟机上安装Ubuntu系统(详细附图)
  2. AI是否能取代设计师?这是个问题
  3. 局域网虚拟机服务器搭建
  4. InventorCAM 2021 SP2 for Autodesk Inventor 2018-2021 x64
  5. SolidCAM / InventorCAM 2021 SP2 HF1
  6. Werkzeug 教程
  7. Windows环境下执行hadoop命令出现系统找不到指定路径Error
  8. 阿里云服务器配置与使用入门(windows版)
  9. Excel函数基础(三)函数
  10. 优秀设计师是如何炼成的,看搜狐如何做设计