如何使用决策树来预测(1)--建树原理和剪枝

决策树是机器学习算法中的最好入手的算法之一,利用像树一样的图形来辅助决策,其可解释性强、能够转化为规则、计算速度快,应用非常广泛。在实际应用中,决策树常常作为组合算法的基模型,也被作为白盒模型,用来解释黑盒模型预测结果。本文介绍决策树的剪树原理和剪枝。

一、决策树的基本原理:如何建树和剪枝

下图是我们拿到一个西瓜后,判断其是好瓜还是坏瓜的决策思路,可以概括为建树和剪枝两个步骤建树指的是在树向下生长的时候如何挑选最有解释力度的变量,以及如何选择最优分割点。剪枝指的是避免树长的太过庞大从而引发过拟合等问题,一般有前剪枝和后剪枝。前剪枝主要用于控制树的合成规模,后剪枝用于删除没有意义的分支。

如何使用决策树来预测(1)--建树原理和剪枝_第1张图片

二、建树原理

2.1 信息增益与信息增益率

在ID3算法中,使用信息增益来挑选最有解释力度的变量。要了解信息增益首先要知道信息熵。对于一个有有限个数的离散变量D,信息熵的计算公式如下:

Info(D) = - \sum_{i}^{m} {p_{i}} log({p_{i}})

 m表示随机变量D中的水平个数,p_{i}表示随机变量Di水平下的概率。信息熵衡量的是随机变量的混乱程度,当变量水平较少时,信息熵较小,反之较大。

当引入另一个随机变量A,将原D变量水平分割,此时可以计算在变量A的各水平下随机变量D的信息熵加权,从而得知在引入随机变量A后随机变量D的混乱程度,被称为条件熵,计算公式如下:

Info_{A}(D) = \sum_{j}^{v}\frac{D_{j}}{D} \times InfoD_{j}

计算随机变量D的信息熵与在引入A变量后的条件熵,用户条件熵减去原信息熵得到的就是信息增益,信息增益衡量的就是在增加变量A后,随机变量D的混乱程度或者纯净程度的变化。当变化越大时,变量A对随机变量D的影响就越大,信息增益的计算公式如下:

Gain(D\mid A) = Info_{A}(D) - Info(D)

接下来就可以计算目标变量的信息熵,然后分别计算加入各个变量后的条件熵及其信息增益,选取信息增益最大的变量作为第一个进行分裂,这就是ID3算法的建树原理。(ID3算法允许多叉树出现,模型偏好多水平的变量,C4.5模型用信息增益率解决了这个问题CART树采取控制分叉数量,只做二叉树)

ID3算法的缺点:倾向于选择水平变量较多的变量作为最重要的变量,并且输入变量必须时分类变量。C4.5算法在ID3算法的基础上,将变量筛选的指标由信息增益改为信息增益率,并且加入了连续变量的离散化。信息增益率的计算公式如下:

GainRate(D\mid A) = \frac{Gain(D\mid A)}{Info(D)}

sklearn中C4.5算法只支持数值变量,不支持名义变量,所有变量均当作连续变量处理,因此需要事先对名义变量进行WOE转化,将其转为等级变量。WOE转化的计算公式:

woe_{i} = ln(\frac{good% }{bad% }),既该箱子中好用户占比与坏用户占比的比值的对数,也叫做优势比。

2.2 gini系数

CART算法使用二叉树将预测区间划分为若干子集,该算法可用来分类或者数值预测,其选用最优分割变量的指标是基于基尼系数的。

gini系数的计算方法如下:对于连续变量,将数据按照升序排列,然后从小到大依次以相邻数值的中间值作为阈值,将样本分成两组,计算两组样本输出变量值的差异,也称为异质性。理想的分组应该尽量使两组输出变量的异质性总和达到最小,即纯度最大。gini系数越小,纯度越大,gini系数的计算公式如下:

gini(T) = \sum_{}^{}p_{j}(1-p_{j}) = 1 -\sum_{}^{} p_{j}^{2}

在引入分割变量后的基尼系数为:

gini_{split}(T) = \frac{S_{1}}{S_{2} + S_{2}} gini_{T_{1}} + \frac{S_{2}}{S_{2} + S_{2}} gini_{T_{2}}

三、剪枝

剪枝是为了避免决策树完全生长造成的预测精度提升,但是复杂度提高泛化能力变弱的问题。决策树的剪枝根据方向可分为两种,前剪枝和后剪枝。前剪枝是指通过限制条件,控制树的生长;后剪枝是在树充分生长后,通过一定条件将树结点进行收缩达到剪枝的目的。

前剪枝:限制树的最大深度、控制父结点和子结点的最小样本量或者比例等,来限制树的生长。

后剪枝:计算结点中目标变量预测精度或者误差,在建树时将数据分为两部分,一部分用于训练,而另一部分用于验证,先让决策树充分生长,在修剪过程中不断计算测试样本集的误差,当某结点展开后的误差大于不展开时,则收缩该结点。这是C4.5的剪枝思想。CART树则是综合考虑误差和复杂度来进行剪枝。

以上就是决策树建模的理论部分。

你可能感兴趣的:(决策树,机器学习,人工智能)