决策树算法是非常常用的分类算法,其分类的思路非常清晰,简单易懂。并且它也是一个很基础的算法,集成学习和随机森林算法是以其为基础的。

算法简介

对于决策树算法,其输入是带有标签的数据,输出是一颗决策树。其非叶节点代表的是逻辑判断;叶节点代表的是分类的子集。

决策树算法原理是通过训练数据形成if-then的判断结构。从树的根节点到叶节点的每一条路径构成一个判断规则。我们需要选择合适的特征作为判断节点,可以快速的分类,减少决策树的深度。最理想的情况是,通过特征的选择把不同类别的数据集贴上对应类标签,树的叶子节点代表一个集合,集合中数据类别差异越小,其数据纯度越高。

在决策树中,目前比较常用的有ID3算法,C4.5算法和Cart算法。不同算法的区别在于选择特征作为判断节点时的数据纯度函数(标准)不同。本文主要介绍决策树中的ID3算法。

C4.5算法:https://blog.csdn.net/weixin_43216017/article/details/87609780
CART算法:https://blog.csdn.net/weixin_43216017/article/details/87617727
决策树的剪枝:https://blog.csdn.net/weixin_43216017/article/details/87534496

信息增益

ID3算法使用的数据特征函数(标准)为信息增益。

首先,我们介绍一下熵的概念,熵表示的是不确定度,熵越大,不确定度就越大。假设在数据D中有kkk个类别,其中第iii个类别数据在总数据中占有率为pip_ipi​,则熵的计算公式为:info(D)=−∑i=1kpilog2(pi)info(D) = - \sum_{i=1}^{k}p_ilog_2(p_i)info(D)=−i=1∑k​pi​log2​(pi​)

当我们使用某一特征A对数据分类后,其不确定度会减小(因为数据数据有所划分)。此时的熵也会减小,假设特征A有m个类别,其计算公式为:
infoA(D)=−∑j=1m∣Dj∣∣D∣×info(Dj)info_A(D) = - \sum_{j=1}^{m}\dfrac{|D_j|}{|D|}×info(D_j)infoA​(D)=−j=1∑m​∣D∣∣Dj​∣​×info(Dj​)

那么分类前后熵减小的差值就是信息增益。
Gain(A)=info(D)−infoA(D)Gain(A) = info(D) - info_A(D)Gain(A)=info(D)−infoA​(D)

我们一一计算所有变量的信息增益,选择信息增益最大的那个变量作为此分类节点。

数据简介

为了详细介绍如何用ID3算法生成一颗树,我们设定一组贷款数据如下:

我们将通过年龄、是否有工作、是否有房子和信贷情况四个自变量来区分贷款的审批结果。

计算过程

第一层

总体信息熵:
info(D)=−915log2(915)−615log2(615)=0.9710info(D) = -\dfrac{9}{15}log_2(\dfrac{9}{15})-\dfrac{6}{15}log_2(\dfrac{6}{15}) = 0.9710info(D)=−159​log2​(159​)−156​log2​(156​)=0.9710

计算年龄A1的信息熵:
info(D∣A1=老年)=−45log2(45)−15log2(15)=0.7219info(D|A1 = 老年) = -\dfrac{4}{5}log_2(\dfrac{4}{5})-\dfrac{1}{5}log_2(\dfrac{1}{5}) = 0.7219info(D∣A1=老年)=−54​log2​(54​)−51​log2​(51​)=0.7219
info(D∣A1=中年)=−35log2(35)−25log2(25)=0.9710info(D|A1 = 中年) = -\dfrac{3}{5}log_2(\dfrac{3}{5})-\dfrac{2}{5}log_2(\dfrac{2}{5}) = 0.9710info(D∣A1=中年)=−53​log2​(53​)−52​log2​(52​)=0.9710
info(D∣A1=青年)=−25log2(25)−35log2(35)=0.9710info(D|A1 = 青年) = -\dfrac{2}{5}log_2(\dfrac{2}{5})-\dfrac{3}{5}log_2(\dfrac{3}{5}) = 0.9710info(D∣A1=青年)=−52​log2​(52​)−53​log2​(53​)=0.9710
info(D∣A1)=13×0.7219+13×0.9710+13×0.9710=0.8880info(D|A1) = \dfrac{1}{3}×0.7219+\dfrac{1}{3}×0.9710+\dfrac{1}{3}×0.9710=0.8880info(D∣A1)=31​×0.7219+31​×0.9710+31​×0.9710=0.8880
则A1的信息增益为:Gain(A1)=0.9710−0.8880=0.083Gain(A1)=0.9710 - 0.8880 = 0.083 Gain(A1)=0.9710−0.8880=0.083

按照此方法,

Gain(A2)=0.324Gain(A2) = 0.324Gain(A2)=0.324 ;
Gain(A3)=0.420Gain(A3) = 0.420Gain(A3)=0.420 ;
Gain(A4)=0.363Gain(A4) = 0.363Gain(A4)=0.363

由此可见,我们将使用变量A3:是否有房子来作为第一分类特征。

第二层

A3 = “是"时数据如下:

发现他们的贷款审批结果都是"是”,其熵等于0,可以作为叶节点。

A3 = "否"时数据如下:


此时的总体信息熵:info(DA3)=0.9183info(DA3) = 0.9183info(DA3)=0.9183

Gain(A1)=0.2516Gain(A1) = 0.2516Gain(A1)=0.2516 ;
Gain(A2)=0.9183Gain(A2) = 0.9183Gain(A2)=0.9183 ;

