决策树 Decision Tree

简介: 决策树 Decision Tree

正文


熵与信息增益


决策树模型本质上就是一个 IF-Then 规则的集合

000000000000000.png

决策树学习的第一步就是“特征选择”

特征选择分两个步骤进行:


选择对训练数据具有最大分类能力的特征进行树的叶子节点的分类;

选择该特征最合适的分裂点进行分裂。

熵(Entropy),是表示随机变量不确定性的度量。

假设X是一个具有有限个值的离散型随机变量,服从如下的概率分布:

P(X=xi)=pi,i=1,2,...,n

那么随机变量XX的熵定义为:

H(X)=i=1npilog2pi

其中pixi的概率,取值范围在[0,1]之间。

我们以随机变量只取01两个值为例,假设X服从如下分布:

0000000.png

根据熵公式,XX的熵为

00000.png


这时,熵H(X)H(X)随概率pp变化的曲线为:

0000.png

由图可知,当p=0p=1时熵为0,也即随机变量完全没有不确定性(即完全确定);

p=0.5时熵取值最大,不确定性最高。

信息增益:

设随机变量(X,Y)的联合概率分布为:

P(X=xi,Y=yi)=piji=1,2,...n;j=1,2,...,m


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

H(Y|X)=i=1npiH(Y|X=xi)


其中 pi=P(X=xi),i=1,2,...,n

在此基础上,我们引出信息增益(Information Gain)的概念,它表示在特征X给定的条件下使得类Y的信息不确定性减少的程度。


数学表述如下:特征A对训练集数据DD的信息增益G(D,A)定义为集合DD的熵H(D)H(D)与在特征A给定的条件下D的条件熵H(D|A)之差,即:

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


特征选择策略


决策树的学习应用信息增益准则选择特征。


给定训练集D和特征A。由熵、条件熵和信息增益的定义我们可以知道:


熵H(D)表示对数据集D进行分类的不确定性;

条件熵H(D|A))表示在特征AA给定的条件下对数据集D进行分类的不确定性;

