欢迎来到洪卫的博客

人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。
扩大
缩小

Day4 《机器学习》第四章学习笔记

决策树

  前几天学习了《机器学习》的前三章,前三章介绍机器学习的基础知识,接下来,第四章到第十章介绍一些经典而常用的机器学习方法,这部分算是具体的应用篇,第四章介绍了一类机器学习方法——决策树。

3.1 基本流程

  决策树(decision tree)是一类常见的机器学习方法。以二分类任务为例,我们希望从给定训练数据集学得一个模型用以对新示例进行分类,这个把样本分类的任务,可看作对“当前样本属于正类嘛?”这个问题的“决策”或“判定”过程。顾名思义,决策树,就是基于树结构来进行决策的。例如我们对一个好西瓜的判定过程,如下图:

  显然,决策的最终结论是我们的判断结果:“是”或者“不是”好瓜。一般的,1、一颗决策树包含一个根结点、若干个内部结点和若干个叶结点;2、叶结点对应决策结果,其他每个结点则对应一个属性测试;3、每个结点包含的样本集合根据属性测试的结果被划分到子结点中;4、根结点包含样本全集。 从根结点到每个叶结点的路径对应了一个判定测试序列。决策树学习,目的是产生一棵泛化能力强,即处理未见示例能力强的决策树,其基本流程遵循简单且直观的“分而治之(divide-and-conquer)”策略,算法如下:

  显然,决策树的生成是一个递归过程。决策树算法中,有三种情形会导致递归返回:(1)当前结点包含的样本全属于同一类别,无需划分;(2)当前属性集为空,或者所有样本在所有属性上取值相同,无法划分;(3)当前结点包含样本集合为空,不能划分。(在第(2)中情形下,把当前结点标记为叶结点,并将其类别设定为该结点所含样本最多的类别;在第(3)中情形下,同样把当前结点标记为叶结点,但将其类别设定为父结点所含样本最多的类别。这两种情形处理的实质是不同的,(2)是在利用当前结点的后验分布,而(3)则把父结点的样本分布作为当前结点的先验分布。)

4.2 划分选择

  有算法流程看出,决策树学习关键在第8行,即如何选择最优划分属性,一般而言,随着划分过程进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度(purity)”越来越高。

  4.2.1 信息增益  

  “信息熵(information entropy)”是度量样本集合纯度最常用的一种指标。我们假定当前样本集合D中第k类样本所占的比例为pk(k=1,2,…,|y|),则D的信息熵定义为:

Ent(D)的值越小,D的纯度越高(理想情况就是Ent(D)的值小到0,相当于pk=1,这样的话D中样本就全属于同一类)
  假定离散属性a有V个可能的取值{a1, a2, …, aV},若使用a来样本集D进行划分,则产生V个分支结点,其中v个分支结点包含D中所有在属性a上取值为aV的样本。根据信息熵定义式计算出Dv的信息熵,在考虑到不同的分支结点的样本数不同,给分支结点赋予权重|Dv|/|D|,即样本数越多的分支结点的影响越大,于是可计算出用属性a对样本集D进行划分所取得的“信息增益(information gain)”:

  所以,信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升”越大,因此,我们可用信息增益来进行决策树的划分属性选择,即在算法流程4.2图中第8行选择属性。著名的ID3(Iterative Dichotomiser迭代二分器)决策树学习算法[Quinlan, 1986]就是以信息增益为准则来选择划分属性的。

  以表4.1中的西瓜数据集2.0为例:

  该数据集包含17个训练样例,用以学习一棵能够预测没剥开的是不是好瓜的决策树。显然,|y| = 2。在决策树学习开始时,根结点包含D中的所有样例,其中正例占p1 = 8/17 ,反例占p2 = 9/17。于是,根据信息熵定义式计算出根结点的信息熵为:

  然后我们计算出当前属性集合{色泽,根蒂,敲声,纹理,脐部,触感}中每个属性的信息增益。以属性“色泽”为例,他有三个可能的取值:{青绿,乌黑,浅白}。若使用该属性对D进行划分,这可以划分为三个子集,分别记为:D1(色泽=青绿),D2(色泽=乌黑),D3(色泽=浅白)。子集D1包含编号{1,4,6,10,13,17}的样例,其中正例占p1 = 3/6 ,反例占p2 = 3/6,同理写出D2、D3的样例编号,计算出对应正例,反例比例,就可以根据信息熵定义式算出用“色泽”划分之后所得到的3个分支结点的信息熵:

  根据信息增益计算式算出各属性信息增益:


  类似的我们可以计算出其他属性的信息增益:


  显然,属性“纹理”的信息熵最大,于是它被选为划分属性。基于“纹理”对根结点进行划分,进而继续算出其他各属性信息增益:

可看出,“根蒂”、“脐部”、“触感”3个属性均取得了最大的信息增益,可任意选其中一个最为下一步划分属性,类似的,对每个分子结点进行上述操作,最终得到决策树如图4.4所示:

  4.2.2 增益率

  在上面的划分中吗,我们没有将“编号”这一栏作为划分属性,如果以编号作为属性划分样本,将产生17个分支,每个分支结点仅含一个样本,分支结点的纯度最大。然而,这样决策树显然不具有泛化能力,无法对新样本进行有效预测。
实际上,信息增益准则对可取值数目较多的属性有所偏好,为减少这种偏好可能带来的不利影响,著名的C4.5决策树算法[Quinlan, 1993]不直接使用信息增益,而是使用“增益率(gain ratio)”来选择最优划分属性,增益率定义为:

其中

称为属性a的“固有值(intrinsic value)”[Quinlan, 1993].属性a的可能取值数目越多(即V越大),则IV(a)的值越大。
  需注意的是,增益率准则对可取值数目较少的属性有所偏好,因此,C4.5算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式[Quinlan, 1993]:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

  4.2.3 基尼指数

  CART(Classification and Rgression Tree)决策树[Breiman et al. , 1984]使用“基尼指数(Gini index)”来选择划分属性,与4.1采用相同的符号,数据集D的纯度可用基尼值来度量:  Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率,因此,Gini(D)越小,则数据集D的纯度越高。属性a的基尼指数定义为:

   于是,我们在候选属性集合A中,选择那个使得划分后基尼指数最小的属性作为最优划分属性,即

4.3 剪枝处理   

  剪枝(pruning)是决策树学习算法对付“过拟合”的主要手段。在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,这时就可能因为训练样本学得“太好了”,以至于把训练样本集自身的一些特点当作所有数据都具有的一般性质而导致过拟合,因此,可通过主动去掉一些分支来降低过拟合的风险。
决策树剪枝的基本策略有“预剪枝(prepruning)”和“后剪枝(post-pruning)”[Quinlan, 1993]

  4.3.1 预剪枝

  4.3.2 后剪枝

4.4 连续与缺失值

  4.4.1 连续值处理
  4.4.2 缺失值处理

4.5 多变量决策树

  (未完待续)

posted on 2018-05-08 21:55  洪卫  阅读(715)  评论(0编辑  收藏  举报

导航

Copyright©2018 洪卫