决策树 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

相关文章
|
12月前
|
机器学习/深度学习 算法 数据建模
【机器学习基础】决策树(Decision Tree)
【机器学习基础】决策树(Decision Tree)
173 0
|
5月前
|
机器学习/深度学习 存储 人工智能
【机器学习】GBDT (Gradient Boosting Decision Tree) 深入解析
GBDT,全称为Gradient Boosting Decision Tree,即梯度提升决策树,是机器学习领域中一种高效且强大的集成学习方法。它通过迭代地添加决策树以逐步降低预测误差,从而在各种任务中,尤其是回归和分类问题上表现出色。本文将深入浅出地介绍GBDT的基本原理、算法流程、关键参数调整策略以及其在实际应用中的表现与优化技巧。
1127 1
|
6月前
|
机器学习/深度学习 数据可视化 决策智能
Python中使用Gradient Boosting Decision Trees (GBDT)进行特征重要性分析
Python中使用Gradient Boosting Decision Trees (GBDT)进行特征重要性分析
193 0
|
机器学习/深度学习 算法 数据建模
决策树(Decision Tree)算法详解及python实现
决策树(Decision Tree)算法详解及python实现
1679 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)
|
机器学习/深度学习 存储 搜索推荐
【树模型与集成学习】(task6)梯度提升树GBDT+LR
协同过滤和矩阵分解存在的劣势就是仅利用了用户与物品相互行为信息进行推荐, 忽视了用户自身特征, 物品自身特征以及上下文信息等,导致生成的结果往往会比较片面。
379 0
【树模型与集成学习】(task6)梯度提升树GBDT+LR
|
机器学习/深度学习 算法 数据可视化
Machine Learning | (7) Scikit-learn的分类器算法-决策树(Decision Tree)
Machine Learning | (7) Scikit-learn的分类器算法-决策树(Decision Tree)
136 0
|
算法 数据挖掘
决策树算法之分类回归树 CART(Classification and Regression Trees)【2】
[上一篇](https://www.atatech.org/articles/158334)文章主要介绍了分类树,下面我们再一起来看一下回归树,我们知道,分类决策树的叶子节点即为分类的结果;同理,回归树的叶子节点便是连续的预测值。那么,同样是回归算法,线性回归和决策树回归有什么区别呢?区别在于,前者拟合的是一条直线,而后者却可以拟合非线性的数据,如下图中的数据就是用线性回归来拟合的: ![]