决策树学习(ID3)

  • 参考:《机器学习实战》

  • 优点:计算复杂度不高, 输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特

  • 征数据。

  • 缺点:可能会产生过度匹配问题。

  • 适用数据类型:数值型和标称型。



  • 创建分支的伪代码(createBranch):

图1

1、信息熵:

    • 图1中划分数据集的原则是:将无序的数据变得有序。在划分数据集之前之后信息发生的变化称为信息增益,划分数据集获得的信息增益最高的特征就是最好的选择。(书中对为什么用最大信息熵作为度量的原因并作解释)。

    • 信息的定义:

    • 熵:           

    • 在Python中对数据集的某个特征求熵比较容易:首先用字典统计该特征所有出现的值,然后可以求出对应的概率,然后由熵公式便可求出熵。

2、数据集的划分

      • 选择最好的数据集划分方式:对数据集的每个特征求信息熵,熵取最大的特征即为在按该特征划分数据时最好。

3、创建树:

    • 创建树的停止条件:子集长度达到最小值1或者只有一个特征了。在Python中可以用字典来保存树。创建过程:


    • 代码细节:


    • 所有分类得到的各个子集,按照分类时特征的值存入一个字典中,而该字典的父字典又是不同子集划分的结果。这样一层层嵌套形成一个决策字典树。在上面字典树创立过程中要注意的一点是,每多分一级字典,在数据子集中就要将上一级字典的标签删除,以免下级字典建立过程中重复划分。同时还要注意程序中:subLabels=labels[:],这一语句的作用是复制labels的剩余部分。之所以这样,是因为labels为列表,在python中列表是引用的数据类型,对其值在子函数中进行改变,则所有的labels都将会改变,而且即使用形如subLabels=labels的方式,在子函数中改变subLabels时,labels也会跟着改变。

4、绘制树图

    • 使用matplotlib提供的注解功能画树图。


    • #-*- coding:cp936 -*-
      #===============================================================================
      # 使用文本注解绘制树节点
      #===============================================================================
      import matplotlib.pyplot as plt
      decisionNode = dict(boxstyle = ‘sawtooth‘, fc = ‘0.8‘)
      leafNode = dict(boxstyle = ‘round4‘, fc = ‘0.8‘)
      arrow_args = dict(arrowstyle = ‘<-‘)

      def plotNode(nodeTxt, centerPt, parentPt, nodeType):
      createPlot.ax1.annotate(nodeTxt, xy = parentPt, xycoords = ‘axes fraction‘, xytext = centerPt, ha = ‘center‘, bbox = nodeType, arrowprops = arrow_args)
      def createPlot():
      fig = plt.figure(1, facecolor=‘white‘)
      fig.clf()
      createPlot.ax1 = plt.subplot(111, frameon = False)
      plotNode(‘a decision node‘, (0.5,0.1), (0.1,0.5), decisionNode)
      plotNode(‘a leaf node‘, (0.8,0.1), (0.3,0.8), leafNode)
      plt.show()
      createPlot()


    • 上面的代码得到的注释图:

5、使用决策树执行分类

    • 递归地比较测试数据各特征与决策树上的数值,直到进入叶子节点,最后将测试数据定义为叶子节点所属类型。

决策树学习(ID3),布布扣,bubuko.com

时间: 2024-11-02 23:30:16

决策树学习(ID3)的相关文章

从决策树学习谈到贝叶斯分类算法、EM、HMM

从决策树学习谈到贝叶斯分类算法.EM.HMM 引言 近期在面试中,除了基础 &  算法 & 项目之外,经常被问到或被要求介绍和描写叙述下自己所知道的几种分类或聚类算法(当然,这全然不代表你将来的面试中会遇到此类问题,仅仅是由于我的简历上写了句:熟悉常见的聚类 & 分类算法而已),而我向来恨对一个东西仅仅知其皮毛而不得深入,故写一个有关数据挖掘十大算法的系列文章以作为自己备试之用,甚至以备将来经常回想思考.行文杂乱,但侥幸若能对读者起到一点帮助,则幸甚至哉. 本文借鉴和參考了两本书,

决策树学习基决策树学习基本算法

决策树学习基本算法 输入:训练集; ???? 属性集. 过程:函数 1: 生成结点node; 2: if 中样本全属于同一类别 then 3: ????将node标记为类叶结点; return 4: end if 5: if 中样本在上取值相同 then 6: 将node标记为叶结点,其类别标记为中样本数最多的类; return 7: end if 8: 从中选择最优化分属性 9: for 的每一个值 do 10: 为node生成一个分支; 令表示中在上取值为的样本子集; 11:???? if

机器学习二 -- 决策树学习

