决策树划分与剪枝

1、决策树划分选择

决策树学习的关键——如何选择最优划分属性。我们所期望的是,随着划分过程的不断进行,希望决策树的分支结点所包含的的样本尽可能属于同一类别,即结点的“纯度”要尽可能的高。

1.1 信息增益

要说信息增益,我们先来了解一下信息熵。

“信息熵“是度量样本集合纯度最常用的一种指标。假设当前样本集合D中第k类样本所占的比例为p_k(k=1,2,......,n)

则D的信息熵定义为:

                                Ent(D)=-\sum _{k=1}^{n}p_klog_2{p_k}   

 

Ent(D)的值越小,则D的纯的越高。

假定离散属性a有V个可能的取值\{a^1,a^2,...,a^V\},若使用a来对样本集D进行划分,则会产生V个分支结点,其中第v个分支节点包含了D中所有在属性a上取值为a^v的样本,记为D^v,考虑到不同的分支结点所包含的样本数不同,给分支结点赋予权重|D^v|/|D|,即样本数越多的分支节点的影响越大,于是用属性a对样本集D进行划分所获得的“信息增益”为

                               Gain(D,a)=Ent(D)-\sum _{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v)

一般而言,信息增益越大,意味着使用a来进行划分所获得的”纯度提升”越大,因此,我们可以用信息增益来进行决策树的划分属性选择,ID3决策树算法就是以信息增益为准则来选择划分属性。

例子:机器学习P76

1.2 信息增益率

实际上,信息增益准则对可取值数目较多的属性有所偏好(例如“编号”,每个分支仅包含一个样本,这些分支节点的纯度已达到最大,然而这样的决策树没有意义,不具有泛化能力,无法对新样本进行有效预测),所以为了减少这种偏好可能带来的不利影响,我们不再依据信息增益来选择最优划分属性,而是选择信息增益率。

信息增益率定义为:

                                     Gain\_Ratio(D,a)=\frac{Gain(D,a)}{IV(a)}

其中                             

                                       IV(a)=-\sum _{v=1}^{V}\frac{|D^v|}{|D|}log_2\frac{|D^v|}{|D|}         称为属性a的“固有值”,属性a的可能取值数目越多(即V越大),则IV(a)的值越大。

此时我们需要注意的是:增益率准则对可取值数目较少的属性有所偏好,因此,C4.5算法并不是直接选择增益率最大的候选划分属性,而是先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

1.3 基尼指数

一般的,基尼指数越小,数据集的纯度越高。

基尼值的定义为:

                                         

                                                           =1-\sum_{k=1}^{n}p_k^2

基尼系数的定义为:

                                       Gain\_index(D,a)=\sum_{v=1}^{V}\frac{|D^v|}{|D|}Gini(D^v)                    

  CARTj决策树就是使用基尼指数来选择最优划分属性,每次选择基尼指数最小的属性进行划分。

 

2、剪枝处理

过拟合:在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时造成决策树分支过多,这时就可能因训练样本学得”太好“了,以至于把训练集自身的一些特点当做所有数据都具有的一般性质而导致过拟合。为了减少这种过拟合带来的风险,我们可以采取的措施是对决策树进行剪枝处理,即去掉一些分支。决策树剪枝的基本策略有”预剪枝“和“后剪枝”,提升决策树的泛化性能。

那么如何判断决策树泛化性能是否提升?

在这里我们一般采用“留出法”,即预留一部分数据用作“验证集”以进行性能评估,比较划分/剪枝前后的验证集精度(即分类正确的样本数占的比例)。

2.1 预剪枝

预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能的提升(即划分前的验证集精度较大),则停止划分并将当前结点标记为叶结点,若划分后的验证集精度较大,则进行预剪枝处理。

2.2 后剪枝

后剪枝是指先从训练集生成一棵完整的决策树,然后自底向上地对非叶节点进行考察,若将该结点对应的子树替换为叶节点能带来决策树泛化性能提升(即剪枝后的验证集精度较大),则将该子树替换为叶结点。

一般情况下,后剪枝决策树比预剪枝决策树会保留更多的分支,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树。但是,后剪枝决策树是在生成完整决策树之后进行的,而且要自底而上地对树中的所有非叶节点进行逐一考察,因此其训练时间开销比预剪枝决策树大得多。

 3、连续值处理              

针对决策树学习中的连续值属性,最简单的策略是二分法,这也是C4.5决策树算法中采用的机制。

