决策树算法学习笔记

什么是决策树

决策是是一种基本的分类与回归方法。决策树称属性结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以分为是if-then规则的集合,也可以是定义在特征空间与类空间上的条件概率分布,其主要优点是模型具有可读性,分类速度快。学习时,利用损失函数最小化原则建立决策树模型。决策树模型学习通常包含3个步骤:特征选择、决策树的生成和决策树的修剪。决策树三种经典的学习算法为ID3、C4.5、CART。

决策树算法学习笔记_第1张图片


决策树学习算法

决策树学习本质上是从训练数据中归纳出一组分类规则。能够对训练数据集进行正确分类的决策树有很多个,也可能没有,我们要从中选择一个矛盾较小的决策树,同时又要有很好的泛化能力。

决策树学习用损失函数表示这一目标,通常为正则化的极大似然函数。决策树的学习策略是以损失函数为目标函数的最小化。当损失函数确定以后,学习问题就变成了以损失函数意义下钻则最优决策树的问题,因为从所有的可能的决策树中选取最优的决策树是NP完全问题,所以通常采用启发式的方法,得到的往往是次优的。


特征选择

决策树的学习算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好分类的过程,这一过程对应着对特征空间的划分,也对应着决策树的构建,即决策规则的建立。

特征选择的关键是其准则。常用的准则为:

ID3 — 信息增益

数据集未划分前的信息熵为:

H(D)=k=1K|Ck||D|log2|Ck||D|

其中,K为数据集类别数。数据集按照某一特征A进行划分之后的条件信息熵:
H(D|A)=i=1n|Di||D|H(Di)

其中,n为属性A的取值个数。因此,样本集合D在采用属性A来划之后的信息增益为:
g(D,A)=H(D)H(D|A)

ID3算法是最早的决策树学习算法。ID3算法优点是使用简单,但是,有很多不足之处。ID3算法偏向于选用取值数目较多的属性,另外,ID3算法没有对连续值的处理,也没有剪枝算法,容易过拟合。


C4.5 — 信息增益比

样本集合D对特征A的信息增益比为:

gR(D,A)=g(D,A)IV(A)IV(A)=i=1n|Di||D|log2|Di||D|

其中,n为属性A取值个数。IV(A)表示属性A的内部信息。当A的取值越多,IV(A)越大。因此,采用信息增益比可以抑制上述问题。但是信息增益比倾向于选择属性取值较少的属性,因此,C4.5算法并不会直接选择信息增益比最大的那个,而是采用启发式方法:先从候选划分属性中找出划分属性中信息增益高于平均水平的属性,再从中找出增益比最高的。


CART — 基尼系数

样本集合D的基尼系数:

Gini(D)=1k=1K{|DK||D|}2

特征A下集合D的基尼系数:
GIni(D,A)=i=1n|Di||D|Gini(Di)

直观来说,基尼系数反映从数据集D中随机抽取两个样本,其类别标记不一致的概率,因此基尼系数越低,数据集D的纯度越高。


决策树的生成

通常使用信息增益最大、信息增益比最大或基尼系数最小的准则来选择特征。决策树的生成往往通过计算信息增益或其他指标,从根节点开始,递归产生决策树,这相当于用信息增益或其他准则不断地选择局部最优特征。

CART算法与ID3和C4.5算法不同的是,CART算法既可以用于分类也可以用于回归。CART算法在划分数据时采取的是一分为二的方式,而不是一分为多。比如,当特征A有多个取值 a1,a2,a3,...,an , 然后取 Aai 为划分依据,将数据集一份为二。对于连续值,则采用选择一个切分点。

对于回归问题,CART采用最小平方差为最优特征和切分点的选择依据。


决策树的剪枝

决策树的剪枝,往往从已生成的树上剪掉一些叶节点或叶节点以上的子树,将其与父节点或根节点作为新的叶节点,从而简化生成的决策树。

剪枝过程的损失函数(代价复杂度函数):

Cα(T)=C(T)+α|T|

其中,T为任意子树,C(T)为对训练数据的预测误差(如基尼指数),|T|为子树叶节点的个数, α0 为参数, Cα(T) 为参数是 α 时的子树T的整体损失。参数 α 权衡训练数据的拟合程度与模型的复杂度

以 t 为单节点树的损失函数是

Cα(t)=C(t)+α

以 t 为根节点的子树 Tt 的损失函数是
Calpha(Tt)=C(Tt)+α|Tt|

对于固定的 α ,必然存在式损失函数最小的子树。易知,当 α=C(t)C(Tt)|T|1 , Tt 与 t 有相同的损失函数值,而t节点更少,因此,t比 Tt 更可取,对 Tt 进行剪枝。

决策树算法学习笔记_第2张图片
上述算法是摘自《统计学习方法》当中。

你可能感兴趣的:(机器学习)