机器学习之树形算法(一):决策树

目录

一、决策树介绍

二、决策树特征选择

三、决策树的生成

四、决策树的剪枝

五、CART算法

总结

参考资料:《统计学习方法》李航

一、决策树介绍

目前最流行的一类机器学习算法是树形算法(决策树、随机森林、GBDT、XGBoost和LightGBM等)树形算法的基础就是决策树,由于其易理解、易构建、速度快等特点,被广泛地应用。因此,决策树是经典的机器学习算法,很多复杂的机器学习算法都是由决策树演变而来。

根据处理数据类型的不同,决策树又分为两类:分类决策树回归决策树。分类决策树可用于处理离散型数据,回归决策树可用于处理连续型数据。最常见的决策树算法包含ID3算法、C4.5算法以及CART算法。

决策树学习的策略是以损失函数为目标函数的最小化,损失函数通常是正则化的极大似然函数。 当损失函数确定以后,学习问题就变为在损失函数意义下选择最优决策树的问题。因为从所有可能的决策树中选取最优决策树是 NP完全问题,所以现实中决策树学习算法通常采用启发式方法,近似求解这一最优化问题,这样得到的决策树是次最优的。决策树学习的算法通常是递归地选择最优特征,并根据该特征对训练数据进行分割,使得各子数据集有一个最好的分类的过程。直至所有训练数据子集都被基本正确分类, 或者直到没有合适的特征为止。

以上方法生成的决策树可能对训练数据有很好的分类能力,但对未知的测试数据却未必有很好的分类能力,即可能发生过拟合现象。我们可以对已生成的树自下而上进行剪枝,将树变得更简单,从而具有更好的泛化能力。如果特征数量很多,也可以在决策树学习开始的时候,对特征进行选择,只留下对训练数据有足够分类能力的特征。

决策树的生成对应于模型的局部选择,决策树的剪枝对应于模型的全局选择。

决策树学习通常包括 3 个步骤:特征选择、树的生成和树的剪枝。

二、决策树特征选择

特征选择在于选取对训练数据具有分类能力的特征,这样可以提高决策树学习的效率。如果利用一个特征进行分类的结果与随机分类的结果没有很大差别, 则称这个特征是没有分类能力的,经验上扔掉这样的特征对决策树学习的精度影响不大。ID3和C4.5算法特征选择的准则是信息增益或信息增益比。

1. 熵

在信息论与概率统计中,熵(entropy)是表示随机变量不确定性的度量。设X是一个取有限个值的离散随机变量,其概率分布为P(X=x_{i})=p_{i},i=1,2,\cdots ,n

则随机变量X的熵H(X)定义为H(X)=-\sum_{i=1}^{n}p_{i}logp_{i}。 

条件熵 H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。它定义为H(Y|X)=\sum_{i=1}^{n}p_{i}H(Y|X=x_{i})

2. 信息增益

信息增益g(D,A)表示给定特征A的信息而使得数据集D的信息不确定性减少的程度。它定义为数据集D的熵H(D)与给定特征A后数据集D的条件熵H(D|A)之差,即g(D,A)=H(D)-H(D|A)

3. 信息增益比

信息增益是绝对指标,信息增益比是相对指标。特征A对数据集D的信息增益比g_{R}(D,A)定义为其信息增益g(D,A)与数据集D的熵H(D)之比,即

g_{R}(D,A)=\frac{g(D,A)}{H(D)}

三、决策树的生成

1. ID3 算法

ID3算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归地构建决策树,直到所有特征的信息增益均很小或没有特征可以选择为止。ID3算法只有树的生成,没有剪枝,所以该算法生成的树容易产生过拟合问题。

2. C4.5算法

C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进。1)在生成树的过程中,用信息增益率准则来选择特征,克服了用信息增益选择特征时偏向选择取值多的特征的不足;2) 在树的构造过程中进行剪枝; 3) 能够完成对连续属性的离散化处理; 4) 能够对不完整数据进行处理。

C4.5算法有如下优点:产生的分类规则易于理解,准确率较高。有如下缺点:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效;此外只适合于能够存储于内存的数据集,当训练集大得无法在内存存储时,程序将无法运行。 

四、决策树的剪枝

决策树生成算法递归地产生决策树,直到不能继续下去为止。这样产生的树往往对训练数据的分类很准确,但对测试数据的分类却没有那么准确,即容易出现过拟合现象。过拟合的原因在于学习时过多地考虑如何提高对训练数据的正确分类,从而构建出过于复杂的决策树。解决这个问题的办法可以是对已生成的决策树进行简化,这个简化的过程称为剪枝。具体而言, 剪枝是从已生成的树上裁掉一些子树或叶结点,并将其根结点或父结点作为新的叶结点,从而简化分类树模型。