至此不需要在计算Gain(A4)Gain(A4)Gain(A4)了,因为A2已经将数据完全划分开了。

在本数据集中,A1和A4对于数据的划分没有作用。

所得树图:

在树图中,(1/2/8/9/10/14)(3/4/13)(5/6/7/11/12/15)是三个叶节点,代表了三个分类好的子集;其他非叶节点表示的是逻辑判断。

一般而言,我们都需要对树进行剪枝。因为我们划分枝叶的根据是熵增,只要有熵增就需要分枝,这样会很有可能造成过拟合的情况。我们将在下一篇中介绍树的剪枝。

ID3的缺点

ID3算法的缺点在于:用信息增益选择属性时偏向于选择分枝比较多的属性值,即取值多的属性。

所以,我们使用信息增益比来代替信息增益,以削弱这种情况。此算法也即是C4.5算法。

分类算法 -- 决策树ID3算法相关推荐

  1. 机器学习算法—决策树(ID3)算法

    机器学习--决策树(ID3)算法 1.决策树(ID3)算法 1.1 算法引入 我们首先以一个分类问题开始,假设我们有这样一份样本数据: 我们的目标是想通过色泽.根蒂.敲声.纹理.脐部.触感来判断这是不 ...

  2. 数据挖掘-经典算法-决策树ID3算法实现

    from math import log import operatordef calcShannonent(dataSet): #计算数据的熵(entropy)numEntries = len(da ...

  3. 决策树ID3算法[分类算法]

    ID3分类算法的编码实现 1 <?php 2 /* 3 *决策树ID3算法(分类算法的实现) 4 */ 5 6 7 8 /* 9 10 *求信息增益Grain(S1,S2) 11 12 */ 1 ...

  4. id3决策树_信息熵、信息增益和决策树(ID3算法)

    决策树算法: 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关的特征数据. 缺点:可能会产生过度匹配问题. 适用数据类型:数值型和标称型. 算法原理: 决策树是一个简单的为 ...

  5. 决策树---ID3算法

    决策树---ID3算法   决策树: 以天气数据库的训练数据为例. Outlook Temperature Humidity Windy PlayGolf? sunny 85 85 FALSE no ...

  6. 【Machine Learning in Action --3】决策树ID3算法

    1.简单概念描述 决策树的类型有很多,有CART.ID3和C4.5等,其中CART是基于基尼不纯度(Gini)的,这里不做详解,而ID3和C4.5都是基于信息熵的,它们两个得到的结果都是一样的,本次定 ...

  7. python决策树id3算法_python实现决策树ID3算法

    一.决策树概论 决策树是根据训练数据集,按属性跟类型,构建一棵树形结构.可以按照这棵树的结构,对测试数据进行分类.同时决策树也可以用来处理预测问题(回归). 二.决策树ID3的原理 有多种类型的决策树 ...

  8. 数据挖掘--决策树ID3算法(例题)

    决策树分类算法 决策树分类算法通常分为两个步骤:决策树生成和决策树修剪. 决策树生成算法的输入参数是一组带有类别标记的样本,输出是构造一颗决策树,该树可以是一棵二叉树或多叉树.二叉树的内部结点(非叶子 ...

  9. 【机器学习】决策树-ID3算法

    1.ID3算法 ID3算法利用信息增益进行特征的选择进行树的构建.信息熵的取值范围为0~1,值越大,越不纯,相反值越小,代表集合纯度越高.信息增益反映的是给定条件后不确定性减少的程度.每一次对决策树进 ...

  10. 决策树ID3算法手动实现

    1. ID3算法 决策树中每一个非叶结点对应着一个非类别属性,树枝代表这个属性的值.一个叶结点代表从树根到叶结点之间的路径对应的记录所属的类别属性值. 每一个非叶结点都将与属性中具有最大信息量的非类别 ...

最新文章

  1. linux每日命令(31):tar命令
  2. python list去重_Python中实用却不常见的小技巧
  3. python中递归函数基例_智慧树python答案
  4. python sendto(右键发送文件到执行的bat)功能的实现
  5. Header First设计模式学习笔记——单例模式
  6. SOS Dynamic Programming
  7. 【C/C++】文件操作实例——学生信息管理
  8. 如何自己动手免费申请软件著作权
  9. HTML Table导出EXCEL(支持大量数据,保留报表格式)
  10. STM32名字含义以及其与ARM公司的关系
  11. 苹果MacBook 装双系统win10蓝牙找不到的方法
  12. 自学量化投资之旅-学习第一个策略EMV指标
  13. STKMATLAB connect(四)卫星
  14. Linux之4G模块串口通信
  15. 【嵌入式07】寄存器映射原理详解,GPIO端口的初始化设置步骤
  16. [多图]非线性格兰杰因果检验,eveiws详细实现步骤
  17. Java 独门绝技 用Java玩谷歌小恐龙游戏 (有源码)
  18. 教你几招如何看透一个人一件事!
  19. 连云港市电子证书查询系统 html,连云港市教育局
  20. Lua的string库函数列表

热门文章

  1. 文件分割方式 模仿hadoop手写一个工作原理 模仿hadoop filesplit任意切片
  2. Java实现简易版金山打字
  3. c# JSON转变量实例
  4. sqliteman安装错误
  5. 服务器搬迁方案_服务器搬迁方案规定搬迁之前也需要大扫除
  6. 恶意软件、反病毒网关简析
  7. 数字媒体概论——视频
  8. 正则表达式校验手机号
  9. web前端开发面试题(五)
  10. appium java模拟微信登录,使用Appium 测试微信小程序和微信公众号方法