机器学习入门之决策树算法

1、什么是决策树(Decision Tree)

决策树是一个类似于流程图的树结构,其中每一个树节点表示一个属性上的测试,每一个分支代表一个属性的输出,每一个树叶节点代 表一个类或者类的分布,树的最顶层是树的根节点。

举一个例子。小明同学想根据天气情况是否享受游泳运动:

这里包含了6个属性,一条样例即为一个实例,待学习的概念为“是否享受运动”,学习目标函数:f:X->Y。

根据上面的表中实例,我们可以试着用一个树结构的流程图来表示小明根据那6个属性决定是否享受运动:

从上面这个树状图中,我们可以看到,总共的实例有14个(出去运动的实例有9个,不运动的实例有5个),从树顶往下看,首先看到菱形的选项,意思是天气如何?然后分出了三个分支——晴天,阴天,雨天。实例中是天气属性为晴天,并决定要去运动的有2个,不去运动的有3个;天气属性为阴天,并决定去运动的有4个,不运动的有0个;天气属性为雨天,并决定去运动的有3个,不运动的有2个。从图中我们可以看到,当标记中的正例或者反例为0个时,树就不继续往下扩展了(比如天气属性为阴天的时候,不去运动的实例为0个)。假如正例或者反例都不为0时,那么就要根据属性继续往下扩展树。

决策树是机器学习中分类方法中的一个重要算法。

2、如何构造一个决策树算法

(1)信息熵

信息是一种抽象的概念,那么如何对信息进行一个量化的操作呢?1948年,香农提出了“信息熵”的概念。一条信息的信息量大小和它的不确定性有直接的关系,要搞清楚一件非常不确定的事情,或者说我们对一件事情一无所知,就需要了解大量的信息,信息量的度量就等于不确定性的多少。

举个例子,NBA总决赛的夺冠球队,假设你对NBA球队一无所知,你需要猜多少次?(假设每个球队的夺冠几率都是一样的)这里我们可以给进入季后赛的NBA球队进行编号(NBA季后赛会选出16支球队),然后使用二分法进行猜测(猜测冠军队伍在1-8号球队之间,是的话,在进行二分;不是的话就在9-16号球队之间),这样我们要猜测的次数最多是4次(2^4=16嘛)。

信息熵使用比特(bit)来衡量信息的多少,计算公式如下:

-(P1*log2 P1+P2*log2 P2+...P16*log2 P16)---->计算NBA季后赛总冠军的夺冠球队的信息熵值,含义是每一个球队的夺冠概率乘以,以2为底这个队夺冠的对数。P1、P2...PN表示哪一支球队的夺冠概率,假设每一个球队夺冠的概率都相等的话,那么这里算出的信息熵值就是4,当然这种情况是不太可能存在的,因为每一个球队的实力不一样嘛。

变量的不确定越大,熵的值也就越大。

(2)决策树归纳算法(ID3)

这个算法是1970-1980年,由J.Ross.Quinlan发明的。

在决策树算法中,比较重要的一点是我们如何确定哪个属性应该先选择出来,哪个属性应该后选择出来当做树的节点。这里就涉及到了一个新的概念,叫做信息获取量,公式如下:

Gain(A)=Info(D)-Info_A(D) ---->A属性的信息获取量的值就等于,不按任何属性进行分类的时候的信息量加上有按A这个属性进行分类的时候的信息量(注意这里信息量的符号是负号,所以说“加上”)。

以是否购买电脑的案例为例子,给出了14个实例,如下图所示:

不按任何属性进行分类的情况下,计算信息获取量Info(D):

  

以年龄属性进行分类的情况下,计算信息获取量:

    

所以,Gain(age)=0.940-0.694=0.246 bits

同理,我们可以算出Gain(income) = 0.029, Gain(student) = 0.151, Gain(credit_rating)=0.048。比较大小,年龄的信息获取量是最大的,所以选择年龄作为第一个根节点。再次同理,后面的节点选择也是按照这样的计算方法来决定以哪个属性作为节点。

(3)结束条件

当我们使用递归的方法来创建决策树时,什么时候停止节点的创建很关键。综上,停止节点创建的条件有以下几点:

a、给定节点的所有样本属性都属于同一种标记的时候,比如(2)中的例子,以年龄为属性创建的节点下,有三个分支:                            senior,youth、middle_age。其中middle_age的所有实例的标记都是yes,也就是说中年人都会买电脑,这种情况下,这个节点就可以设置成树叶节点了。

b、当没有剩余属性用来进一步划分样本时,就停止节点的创建,采用多数表决。

c、分枝

3、其它算法

C4.5、CART算法。这几个算法都是贪心算法,自上而下,只是选择属性的度量方法不同。

4、树剪枝叶 (避免overfitting)

当树的深度太大时,设计的算法在训练集上的表现会比较好,但是在测试集上的表现却会很一般,这时我们就要对树进行一定的裁剪:

(1)先剪枝

当分到一定程度,就不向下增长树了。

(2)后剪枝

把树完全建好后,根据类的纯度来进行树的裁剪。

5. 决策树的优点:

直观,便于理解,小规模数据集有效

6. 决策树的缺点:

处理连续变量不好;类别较多时,错误增加的比较快;可规模性一般。

时间: 2024-10-08 08:18:19

机器学习入门之决策树算法的相关文章

机器学习算法之决策树算法