信息增益G(D,A表示在特征AA给定的情况下使得数据集D进行分类的不确定性减少的程度。

显然,对于数据集DD而言,信息增益依赖于特征,一般情况下,不同的特征会有不同的信息增益。信息增益大的特征具有更强的分类能力。


所以我们在构建决策树的过程中,应该选择信息增益最大的特征进行分裂构建。


决策树的生成

设训练集为D,|D|表示样本容量大小;总共有K给类,用Ck,k=1,2,...,K表示。


设特征A有n个不同的取值a1,a2,...an,根据特征A的取值将数据D划分为n个互不相交的子集{D1,D2,...,Dn}|Di|,i=1,2,...,n表示第i个子集中的样本的个数

则显然有:

i=1n|Di|=|D|


ID3算法

ID3算法的核心是递归的构建决策树,递归的过程中在每个节点上应用信息增益准则选择特征,直至满足递归停止条件:所有特征的信息增益都很小或者没有特征可以选择。


假设有训练数据集DD,特征集AA,最小信息增益阀值ϵϵ和最终训练出来的决策树TT

则ID3算法的执行过程:


如果DD中所有实例属于同一类CkCk,那么TT就是单节点树,并且将CkCk作为该节点所表示的类别,返回TT;

如果A=∅A=∅,则TT为单节点树,并且将DD中实例数量最多的类作为该节点的类标记,返回TT;

否则,计算AA中各特征对数据集DD的信息增益,选择信息增益最大的特征AGAG;

如果AGAG的信息增益小于ϵϵ,此时TT设置为单节点树,同时也选择将DD中实例最多的类作为该节点的类标记,返回TT;

否则,对特征AGAG的每一个可能的取值aiai,根据AG=aiAG=ai将数据集DD分割为互不相交的子集DiDi,此时依然将DiDi中实例数最多的类作为标记,构建子节点。叶子节点和子节点构成树TT,返回TT;

对第5步中,第ii个子节点,以DiDi为训练集,以A−{AG}A−{AG}为新的特征集递归的调用1-5步得到子树TT,并返回。

C4.5算法

C4.5算法与ID3算法基本一致,只是特征选择的选择方法从ID3依据的信息增益改为了信息增益比。


信息增益比:

以信息增益作为划分训练数据集DD的特征,会倾向于选择特征值较多的特征,在不同特征的数量不一致的情况下,这会带来一种不公平性,而使用信息增益比(Information Gain Ratio)就可以解决这个问题。


信息增益比的定义:

特征AA对训练数据集DD的信息增益比GR(D,A)GR(D,A)表示特征AA的信息增益G(D,A)G(D,A)与训练数据集DD关于特征AA的熵HA(D)HA(D)的比值:


000.png


nn 是特征AA所能取得的不同值的总个数。

C4.5算法的过程与ID3算法的过程几乎完全一致,只需把ID3算法过程中的“按照信息增益选择特征”换为“按照信息增益比选择特征”即可。


决策树的剪纸策略


决策树的生成算依靠法递归构建决策树,直到不能继续构建为止。然而,这样产生的决策树很容易过分的学习训练样本,使得它对未知的测试数据的分类效果比较差,即这样产生的决策树很容易过拟合。


过拟合的原因在于我们构建的决策树过分复杂,导致其过多地学习训练样本的分布,而对未知样本的学习泛化能力较弱。


解决这个问题的方法就是简化已生成的决策树,使其变得更简单。


在决策树学习的过程中将已经生成的决策树进行简化的过程称作“剪枝”。也就是说,我们可以将决策树中划分的过细的叶子节点剪去,退回到其父节点成为新的叶子节点,使得新的决策树变得简单,并且能够在未知的测试数据的预测上取得更好的分类结果。


决策树的剪枝策略主要分为两大类:预剪枝策略和后剪枝策略


预剪枝策略的常用方法:


指定每一个结点所包含的最小样本数目。例如10,则该结点总样本数小于10时,则不再分;

指定树的高度或者深度。例如树的最大深度为4;

指定结点的熵。若该节点的熵小于某个值,不再划分。

预剪枝策略优缺点:


优点:预剪枝策略能够减少不必要的分裂操作,节省时间;

缺点:在预剪枝后构建决策树的某个时刻可能会出现更高的增益,也就是说预剪枝有可能得不到最优的树。

后剪枝策略的常用方法:


将决策树增长到它的最大深度,递归的进行剪枝,剪去那些使得增益值为负值的叶子节点。


后剪枝策略优缺点:


优点:能够获得最优的剪枝策略决策树;

缺点:那些被后剪枝的树节点的分裂过程浪费时间。

以sklearn中的iris数据集为例,得到的鸢尾花决策树如下:

00.png

相关文章
|
机器学习/深度学习 算法 数据建模
【机器学习基础】决策树(Decision Tree)
【机器学习基础】决策树(Decision Tree)
183 0
|
3月前
|
存储 测试技术 区块链
Merkle trees vs Verkle trees
该文章比较了Merkle树和Verkle树的工作原理和特点,探讨了它们在区块链技术中的应用,特别是Verkle树在提高证明大小效率方面的显著优势。
58 0
Merkle trees vs Verkle trees
|
5月前
|
机器学习/深度学习 存储 人工智能
【机器学习】GBDT (Gradient Boosting Decision Tree) 深入解析
GBDT,全称为Gradient Boosting Decision Tree,即梯度提升决策树,是机器学习领域中一种高效且强大的集成学习方法。它通过迭代地添加决策树以逐步降低预测误差,从而在各种任务中,尤其是回归和分类问题上表现出色。本文将深入浅出地介绍GBDT的基本原理、算法流程、关键参数调整策略以及其在实际应用中的表现与优化技巧。
1291 1
|
6月前
|
机器学习/深度学习 数据可视化 决策智能
Python中使用Gradient Boosting Decision Trees (GBDT)进行特征重要性分析
Python中使用Gradient Boosting Decision Trees (GBDT)进行特征重要性分析
205 0
|
机器学习/深度学习 算法 数据建模
决策树(Decision Tree)算法详解及python实现
决策树(Decision Tree)算法详解及python实现
1712 0
决策树(Decision Tree)算法详解及python实现
|
移动开发 算法
提升树与梯度提升树 Boosting Tree & Gradient Boosting Decision Tree(GBDT)
提升树与梯度提升树 Boosting Tree & Gradient Boosting Decision Tree(GBDT)
|
机器学习/深度学习 数据可视化 算法
机器学习算法之——决策树模型(Decision Tree Model)
简单说明一下上面的图像, 每一个叶子节点中有class, 表示按照上面的规则, 会被分到哪一个类别中. 同时, 每一个节点中有values, 表示到这一个节点中每一个类别的样本有多少个, 如上面的例子中一共有3类样本, 所以values中有三个数字, 分别是三个类别的样本的个数.
机器学习算法之——决策树模型(Decision Tree Model)
|
机器学习/深度学习 算法 数据可视化
Machine Learning | (7) Scikit-learn的分类器算法-决策树(Decision Tree)
Machine Learning | (7) Scikit-learn的分类器算法-决策树(Decision Tree)
138 0
|
机器学习/深度学习 算法 关系型数据库
决策树算法之分类回归树 CART(Classification and Regression Trees)【1】
分类回归树 CART 是决策树家族中的基础算法,它非常直觉(intuitive),但看网上的文章,很少能把它讲的通俗易懂(也许是我理解能力不够),幸运的是,我在 Youtube 上看到了[这个视频](http://1t.click/aMGq),可以让你在没有任何机器学习基础的情况下掌握 CART 的原理,下面我尝试着把它写出来,以加深印象. ## 决策树的结构 下图是一个简单的决策树示