给定样本集D和连续属性a,假定a在D上出现了n个不同的取值,从小到大进行排序,记为\{a^1,a^2,...,a^n\}.基于划分点t可将D分为子集D_t^-D_t^+,其中D_t^-包含在属性a上取值不大于t的样本,而D_t^+则包含大于t的样本。显然,对相邻的属性取值a^ia^{i+1}来说,t在区间[a^i,a^{i+1})中取任意值所产生的的划分结果相同。因此,对连续属性a,我们可以考察包含n-1个元素的候选划分点集合

                                                                   T_a=\{\frac{a^i+a^{i+1}}{2}|1\leqslant{i}\leqslant{n-1}\}

即把[a^i,a^{i+1})的中位点作为候选划分点,然后逐个考察这些划分点,选取最优的划分点(即信息增益或增益率最大)进行样本集合的划分。

                                                                  Gain(D,a)=\underset{t\in{T_a}}{max} \; Gain(D,a,t)

                                                                                         =\underset{t\in{T_a}}{max} \; Ent(D)-\sum_{\lambda\in{\{-,+\}}}\frac{|D_t^\lambda|}{|D|}Ent(D_t^\lambda)

其中Gain(D,a,t)是样本集D基于划分点t二分后的信息增益,选择使其最大化的划分点进行划分。

4、缺失值处理

现实中经常会遇到不完整的样本,特别是属性数目较多的情况下,往往会有大量样本出现缺失值,如果简单地放弃不完整样本(即直接删除有缺失值的个案),仅仅使用无缺失值的样本来进行学习,显然是对数据信息的极大浪费而且会大大减少能够利用的样本数。那么我们在不放弃的前提下,如何有效利用含有缺失值的训练样例来进行学习呢?

需要解决的两个问题:

第一,如何在属性值缺失的情况下进行划分属性选择?

第二,给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?

给定训练集D和属性a,令\widetilde{D}表示D在属性a上没有缺失值的样本子集。

对于问题1,显然可以根据\widetilde{D}来判断属性a的优劣。假定属性a中有V个可取值\{a^1,a^2,...,a^V\},令\widetilde{D}^v表示\widetilde{D}在属性a上取值为a^v的样本子集,\widetilde{D}_k表示\widetilde{D}中第k类(k=1,2,...,m)的样本子集。假定为每个样本x赋予一个权重w_x,做一下定义:

                                                                              \rho=\frac{\sum_{x\in{\widetilde{D}}}\: w_x }{\sum_{x\in{D}}\: w_x }

                                                                             \widetilde{p}_k=\frac{\sum_{x\in{\widetilde{D}_k}}\: w_x }{\sum_{x\in{D}}\: w_x }\; \; \: \: \: \: \: \: (1\leqslant k\leqslant m)

                                                                              \widetilde{r}_v=\frac{\sum_{x\in{\widetilde{D}}^v}\: w_x }{\sum_{x\in{D}}\: w_x }\; \; \: \: \: \: \: \: (1\leqslant v\leqslant V)

 可以看出,   \rho表示无缺失值样本所占的比例,\widetilde{p}_k表示无缺失值样本中第k类所占的比例,\widetilde{r}_v表示无缺失值样本中在属性a上取值a^v的样本所占的比例。基于以上定义,可将信息增益的计算推广为:

                                                           Gain(D,a)=\rho \times Gain(\widetilde{D},a)

                                                                                  =\rho \times (Ent(\widetilde{D})-\sum _{v=1}^{V}\widetilde{r}_v\, Ent(\widetilde{D}^v))

                其中                                  

                                                                  Ent(\widetilde{D})=-\sum _{k=1}^{m}\widetilde{p}_k\, log_2\widetilde{p}_k

对于问题2:

若样本\textbf{x}在划分属性a上的取值已知,则将\textbf{x}划入与其取值对应的子节点,且样本权值在子节点中保持为w_x

若样本\textbf{x}在划分属性a上的取值未知,则将\textbf{x}同时划入所有子节点,且样本权值在与属性值a^v对应的子节点中调整为\widetilde{r}_v\cdot w_x,即同一个样本以不同的概率划入到不同的子节点中去。

值得注意的是:在决策树学习开始阶段,根节点中各样本的权重初始化为1,之后的权重可以根据无缺失值样本中各类占的比例可得。

PS:

latex 多行下标学习:https://jingyan.baidu.com/article/59703552e0fae18fc1074043.html

 

 

 

你可能感兴趣的:(决策树,决策树划分,决策树剪枝)