剪枝分为预剪枝和后剪枝。预剪枝是指在构造树的过程中就知道哪些节点可以剪掉,于是干脆不对这些节点进行分裂;后剪枝是指构造出完整的决策树之后再来考虑哪些子树可以剪掉。对比预剪枝和后剪枝,能够发现,后剪枝决策树通常比预剪枝决策树保留了更多的分支。一般情形下,后剪枝决策树的欠拟合风险小,泛化性能往往也会更优。但后剪枝过程是在构建完全决策树之后进行的,并且要自底向上对树中的所有非叶结点进行逐一考察,因此其训练时间开销要比未剪枝决策树和预剪枝决策树都大得多。

一种简单的剪枝算法

本文介绍一种简单的决策树的剪枝算法。决策树的剪枝往往通过极小化决策树整体的损失函数来实现。设树T的叶结点个数为\left | T \right |t是树T的叶结点,该叶结点有N_{t}个样本点,其中k类的样本点有N_{tk}个,k=1,2,\cdots ,KH_{t}(T)为叶结点t上的经验熵,\alpha \geqslant 0为参数,则决策树的损失函数可以定义为

 C_{\alpha }(T)=C(T)+\alpha |T|,其中C(T)=\sum_{t=1}^{|T|}N_{t}H_{t}(T)=-\sum_{t=1}^{|T|}\sum_{k=1}^{K}N_{tk}log\frac{N_{tk}}{N_{t}}

C(T)表示模型与训练数据的拟合程度,\left | T \right |表示模型复杂度,参数\alpha \geqslant 0控制两者之间的平衡。较大的\alpha促使选择较简单的模型,较小的\alpha促使选择较复杂的模型,\alpha = 0意味着只考虑模型与训练数据的拟合程度,不考虑模型的复杂度。剪枝,就是当\alpha确定时,选择损失函数最小的模型。当\alpha确定时,子树越大,往往与训练数据的拟合越好,但模型复杂度就越高;相反,子树越小,模型的复杂度就越低,但往往与训练数据的拟合不好。

可以看出,决策树生成只考虑了通过提高信息增益(或信息增益比)对训练数据进行更好地拟合,而决策树剪枝通过极小化损失函数不仅考虑了拟合效果,还考虑了模型复杂度。所以说,决策树的生成对应于模型的局部选择,决策树的剪枝对应于模型的全局选择。

上文定义的损失函数的极小化等价于正则化的极大似然估计。所以说,利用损失函数最小原则进行剪枝就是用正则化的极大似然估计进行模型选择。

五、CART算法

CART(Classification And Regression Tree,即分类回归树)也属于一种决策树,它是一棵二叉树,是应用最广泛的决策树学习方法。CART既可以用于分类也可以用于回归,同样由特征选择、树的生成及树的剪枝组成。

1. CART特征选择

CART算法对回归树采用平方误差最小化准则,对分类树采用基尼系数最小化准则,进行特征选择,生成二叉树。二叉树不易产生数据碎片,精确度往往也会高于多叉树。

2. CART生成

2.1 CART回归树的生成

假设XY分别为输入和输出变量,并且Y是连续变量,给定训练数据集

D=\left \{ (x_{1},y_{1}),(x_{2},y_{2}),\cdots, (x_{N},y_{N})\right \}

假设已将特征空间划分为M个单元D=R_{1},R_{2},\cdots ,R_{M},并且在每个单元R_{m} 上有一个固定的输出值c_{m},于是回归树模型可表示为f(x)=\sum_{m=1}^{M}c_{m}I(x\in R_{m})

当特征空间的划分确定时,可以用平方误差\sum_{x_{i}\in R_{m}}^{}(y_{i}-f(x_{i}))^{2}来表示回归树对于训练数据的预测误差,用平方误差最小化的准则求解每个单元上的最优输出值。易知,单元R_{m}c_{m}的最优值 \hat{c}_{m}R_{m}上的所有x_{i}对应的y_{i}的均值,即\hat{c}_{m}=ave(y_{i}|x_{i}\in R_{m})

那怎样对特征空间进行划分?这里采用启发式的方法,选择第j个变量x^{(j)}和它取的值s,作为切分变量和切分点, 并定义两个区域:R_{1}(j,s)=\left \{x|x^{(j)}\leqslant s \right \}R_{2}(j,s)=\left \{x|x^{(j)}> s \right \}

具体地,求解\underset{j,s}{min}{}\left [\underset{c_{1}}{min}{}\sum_{x_{i}\in R_{1}(j,s)}^{} (y_{i}-c_{1})^{2}+\underset{c_{2}}{min}{}\sum_{x_{i}\in R_{2}(j,s)}^{} (y_{i}-c_{2})^{2} \right ]

对固定输入变量j可以找到最优切分点s\hat{c}_{1}=ave(y_{i}|x_{i}\in R_{1}(j,s))\hat{c}_{2}=ave(y_{i}|x_{i}\in R_{2}(j,s))

遍历所有输入变量,找到最优的切分变量j,构成一个对(j,s),依此将特征空间划分为两个区域。接着,对每个区域重复上述划分过程,直到满足停止条件为止。这样就生成一棵回归树,这样的回归树通常称为最小二乘回归树。

