决策树学习笔记(二)

来源:互联网 发布:软件行业发展前景概述 编辑:程序博客网 时间:2024/06/07 03:14

决策树学习笔记(二)

接着上一篇


接着上一篇笔记决策树学习笔记(一)继续学习,上一篇主要是对决策模型的初步认识和理解以及特征选择的一些规则;接下去就是决策树算法的具体实现和优化,包括决策树生成、剪枝以及分类与回归树(CART)详解。分类与回归树模型还会在后续的提升树学习中结合使用。

做学习笔记确实是一件比较耗时的事情(已经快被实验室项目榨干精力,期盼周末TT),仅剩的空闲时间勉强够我对最近的学习内容做些整理;看完一遍后书本知识再做整理的过程中确实能加深对算法的理解,把算法原理步骤再表达一遍才能发现哪些地方自己并不是很清楚,然后思考、搜索、解答。

5.决策树生成


决策树学习的生成算法主要有ID3算法和C4.5算法,其实它们的生成过程是类似的,前者用信息增益准则选择特征,后者则是加强版—信息增益比。(关于信息增益比的好处上一篇笔记中已经介绍)

ID3算法:在决策树的各个结点上采用信息增益准则选择特征,递归构建决策树。

具体实现:从根结点开始,对当前结点计算所有特征的信息增益,选择信息增益最大的特征作为当前结点特征,然后根据该特征的不同取值构建子结点;接着对新生成带我子结点递归执行以上步骤,直到所有特征的信息增益都很小或者没有特征可选(分类完毕)为止。

书上说:ID3相当于用极大似然法进行概率模型的选择。—这里理解起来需要统计学知识,似懂非懂…

极大似然法是属于数理统计范畴,旨在由果溯因。比如扔一枚骰子(骰子每个面上只标记1或2),现在告诉你扔了n次骰子其中有k次朝上的是1;然后问你这个骰子标记为1的面所占的比例w是多少?极大似然法的思想就是估计当w取值为多少的时候,k次朝上的可能性最大。具体计算方法就是对表达式求最大值,得到参数值估计值:

一般就是对这个表达式求一阶导=0(二阶导<0);

这就是极大似然估计方法的原理:用使概率达到最大的那个w来估计位置参数w。回到ID3,决策树生成的过程可以理解成对决策树模型的参数估计(就是基于特征空间划分的类的概率模型),根据训练数据的特征分布,选择使得模型最契合当前样本分布空间时的条件概率模型。

算法步骤:


算法案例(表数据见上一笔记):


注:ID3算法至考虑了树的生成,即尽可能的是模型拟合当前训练数据集,所以该算法生成的树容易过拟合。

C4.5生成算法:C4.5算法用信息增益比来选择特征,算法过程与ID3算法类似,故不多做阐述。

算法步骤:

6.决策树的剪枝


上一篇将决策树学习的时候就提到决策树生成算法会对当前数据集拟合,但对未知数据的分类预测并没有那么准确,即过拟合现象。解决这个问题的办法就是适当的减少树的复杂度,在决策树学习中将已生成的树进行简化的过程称为剪枝(pruning)。

具体地:剪枝从已生成的树上裁掉一些子树或叶结点,并将其根结点或父结点作为新的叶结点,从而简化分类模型。
剪枝往往通过极小化损失函数来实现,决策树学习的损失函数Ca(T):

|T|为树T叶结点个数,t是树T的叶结点,该叶结点有Nt个样本点,其中k类的样本点有Ntk个.

其中经验熵Ht(T)为:

损失函数第一项可以理解为所有叶结点的经验熵加权和:

损失函数第二项看下书上解释:

看到这里我想到了之前看Ng视频的内容,这部分不就是正则化嘛!有兴趣的同学可以看下coursera上机器学习课程week-3-第5节.

利用损失函数最小原则进行剪枝就是用正则化的极大似然估计进行模型选择。

剪枝算法步骤:



7.CART算法


分类与回归树(classification and regression tree,CART),顾名思义,该算法既可用于分类也可用于回归。同样由特征选择、树的生成及剪枝组成。

