机器学习——决策树

1、介绍

决策树是一种依托决策而建立起来的一种树。在机器学习中,决策树是一种预测模型,代表的是一种对象属性与对象值之间的一种映射关系,每一个节点代表某个对象/分类,树中的每一个分叉路径代表某个可能的属性值,而每一个叶子节点则对应从根节点到该叶子节点所经历的路径所表示的对象的值

输入:一组对象属性

输出:对象值(分类算法中得到某个类别)

决策树中间计算过程: 统计学习方法中根据下表贷款数据表生成的决策树如下,当给定一个人的特征属性之后就能判断能不能给他贷款。

2、特征选择

看到上面的第一张决策树的图后,心中会产生一个疑问,为什么将“有自己的房子”作为根节点?为什么有自己的房子分类结果就是“是”?如何选定下一个节点?…..

2.1  熵与条件熵、经验熵与检验条件熵

熵H(X):表示随机变量不确定性的度量,如果一个变量的随机性越大(不确定性),则它的熵越大。

计算公式:

条件熵H(Y|X):表示在已知随机变量X的条件下随机变量Y的不确定性。例如“有自己房子”条件下“贷款”的熵。

当熵和条件熵中的概率是由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称为经验熵和经验条件熵。

2.2 信息增益与信息增益比

信息增益:表示得知特征的信息使得类Y的信息的不确定性减少程度。

特征A对训练数据集D的信息增益g(D,A):集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差。

假设数据D可以分为K个类(对应介绍中 贷款“是”,“否”),特征A(“有自己的房子”)有n个不同的取值(“有”,“无”)。

H(D): 对数据集D进行分类的不确定性。

H(D|A): 在特定A给定条件下对数据集D进行分类的不确定性。

它们的计算公式如下(统计学习方法中的解析)

既然已经有了信息增益为什么还要引入“信息增益比”呢?

在以信息增益划分到底采用那个特征时,存在偏向于选取值较多的特征的问题,所以这里引入的增益比相当于归一化,使各个特曾的影响因子归一化。

其中:

2.3 决策树的生成——ID3 算法

当理解了上面信息熵和条件熵的概念后,ID3算法就很容易理解了。该算法解决的主要问题是:如何生成一个决策树?

输入:训练数据集D,特征集A,阈值e

输出: 决策树 T

ID3算法的核心是在决策树各个子节点上应用信息增益准则选择特征,递归的构建决策树,具体方法是:从根节点开始,对节点计算所有可能的特征的信息增益,选择信息增益最大的特征作为节点的特征,由该特征的不同取值建立子节点;再对子节点递归调用以上方法,构建决策树。直到所有特征的信息增益均很小或没有特征可以选择为止。最后得到一个决策树。

这其中会遇到一些问题:

1、若D中所有的实例属于用一类C(k),则T为单节点数,并将类C(k)作为该节点的类标记

2、若A = null,则T为单节点树,并将D中实例数最大的类C(k)作为该节点的类标记。

3、如果A(g)的信息增益比小于阈值e,则置T为单节点树,并将D中实例数最大的类作为该节点的类标记。

4、随着树的向下生长,特征集也会逐渐减少(A-A(g)),父节点中出现的特征将会排除在特征选取中。

与ID3算法类似的算法 C4.5算法,与ID3唯一的不同是 它选取信息增益比作为特征选择的标准,这样可以减少过拟合。而ID3采用信息增益作为特征选择的标准。

创建决策树的伪代码(createBranch函数):

  1 检测数据中的每个子项是否属于同一个分类
  2 	if so return 类标签
  3 	else
  4 		寻找划分数据集的最好特征
  5 		划分数据集
  6 		创建分支节点
  7 			for 每个划分的子集
  8 				调用 createBranch并增加返回结果到分支节点中
  9 		return 分支节点

3. 决策树的减枝

通过决策树算法生成的决策树往往对训练数据的分类很精确,但对未知的测试数据的分类却没有那么准确,即出现过拟合现象。

在决策树学习中将已生成的树进行简化的过程称为剪枝。

决策树的剪枝往往通过极小化决策树整体的损失函数/代价函数来实现。 当剪枝后决策树的损失值小于剪枝前损失函数值,那么该分支将会被剪掉。(从叶节点自下而上遍历决策树的每个节点,确定是否需要进行剪枝)

决策树的损失函数:

《统计学习方法》中给出了损失函数的公式:

4. python 实现

后续待补充

参考:

《统计学习方法》

《机器学习实战》

http://blog.csdn.net/jialeheyeshu/article/details/51832165

https://www.cnblogs.com/starfire86/p/5749328.html

原文地址:https://www.cnblogs.com/NeilZhang/p/8504921.html

时间: 2024-10-11 01:07:09

机器学习——决策树的相关文章

机器学习-决策树的基本思想

机器学习-决策树的基本思想 决策树算法是最早的机器学习算法之一. 算法框架 1.决策树主函数 各种决策树的主函数都大同小异,本质上是一个递归函数.该函数的主要功能是按照某种规则生长出决策树的各个分支节点,并根据终止条件结束算法.一般来讲,主函数需要完成如下几个功能. (1)输入需要分类的数据集和类别标签 (2)根据某种分类规则得到最优的划分特征,并创建特征的划分节点--计算最优特征子函数 (3)按照该特征的每个取值划分数据集为若干部分--划分数据集子函数 (4)根据划分子函数的计算结果构建出新的

