决策树原理及实现

1、决策树原理

1.1、定义 
分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点和有向边组成。结点有两种类型:内部节点和叶节点,内部节点表示一个特征或属性,叶节点表示一个类。

举一个通俗的栗子,各位立志于脱单的单身男女在找对象的时候就已经完完全全使用了决策树的思想。假设一位母亲在给女儿介绍对象时,有这么一段对话:

母亲:给你介绍个对象。
女儿:年纪多大了?
母亲:26。
女儿:长的帅不帅?
母亲:挺帅的。
女儿:收入高不?
母亲:不算很高,中等情况。
女儿:是公务员不?
母亲:是,在税务局上班呢。
女儿:那好,我去见见。

这个女生的决策过程就是典型的分类决策树。相当于对年龄、外貌、收入和是否公务员等特征将男人分为两个类别:见或者不见。假设这个女生的决策逻辑如下:

每种决策树之所以不同,一般是由于最有特征的选择上有所差异,不同决策导致不同的决策树。

基于信息论的决策树算法有ID3、CART和C4.5等算法,其中C4.5和CART两种算法从ID3算法中衍生而来。

ID3  最有特征选择标准是信息增益 ;   C4.5  信息增益率 ;  CART  节点方差的大小

1.2、ID3算法的数学原理

  关于决策树的信息论基础可以参考“决策树1-建模过程”

(1)信息熵

  信息熵:在概率论中,信息熵给了我们一种度量不确定性的方式,是用来衡量随机变量不确定性的,熵就是信息的期望值。若待分类的事物可能划分在N类中,分别是x1,x2,……,xn,每一种取到的概率分别是P1,P2,……,Pn,那么X的熵就定义为:

,从定义中可知:0≤H(X)≤log(n)

  当随机变量只取两个值时,即X的分布为 P(X=1)=p,X(X=0)=1?p,0≤p≤1则熵为:H(X)=?plog2(p)?(1?p)log2(1?p)。

熵值越高,则数据混合的种类越高,其蕴含的含义是一个变量可能的变化越多(反而跟变量具体的取值没有任何关系,只和值的种类多少以及发生概率有关),它携带的信息量就越大。熵在信息论中是一个非常重要的概念,很多机器学习的算法都会利用到这个概念。

(2)条件熵

  假设有随机变量(X,Y),其联合概率分布为:P(X=xi,Y=yi)=pij,i=1,2,?,n;j=1,2,?,m

  则条件熵(H(Y∣X))表示在已知随机变量X的条件下随机变量Y的不确定性,其定义为X在给定条件下Y的条件概率分布的熵对X的数学期望:

(3)信息增益

  信息增益(information gain)表示得知特征X的信息后,而使得Y的不确定性减少的程度。定义为:

应用举例

时间: 2024-08-01 16:41:37

决策树原理及实现的相关文章

决策树原理图表详解

决策树的原理,一个图表就很清楚了,首先,还是要牢记,条件熵是一种最优路径,是概率图模型中,两个随机变量之间的最优条件路径.也就是所有路径熵的期望. H(Y|X) = -sigmaP(X,Y)logP(Y|X) = -sigmaP(X=xi)P(Y|X=xi)logP(Y|X=xi)=-sigmaP(X=xi)H(Y|X=xi) 好了,废话少说,下图是决策树原理 特征A D1 D2 D3 Di A1 D11 D21 D23   A2 D12 D22 D32   A3 D13 D23 D33   A

【Python数据挖掘课程】四.决策树DTC数据分析及鸢尾数据集分析

今天主要讲述的内容是关于决策树的知识,主要包括以下内容:        1.分类及决策树算法介绍        2.鸢尾花卉数据集介绍        3.决策树实现鸢尾数据集分析        前文推荐:       [Python数据挖掘课程]一.安装Python及爬虫入门介绍       [Python数据挖掘课程]二.Kmeans聚类数据分析及Anaconda介绍       [Python数据挖掘课程]三.Kmeans聚类代码实现.作业及优化        希望这篇文章对你有所帮助,尤其

