博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
统计学习方法--决策树
阅读量:4187 次
发布时间:2019-05-26

本文共 2764 字,大约阅读时间需要 9 分钟。

概述

决策树(Decision tree)一种常见的回归和分类的方法,决策树易于理解,其符合人类的思维方式,便于解释等特点。决策树的学习过程通常分为3个步骤:特征选择、决策树的生成、剪枝。

决策树可以看出一个if-then规则的集合,下面给出一副图进行对决策树宏观的认识,这里我们的任务是要将红色的点和绿色的点进行分类:

这里写图片描述

在平面上选择最好的划分点,即如何切分数据点效果最好,如下图所示的,黑线左边和右边被分成两类,左边的为绿色,右边为红色,显然这样会有很大的误差,因此需要更多的划分点。

这里写图片描述

经过一系列划分后,得到如下的图形,红色和绿色被黑框进行分割。

这里写图片描述

最后得到其划分的流程图如下所示:

这里写图片描述

上面的一个很自然的问题是,如何找到最优的切分点,即我如何切这一刀使得其划分的结果尽可能好,注意这里的用词,因为决策树中选择最优决策树是NP完全问题,所以在现实中采用启发式的方法,也就是我们选择的是贪婪的算法,没次划分的都是当前结果中最优的划分。

如何选择划分点也就是决策树的特征选择的步骤。

特征选择

不纯性度量

特征选择,即从当前的特征中选择一个能将样本划分最好的特征的算法,通常选择最佳划分的度量是根据划分后子女节点的不纯性的纯度。不纯的程度越低,类的分别越倾斜。不纯性的度量包括:

这里写图片描述

上述分别为基尼指数、信息熵和分类误差,其中 pk 为第k类的概率。

在二分类问题上三个不纯度度量之间的比较,可以看到它们的度量是一直的在p=0.5时不纯度 最高,此时需要较多的信息,而p=0,p=1时不纯度为0,因为我不需要知道任何信息即可将它们分开。即不存度越高,所需要的信息就越多。

这里写图片描述

在决策树的构造中,最常用的三种算法为:ID3,C4,5和CART算法。

信息增益

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

g(D,A)=H(D)H(D|A)

设训练集 D 共有k个类别

|D|
表示训练样本的个数, |Ck| 表示第k个类的个数,其中A共有n个属性,经A划分后可以将D划分为: D1,D2,...Dn 个子集每个最忌的个数为 Di 经验熵为这些子集信息熵的加权平均,计算公式如下图所示。

这里写图片描述

信息增益比

从上述可以看到如果一个特征具有很多个属性的话,因此在选择特征是,会偏向于选择属性较多的特征,因为属性较多,会分成更多的子集,解决这一问题可以用信息增益比,这是特征选择的另一准则,信息增益比为:

gR(D,A)=g(D,A)HA(D)
其中
HA(D)=ni=1pilog(pi)
,其中
pi
为第i个子集的概率。

ID3,C4.5,CART的比较

下面给出三种决策树构建算法的简单宏观的比较:

这里写图片描述

下面分别对其进行介绍。

ID3算法

ID3算法,即选择能使得信息增益最大的特征作为当前的划分要本的特征。然后递归的构建决策树。具体方法为:

从根节点开始,对节点计算所有可能特征的信息增益,选择信息增益最大的节点作为划分的特征,有该特征的不同取值建立子节点,在对子节点递归的挑用以上方法。直到左右的特征的信息增益均很小或者没有特征可以选择了,最后得到一颗决策树。
有关构造决策树的具体代码可以参考:

C4.5算法

与ID3算法非常的类似,只不过用信息增益比来代替ID3中的信息增益而已。

CART算法

分类与回归树(classification and regression tree,CART)是一种广泛的决策树学习方法,其中它既可以做分类也可以做回归,同时CART与ID3和C4.5所不同的一点是他是个二叉树,即每次划分都是是与不是。