机器学习-决策树实现-python

今天翻自己的书库的时候,才发现了之前买的一本<机器学习导论>.随手翻了翻,就直接看到了之前看到的决策树实现的问题理论. 闲来无事,也就得写点代码来play 一下: 决策树的概念想必大家都十分熟悉,特别想我们小时候玩的跳方格的游戏.或者说我们之前玩的你猜我猜的游戏,猜不对继续猜,总有一天你会猜对额 为了确定从哪一个特征来进行判别,我们需要一个衡量标准来分类. 1…香农熵 2…信息增益 那我们来实现第一个……香农熵 from math import log def calcShannonEnt(d

机器学习-决策树 Decision Tree

咱们正式进入了机器学习的模型的部分,虽然现在最火的的机器学习方面的库是Tensorflow, 但是这里还是先简单介绍一下另一个数据处理方面很火的库叫做sklearn.其实咱们在前面已经介绍了一点点sklearn,主要是在categorical data encoding那一块.其实sklearn在数据建模方面也是非常666的.一般常用的模型都可以用sklearn来做的.既然它都这么牛逼了,咱们为啥还要学TensorFlow呢?其实主要的原因有两个,一是因为Google在流量方面的强势推广,导致绝

机器学习-决策树

一.简介 决策树学习是一种逼近离散值目标函数的方法,在这种方法中学习到的函数被表示为一棵决策树. 二.决策树的表示法 决策树通过把实例从艮节点排列到某个叶子结点来分类实例,叶子结点即为实例所属的分类.树上的每一个结点指定了对实例的某个属性的测试,并且该结点的每一个后继分支对应于该属性的一个可能值.分类实例的方法是从这棵树的根节点开始,测试这个结点的属性,然后按照给定实例的属性值对应的树枝向下移动.然后这个过程在以新结点的根的子树上重复. 决策树对应表达式: 三. 举例 首先计算四个属性的信息增益

机器学习—— 决策树(ID3算法)的分析与实现

KNN算法请参考:http://blog.csdn.net/gamer_gyt/article/details/47418223 一.简介         决策树是一个预测模型:他代表的是对象属性与对象值之间的一种映射关系.树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值.决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出. 数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用

机器学习-决策树最优类别属性选择的三个方法

本文所用符号: \(D\):所有样本,如<西瓜书>中所有的西瓜样本 \(a\):用来划分样本的类别属性,a有V个可取值{\(a^1,a^2 \dots , a^V\)},如若用a表示"色泽",则a的取值是{\(a^1=青绿,a^2=乌黑,a^3=浅白\)},此时\(V=3\) \(D^v\):用a对样本D进行划分后属于\(a^v\)的样本子集 \(|y|\):\(y\)属性可取个数,下文中用y表示模型最终划分的结果集,如西瓜书中的{好瓜,坏瓜} 信息增益 使用信息熵\[En

机器学习——决策树,DecisionTreeClassifier参数详解,决策树可视化查看树结构

0.决策树 决策树是一种树型结构,其中每个内部节结点表示在一个属性上的测试,每一个分支代表一个测试输出,每个叶结点代表一种类别. 决策树学习是以实例为基础的归纳学习 决策树学习采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一棵熵值下降最快的树.到叶子节点的处的熵值为零,此时每个叶结点中的实例都属于同一类. 1.决策树学习算法的特点 决策树算法的最大优点是可以自学习.在学习的过程中,不需要使用者了解过多知识背景,只需要对训练实例进行较好的标注,就能够进行学习了. 在决策树的算法中,建立

【Machine Learn】决策树案例:基于python的商品购买能力预测系统

决策树在商品购买能力预测案例中的算法实现 作者:白宁超 2016年12月24日22:05:42 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结合视频学习和书籍基础的笔记所得.本系列文章将采用理论结合实践方式编写.首先介绍机器学习和深度学习的范畴,然后介绍关于训练集.测试集等介绍.接着分别介绍机器学习常用算法,分别是监督学习之分类(决策树.临近取样.支持向量机.神经网络算法)监督学习之回归(线性回归.非线性回归)非监督学习(

[机器学习]信息&amp;熵&amp;信息增益

关于对信息.熵.信息增益是信息论里的概念,是对数据处理的量化,这几个概念主要是在决策树里用到的概念,因为在利用特征来分类的时候会对特征选取顺序的选择,这几个概念比较抽象,我也花了好长时间去理解(自己认为的理解),废话不多说,接下来开始对这几个概念解释,防止自己忘记的同时,望对其他人有个借鉴的作用,如有错误还请指出. 1.信息 这个是熵和信息增益的基础概念,我觉得对于这个概念的理解更应该把他认为是一用名称,就比如‘鸡‘(加引号意思是说这个是名称)是用来修饰鸡(没加引号是说存在的动物即鸡),‘狗’是