CART是在给定输入随机变量X条件下输出随机变量Y的条件概率分布的学习方法。CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支。这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些单元上确定预测的概率分布,也就是在输入给定的条件下输出的条件概率分布。

主要由两步组成:
(1)决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大;
(2)决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准。

注:机器学习中通常将数据分为训练集、测试集、交叉验证数据集。

CART生成
决策树生成就是递归地构建二叉决策树的过程。对回归树用平方误差最小化准则,对分类树用基尼指数最小化准则,进行特征选择生成二叉树。

(1)回归树的生成

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

一个回归树对应着输入空间(即特征空间)的一个划分以及在划分单元上的输出值。假设已将输入空间划分为M个单元R1,R2…,RM,并且在每个单元有一个固定的输出值cm,回归树模型可以表示为:

当输入空间的划分确定时,可以用平方误差来表示回归树对于训练数据的预测误差,用平方误差最小化准则求解每个单元上的最优输出值。单元Rm上的cm最优值是Rm上的所有输入xi对应的输出yi的均值,即

问题关键,输入空间怎么划分,通常采用启发式的方法,选择第j个变量x(j)和它的取值s,作为切分变量和切分点,并定义两个区域:

然后寻找最优切分变量j和最优切分点s,具体地,求解

对固定输入变量j可以找到最优切分点s。

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

最小二乘树生成算法步骤:

CART案例会在后续的提升树算法笔记中提及,但是那只用了树桩。

(2)分类树的生成

分类树用基尼指数选择最优特征,同时决定该特征的最优二值切分点。

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

对于二分类问题,弱样本点属于第一个类的概率为p,则概率分布的基尼指数为

对于给定的样本集合D,其基尼指数为

这里,Ck是D中属于第k类的样本子集,K是类的个数。

如果样本集合D根据特征A是否取某一可能值a被分割成D1和D2两部分,即:
则在特征A的条件下,集合D的基尼指数定义为:
基尼指数Gini(D)表示集合D三维不确定性,基尼指数Gini(D,A)表示经A=a分割后的集合D的不确定性。基尼指数越大,样本集合的不确定性也就越大。读到这里想必已经想到上一博文中说的熵了吧,下面给出它们的对比:

熵H(p)随概率p的变化曲线:

二分类问题中基尼指数Gini(p)\熵(单位比特)之半1/2H(p)和分类误差率的关系:

由上图可看出基尼指数与熵之半的曲线很接近,都可以近似的代表分类误差率。

CART生成算法步骤:

CART生成算法案例:

CART剪枝

CART剪枝算法从“完全生长”的决策树的地段剪去一些子树,使决策树变小,从而能够对未知数据有更准确的预测。CART剪枝算法步骤:

(1)首先从省城算法产生的决策树T0低端不断剪枝,知道T0的根结点,形成一个子序列{T0,T1,…Tn}
(2)通过交叉验证在独立的验证数据集上对子树序列进行测试,从中选择最优子树。

(1)剪枝,形成一个子树序列

CART的剪枝与前面所讲的决策树剪枝大同小异,也是最小化损失函数的过程,即加上正则化项。




(2)在剪枝的子序列T0,T1,…,Tn中通过交叉验证选取最优子树Ta

CART剪枝算法步骤:

8.总结


决策树涉及的内容很广,这两篇笔记涵盖了决策树算法的原理公式(包括熵、基尼指数等概念)、多种决策树生成算法和剪枝算法,看完这些花了我两天的空闲时间,然后过第二遍做笔记也是断断续续接近一周的时间。李航老师的书还是很符合我的学习思维的,接下去要在理解原理的基础上做些实践。决策树算法提出至今已有几十年的时间,它们还在实际生产工作中发挥着重大作用,足见其威力。特别是基于决策树做的一些优化和改进的算法,如GBDT\Xgboost,都是非常简单高效的算法工具。


参考文献:
李航 《统计学习方法》

注:本文以及前一篇博文所有公式图片均来自《统计学习方法》

1 0
原创粉丝点击