决策树学习 从今天开始,坚持每天学习一个机器学习的新知识,加油! 决策树学习是应用最广的归纳推理算法之一,是一种逼近离散值目标函数的方法,在这种方法中学习到的函数被表示为一颗决策树. 决策树表示法 决策树通过把实例从根结点排列到某个叶子结点来分类实例,叶子结点即为实例所属的分类.树上的每一个结点指定了对实例的某个属性的测试,并且该结点的每一个后继分支对应于该属性的一个可能值.分类实例的方法是从这棵树的根节点开始,册数这个结点指定的属性,然后按照给定实例的该属性对应的树枝向下移动,然后这个过程再以

《机器学习》第三章 决策树学习 笔记加总结

<机器学习>第三章 决策树学习 决策树学习方法搜索一个完整表示的假设空间,从而避免了受限假设空间的不足.决策树学习的归纳偏置是优越选择较小的树. 3.1.简介 决策树学习是一种逼近离散值目标函数的方法,在这种方法中学习到的函数被表示为一棵决策树. 决策树(Decision Tree)是一种简单但是广泛使用的分类器.通过训练数据构建决策树,可以高效的对未知的数据进行分类. 决策数有两大优点: 1)决策树模型可以读性好,具有描述性,有助于人工分析: 2)效率高,决策树只需要一次构建,反复使用,每一

从决策树学习谈到贝叶斯分类算法、EM、HMM --别人的,拷来看看

从决策树学习谈到贝叶斯分类算法.EM.HMM 引言 最近在面试中,除了基础 &  算法 & 项目之外,经常被问到或被要求介绍和描述下自己所知道的几种分类或聚类算法(当然,这完全不代表你将来的面试中会遇到此类问题,只是因为我的简历上写了句:熟悉常见的聚类 & 分类算法而已),而我向来恨对一个东西只知其皮毛而不得深入,故写一个有关数据挖掘十大算法的系列文章以作为自己备试之用,甚至以备将来常常回顾思考.行文杂乱,但侥幸若能对读者起到一点帮助,则幸甚至哉. 本文借鉴和参考了两本书,一本是T

决策树学习笔记(Decision Tree)

什么是决策树? 决策树是一种基本的分类与回归方法.其主要有点事模型具有可得性,分类速度快.学习时,利用训练数据,根据损失函数最小化原则建立决策树模型:预测时,对新数据,利用决策树模型进行分类. 决策树学习通常包含以下三个步骤: 选择特征 决策树生成 剪枝 决策树的改进路线: ID3--->C4.5--->CART (1)其中ID3是基于信息增益来选择划分属性 (2)C4.5不直接使用增益率来选择划分属性,而是使用了一个启发式:先从候选划分属性中选取信息增益高于平局水平的属性,再从中选择增益率最

决策树之ID3算法

一.决策树之ID3算法简述 1976年-1986年,J.R.Quinlan给出ID3算法原型并进行了总结,确定了决策树学习的理论.这可以看做是决策树算法的起点.1993,Quinlan将ID3算法改进成C4.5算法,称为机器学习的十大算法之一.ID3算法的另一个分支是CART(Classification adn Regression Tree, 分类回归决策树),用于预测.这样,决策树理论完全覆盖了机器学习中的分类和回归两个领域. 本文只做了ID3算法的回顾,所选数据的字段全部是有序多分类的分

决策树学习

在学习决策树学习之前,我想先问问几个问题,以便好好梳理思路. 1. 决策树是什么?干啥用的?决策树学习又是什么? 2. 信息增益,纯度,熵是什么?在决策树中是干啥用的? 3. 构建一个决策树包含哪几个步骤?如何构建? 回答: 1. 决策树是一棵用来进行决策的树(哈哈,有点在说废话的赶脚).一旦决策树生成,往里面送入未知的数,都可以推测出结论来,所以他的作用是用来进行分类或推测的.决策树学习就是这棵决策树的学习过程,即他的构造过程.这里详细的解释一下这棵树.这棵树和普通的数据结构里面的树不一样,决

[转载]简单易学的机器学习算法-决策树之ID3算的

一.决策树分类算法概述 决策树算法是从数据的属性(或者特征)出发,以属性作为基础,划分不同的类.例如对于如下数据集 (数据集) 其中,第一列和第二列为属性(特征),最后一列为类别标签,1表示是,0表示否.决策树算法的思想是基于属性对数据分类,对于以上的数据我们可以得到以下的决策树模型 (决策树模型) 先是根据第一个属性将一部份数据区分开,再根据第二个属性将剩余的区分开. 实现决策树的算法有很多种,有ID3.C4.5和CART等算法.下面我们介绍ID3算法. 二.ID3算法的概述 ID3算法是由Q