2.2 CART分类树的生成

基尼系数

分类问题中,假设有K个类,样本点属于第k类的概率为p_{k},则概率分布的基尼系数定义为

Gini(p)=\sum_{k=1}^{K}p_{k}(1-p_{k})=1-\sum_{k=1}^{K}p_{k}^{2}

对于给定的数据集合D\left |D_{k} \right | 表示D中属于第k类的样本的个数,\left |D \right |  表示D中样本的个数,数据集合D的基尼系数定义为 

Gini(D)=1-\sum_{k=1}^{K}\left (\frac{\left |D_{k} \right |}{\left |D \right | } \right )^{2}

如果数据集合D根据特征A是否取某一可能值a被分割成D_{1}D_{2}两部分, \left |D_{1} \right |\left |D_{2} \right |分别表示数据集D_{1}D_{2}中样本的个数,\left |D \right | 表示D中样本的个数,则在特征A的条件下,集合D的基尼系数定义为

Gini(D,A)=\frac{\left |D_{1} \right |}{\left |D \right | }Gini(D1)+ \frac{\left |D_{2} \right |}{\left |D \right | }Gini(D2)

生成过程

基于训练数据集来生成决策树,从根结点开始,在所有可能的特征 A 以及它们所有可能的切分点 a 中,选择基尼系数最小的特征及其对应的切分点作为最优特征与最优切分点。依最优特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中去。递归地对每个结点进行上述操作,直至满足停止条件,生成CART决策树。

算法停止的条件是结点中的样本个数小于预定阈值,或样本集的基尼系数小于预定阈值(样本基本属于同一类),或者没有更多特征。

3. CART剪枝

CART剪枝算法由两步组成:首先从生成的决策树T_{0} 底端开始不断剪枝,直到T_{0}的根结点,形成一个子树序列\left \{ T_{0},T_{1},\cdots ,T_{n} \right \};然后通过交叉验证法在独立的验证数据集上对子树序列进行测试,从中选择最优子树。这时用损失函数最小作为剪枝的标准。

3.1 剪枝,形成一个子树序列

在剪枝过程中,计算子树的损失函数:C_{\alpha }(T)=C(T)+\alpha |T|

其中,T为任意子树, \left | T \right |为子树的叶结点个数,参数\alpha \geqslant 0C(T)为对训练数据的预测误差,C_{\alpha }(T)为参数是\alpha时子树T的整体损失。参数\alpha权衡训练数据的拟合程度与模型的复杂度。 对固定的\alpha,一定存在使损失函数C_{\alpha }(T)最小的子树,将其表示为T_{\alpha }。这样的最优子树是唯一的。当\alpha较大的时候,最优子树T_{\alpha }偏小;当\alpha小的时候,最优子树T_{\alpha }偏大。极端情况,当\alpha = 0时,整体树是最优的。当\alpha \rightarrow \infty时,单结点树是最优的。

Breiman 等人证明:可以用递归的方法对树进行剪枝。将\alpha从小增大,0=\alpha _{0}< \alpha _{1}< \cdots < \alpha _{n}< +\infty,产生一系列的区间[\alpha _{i},\alpha _{i+1}),i=0,1,\cdots,n,对应着剪枝得到的最优子树序列\left \{T_{0},T_{1},\cdots ,T_{n} \right \},序列中的子树是嵌套的。

3.2 在剪枝得到的子树序列\left \{T_{0},T_{1},\cdots ,T_{n} \right \}中通过交叉验证选取最优子树T_{\alpha }

利用独立的验证数据集,测试子树序列\left \{T_{0},T_{1},\cdots ,T_{n} \right \}中各棵子树的平方误差或基尼系数。平方误差或基尼系数最小的决策树被认为是最优的决策树。

ID3/C4.5/CART三种算法的对比

算法支持模型树结构特征选择连续值处理缺失值处理剪枝
ID3分类多叉树信息增益不支持不支持不支持
C4.5分类多叉树信息增益比支持支持支持
CART分类和回归二叉树基尼系数和平方误差支持支持支持

总结

  • 决策树学习旨在构建一个与训练数据拟合很好,并且复杂度小的决策树。由于从可能的决策树中直接选取最优决策树是NP完全问题,现实中采用启发式方法学习次优的决策树。常用的算法有ID3、C4.5和CART。
  • 决策树学习算法包括 3 部分:特征选择、树的生成和树的剪枝。
  • 特征选择:特征选择的目的在于选取对训练数据有分类能力的特征。通常使用信息增益最大、信息增益比最大或基尼系数最小、平方误差最小作为特征选择的准则。
  • 树的生成:决策树的生成往往通过计算信息增益或其他指标,从根结点开始,递归地产生决策树。这相当于用信息增益或其他准则不断地选取局部最优的特征,将训练集分割为能够基本正确分类的子集。
  • 树的剪枝:由于生成的决策树存在过拟合问题,需要对它进行剪枝,以简化学到的决策树,有更好的泛化能力。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值