3.机器学习实战之决策树

返回目录 上一篇:k-近邻算法 1. 简单理论介绍 决策树的类型有很多,有CART.ID3和C4.5等,其中CART是基于基尼不纯度(Gini)的,这里不做详解,而ID3和C4.5都是基于信息熵的,它们两个得到的结果都是一样的,本次定义主要针对ID3算法.下面我们介绍信息熵的定义. 1.1 熵 设D为用类别对训练集进行的划分,则D的熵(entropy)表示为: 其中m表示训练集中标签种类的个数:pi表示第i个类别在整个训练集中出现的概率,可以用属于此类别元素的数量除以训练集合元素总数量作为估计:

机器学习实战之第三章 决策树(Decision Tree)

第3章 决策树 <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script> 决策树 概述 决策树(Decision Tree)算法主要用来处理分类问题,是最经常使用的数据挖掘算法之一. 决策树 场景 一个叫做 "二十个问题" 的游戏,游戏的规则很简单:参与游戏的一

机器学习实战--决策树

决策树概述 决策树利用分层的概念将一个复杂的决策问题分解为多个简单的判断问题,最后逐级得到最大支持度的决策结果. 决策树 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据 缺点:可能产生过度匹配问题 适用数据类型:数值型和标称型 决策树算法原理 决策树概念比较简单,用一个男女相亲的例子来描述决策树原理如下: 示例:使用决策树实现分类器 1. 决策树的构造 在构造决策树时,我们需要解决的第一个问题就是,当前数据集上哪个特征在划分数据分类时起决定性作用. (1)信

机器学习经典算法详解及Python实现--CART分类决策树、回归树和模型树

摘要: Classification And Regression Tree(CART)是一种很重要的机器学习算法,既可以用于创建分类树(Classification Tree),也可以用于创建回归树(Regression Tree),本文介绍了CART用于离散标签分类决策和连续特征回归时的原理.决策树创建过程分析了信息混乱度度量Gini指数.连续和离散特征的特殊处理.连续和离散特征共存时函数的特殊处理和后剪枝:用于回归时则介绍了回归树和模型树的原理.适用场景和创建过程.个人认为,回归树和模型树

决策树应用(一)

上一篇讲了ID3决策树原理,现在开始拿一个例子进行实战 一.python机器学习库 scikit-learn.sklearn是一个Python第三方提供的非常强力的机器学习库,它包含了从数据预处理到训练模型的各个方面.在实战使用scikit-learn中可以极大的节省我们编写代码的时间以及减少我们的代码量,使我们有更多的精力去分析数据分布,调整模型和修改超参.sklearn基本包含了所有机器学习的方式,如 Classification 分类,如SVM Regression 回归 ,如LR Clu

梯度提升树(GBDT)原理小结

在集成学习之Adaboost算法原理小结中,我们对Boosting家族的Adaboost算法做了总结,本文就对Boosting家族中另一个重要的算法梯度提升树(Gradient Boosting Decison Tree, 以下简称GBDT)做一个总结.GBDT有很多简称,有GBT(Gradient Boosting Tree),?GTB(Gradient Tree Boosting?),?GBRT(Gradient Boosting Regression Tree), MART(Multipl

机器学习系列(9)_机器学习算法一览(附Python和R代码)

本文资源翻译@酒酒Angie:伊利诺伊大学香槟分校统计学同学,大四在读,即将开始计算机的研究生学习.希望认识更多喜欢大数据和机器学习的朋友,互相交流学习. 内容校正调整:寒小阳 && 龙心尘 时间:2016年4月 出处:http://blog.csdn.net/han_xiaoyang/article/details/51191386 http://blog.csdn.net/longxinchen_ml/article/details/51192086 声明:版权所有,转载请联系作者并注