统计学习方法--决策树

原创 2017年01月03日 22:54:06

概述

决策树(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算法,即选择能使得信息增益最大的特征作为当前的划分要本的特征。然后递归的构建决策树。具体方法为:
从根节点开始,对节点计算所有可能特征的信息增益,选择信息增益最大的节点作为划分的特征,有该特征的不同取值建立子节点,在对子节点递归的挑用以上方法。直到左右的特征的信息增益均很小或者没有特征可以选择了,最后得到一颗决策树。
有关构造决策树的具体代码可以参考:基于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.七月在线

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Ensemble learning:Bagging,Random Forest,Boosting

概述\qquad集成学习(ensemble learning)构建多个基础的分类器,然后将多个分类器进行组合的一种学习方式。其通常也被称为多分类器系统(multi-classifer system)。...

TensorFlow中 tf.nn.embedding_lookup

import tensorflow as tf src_vocab_size = 10 src_embed_size = 5 source = [1,3] with tf.variable_sco...

统计学习方法笔记七----决策树

前言  决策树是通过一系列规则对数据进行分类的过程。它提供一种在什么条件下会得到什么值的类似规则(if-then)的方法。决策树分为分类树和回归树两种,分类数对离散变量做决策树,回归树对连续变量做决策...

[统计学习方法]决策树

决策树其实就是一个if-else的集合,在应用中,如果给定一个输入,不断的通过if-else的判断,可以得到理想的输出。对应到树上,也就是每一个节点是一个判断条件,而是否满足这个判断条件决定了该走到这...

《统计学习方法》笔记(5):决策树

决策树是一种基本的分类与回归方法,可以将其理解为一连串的if-then规则集合。构建一棵决策树一般要经过三个步骤:特征参量的选择、决策树的生成以及决策树的剪枝。主要的决策树算法有ID3、C4.5和CA...

《统计学习方法》笔记(六)--决策树

可以用于分类和回归,书中只介绍分类树用于分类 定性:是一种判别式模型 思路:利用训练数据,根据损失函数最小化的原则建立决策树模型,对于新的数据利用建立的决策树进行分类 决策树学习的主要步骤:特征...

统计学习方法---决策树之ID3算法

ID3算法只有树的生成,所以该算法生成的树容易产生过拟合。

《统计学习方法》笔记05:决策树模型

《统计学习方法》笔记05:决策树模型决策树模型:由训练数据集估计条件概率模型。学习算法:ID3,L4.5,CART三种。5.1 预备知识1. 熵熵可用来衡量一个随机变量的概率分布的不确定性情况。当随机...

李航《统计学习方法》第五章——用Python实现决策树(MNIST数据集)

相关文章 李航《统计学习方法》第二章——用Python实现感知器模型(MNIST数据集) 李航《统计学习方法》第三章——用Python实现KNN算法(MNIST数据集) 李航《统计学习方法》第四章—...

《统计学习方法》笔记——决策树之ID3算法

决策树之ID3算法概述:工作原理: 得到原始数据集,然后基于最好的属性值划分数据集,由于特征值可能多于两个,因此可能存在大于两个分支的数据集划分。第一次划分之后,数据被向下传递到树分支的下一个节点,在...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:统计学习方法--决策树
举报原因:
原因补充:

(最多只允许输入30个字)