该节主要是把<机器学习实战>书上第三章关于决策树的相关代码照样子实现了一遍.对其中一些内容作了些补充,对比ID3与C45区别,同时下载了一个大样本集实验决策树的准确率. 首先,对于决策树的原理,很多很好的博客值得一看: 从决策树学习谈到贝叶斯分类算法.EM.HMM 决策树算法总结 这两个已经详解了关于决策树的所有,慢慢品读吧. 下面是书上外加添加的部分程序,首先是tree.py里面的程序: import operator from math import log # calculate the

【机器学习基础】决策树算法

引言 在之前的两节博文<混合和装袋>和<自适应提升>中,我们已经有现成的一堆假设g在手中,我们还如何将这些g混合起来,得到更好的分类器. 混合方式可以分为三种情况: 把g看做是同等地位,通过投票或者平均的方式将它们合起来,称为Bagging g是不平等的,有好有坏,一个可行的做法是把g当成是特征的转换,然后丢进线性模型训练就可以了,这称为AdaBoost 如果是不同的条件下,使用不同的g,那么我们仍然可以将g当做是特征转换,接下来使用一个非线性模型来得到最终的模型参数,这就是该文要

[转]机器学习——C4.5 决策树算法学习

1. 算法背景介绍 分类树(决策树)是一种十分常用的分类方法.它是一种监管学习,所谓监管学习说白了很简单,就是给定一堆样本,每个样本都有一组属性和一个类别,这些类别是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象给出正确的分类.这样的机器学习就被称之为监督学习.C4.5分类树就是决策树算法中最流行的一种.下面给出一个数据集作为算法例子的基础,比如有这么一个数据集,如下: 我们将以这个数据集作讨论的基础.进行分类的目的就是根据某一天的天气状态,如天气,温度,湿度,是否刮风,来

Spark机器学习(6):决策树算法

1. 决策树基本知识 决策树就是通过一系列规则对数据进行分类的一种算法,可以分为分类树和回归树两类,分类树处理离散变量的,回归树是处理连续变量. 样本一般都有很多个特征,有的特征对分类起很大的作用,有的特征对分类作用很小,甚至没有作用.如决定是否对一个人贷款是,这个人的信用记录.收入等就是主要的判断依据,而性别.婚姻状况等等就是次要的判断依据.决策树构建的过程,就是根据特征的决定性程度,先使用决定性程度高的特征分类,再使用决定性程度低的特征分类,这样构建出一棵倒立的树,就是我们需要的决策树模型,

机器学习实践之决策树算法学习

关于本文说明,本人原博客地址位于http://blog.csdn.net/qq_37608890,本文来自笔者于2017年12月06日 18:06:30所撰写内容(http://blog.csdn.net/qq_37608890/article/details/78731169).   本文根据最近学习机器学习书籍 网络文章的情况,特将一些学习思路做了归纳整理,详情如下.如有不当之处,请各位大拿多多指点,在此谢过. 一.决策树(decision tree)概述 1.决策树概念 决策树(decis

Python机器学习(三)--决策树算法

一.决策树原理 决策树是用样本的属性作为结点,用属性的取值作为分支的树结构. 决策树的根结点是所有样本中信息量最大的属性.树的中间结点是该结点为根的子树所包含的样本子集中信息量最大的属性.决策树的叶结点是样本的类别值.决策树是一种知识表示形式,它是对所有样本数据的高度概括决策树能准确地识别所有样本的类别,也能有效地识别新样本的类别. 决策树算法ID3的基本思想: 首先找出最有判别力的属性,把样例分成多个子集,每个子集又选择最有判别力的属性进行划分,一直进行到所有子集仅包含同一类型的数据为止.最后

就是要你明白机器学习系列--决策树算法之悲观剪枝算法(PEP)

前言 在机器学习经典算法中,决策树算法的重要性想必大家都是知道的.不管是ID3算法还是比如C4.5算法等等,都面临一个问题,就是通过直接生成的完全决策树对于训练样本来说是“过度拟合”的,说白了是太精确了.由于完全决策树对训练样本的特征描述得“过于精确” ,无法实现对新样本的合理分析, 所以此时它不是一棵分析新数据的最佳决策树.解决这个问题的方法就是对决策树进行剪枝,剪去影响预测精度的分支.常见的剪枝策略有预剪枝(pre -pruning)技术和后剪枝(post -pruning )技术两种.预剪

机器学习算法的R语言实现(二):决策树算法

1.介绍 ?决策树(decision tree)是一种有监督的机器学习算法,是一个分类算法.在给定训练集的条件下,生成一个自顶而下的决策树,树的根为起点,树的叶子为样本的分类,从根到叶子的路径就是一个样本进行分类的过程. ?下图为一个决策树的例子,见http://zh.wikipedia.org/wiki/%E5%86%B3%E7%AD%96%E6%A0%91 ? 可见,决策树上的判断节点是对某一个属性进行判断,生成的路径数量为该属性可能的取值,最终到叶子节点时,就完成一个分类(或预测).决策树

机器学习——决策树算法原理及案例

机器学习在各个领域都有广泛的应用,特别在数据分析领域有着深远的影响.决策树是机器学习中最基础且应用最广泛的算法模型.本文介绍了机器学习的相关概念.常见的算法分类和决策树模型及应用.通过一个决策树案例,着重从特征选择.剪枝等方面描述决策树的构建,讨论并研究决策树模型评估准则.最后基于 R 语言和 SPSS Modeler这两个工具,分别设计与实现了决策树模型的应用实例. 1.机器学习概念 机器学习 (Machine Learning) 是近 20 多年兴起的一门多领域交叉学科,涉及概率论.统计学.