CART的生成就是递归的构建二叉决策树的过程,其中对回归树用平方误差最小化的准则,儿对分类树用基尼指数(Gini index)最小化的准则。

回归树的生成

一个回归树对应于将输入空间D划分为M个单元 R1,R2,...Rm ,并且在每个单元上的输出值为在此单元上所有的数据的平均值,即如果测试的要本落在了 Ri 这个空间中,则其输出的值为:

cm=ave(yi|xiRm)

主要的问题是我们如何进行空间的划分,下面给出以最新二乘回归树的生成算法:

这里写图片描述

来源:统计学习方法

分类树的生成

假设有K个类,样本点属于k的概率为 pk ,则概率分布的基尼指数为:

Gini(p)=k=1kpk(1pk)

在CART的算法中,生成的是二叉树,因此k=2,所以基尼指数变为:

Gini(p)=2p(1p)

具体生成的算法与ID3和C4.5类似,不再赘述。

决策树的剪枝

在决策树问题中,处理过拟合的方法为剪枝,其中剪枝分为先剪枝和后剪枝。

先剪枝

在这种方法中,在完全拟合整个训练集之前就停止决策树的生长。因此要采取一些提前结束的条件,比如说:当观察到不纯性度量的增益低于某个确定的阈值是就停止扩展叶子节点。这种方法有点在于避免产生过分拟合训练数据的过于复杂的子树,然而,很难为提前终止选取正取的阈值。阈值太高容易欠拟合,太低过拟合。

后剪枝

在此方法中,初始的决策树按最大规模增长,然后对其进行剪枝,按照自第向上的方法进行对决策树的修剪。

决策树越复杂一般来说对训练数据的拟合越好,其有更多的叶子节点,为了避免其过于复杂的模型,一般的做法都是给其一个惩罚。因此决策树的剪枝往往通过极小化损失函数(loss function)来实现。
Loss function :

Cα=C(T)+α|T|
其中|T|为叶子节点的个数,C(T)表示模型对训练样本的预测误差。因此当
α
确定后,如果在一颗子树的损失反而小于其分裂后的损失,则让父节点充当该子树的叶子节点,即当:
Cα(Ta)<=Cα(Tb)
则将父节点作为叶子节点,关于更多可以参考相应的资料。

决策树的优缺点

Good properties:

1.Inexpensive to construct
2.Variable selection
3.Interaction detection
4.Easy to interpret for small-sized trees
5.Missing data
6.Mixed variable types
7.Robustness; invariant to monotone transformations of input variables

Weak properties:

1. Instability
2. Difculty in modeling additive structures

参考资料:

1.Ji Zhu, Michigan Statistics

2.统计学习方法
3.机器学习
4.数据挖掘导论
5.七月在线

你可能感兴趣的文章
ESB简介及选型(转)
查看>>
JAVA编写HTTP代码并发布在网上
查看>>
JDBC连接数据库的原理和步骤
查看>>
开发微信公众平台的基本功能
查看>>
JSP内置对象的学习
查看>>
用java写文件输入输出流,实现复制粘贴的方法
查看>>
学习JSP的方法步骤(参考)
查看>>
JSP中常见TOMCAT错误代码原因
查看>>
MyEclipse中WEB项目加载mysql驱动方法
查看>>
常见编写JAVA报错总结
查看>>
org.gjt.mm.mysql.Driver和com.mysql.jdbc.Driver的区别
查看>>
UTF-8和GBK有什么区别
查看>>
增加MyEclipse分配内存的方法
查看>>
头痛与早餐
查看>>
[转]在ASP.NET 2.0中操作数据::创建一个数据访问层
查看>>
Linux命令之chmod详解
查看>>
【java小程序实战】小程序注销功能实现
查看>>
leetcode Unique Paths II
查看>>
几个大数据的问题
查看>>
CareerCup Pots of gold game:看谁拿的钱多
查看>>