机器学习之决策树算法(五)ID3、C4.5、CART树等构建过程的思想及剪枝操作

李航《统计学习方法》中的决策树介绍

  • 决策树(decisiontree)是一种基本的分类与回归方法。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。其主要优点是模型具有可读性,分类速度快。
  • 学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型。预测时,对新的数据,利用决策树模型进行分类。
  • 决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的修剪。这些决策树学习的思想主要来源于由Quinlan在1986年提出的ID3算法和1993年提出的C4.5算法,以及由Breiman等人在1984年提出的CART算法。

特征选择

  • 决策树学习的关键在于:在每个节点上如何选择最优划分属性。
  • 在引例中,在根节点上,优先选择了“纹理”作为划分属性,这种选择是有依据的。
  • 一般而言,随着划分过程不断进行,我们希望决策树的分支节点所包含的样本尽可能属于同一类别,即节点的“纯度”越来越高。因此我们要找一个指标,去衡量划分数据集后“纯度提升的幅度”,然后选择能让“纯度提升的幅度”最大的特征去划分数据集。
  • 常用的衡量“纯度提升的幅度”的指标有:信息增益、信息增益率、基尼指数
  • 基于信息增益生成决策树的算法,称为ID3算法。
  • 基于信息增益率生成决策树的算法,称为C4.5算法。
  • 基于基尼指数生成决策树的算法,称为CART算法。
  • 假设有一个训练集,有4个特征A、B、C、D;标记={0,1}。我们发现:无论ABC取什么,标记都和D的取值一样,也就是说,D是最主要的因素。如果用D作为划分特征的话,我们的决策树将会十分精致(模型即简单又准确);如果没选D,那么遗憾了,模型可能会变得复杂(有过拟合的风险),还会额外增加计算量。

使用ID3算法生成决策树

ID3算法是基于信息增益生成决策树的算法。

首先定义“信息熵”,它是度量样本集合纯度的一种指标。假定当前样本集合D中第k类(k=1,2,…,|Y|)样本所占的比例为pk,则D的信息熵定义为

在这里插入图片描述

假设离散属性a有V个可能的取值在这里插入图片描述,若用a来对样本集D进行划分,则会产生V个分支节点,其中第v个分支节点包含了D中所有在属性a上取值为av的样本,记为Dv。计算出Dv的信息熵,再考虑到不同的分支节点所包含的样本数不同,给分支节点赋予权重在这里插入图片描述,即样本数越多的分支节点影响越大,于是可计算出用属性a对样本集D进行划分所获得的“信息增益”:

在这里插入图片描述

信息增益越大,则意味着用属性a来进行划分所获得的“纯度提升的幅度”越大。以根节点为例,对属性集A中的所有属性(色泽、根蒂…触感),分别计算信息增益,取在这里插入图片描述来划分根节点数据集。

下面,演示引例中决策树形成的过程:

机器学习之决策树算法(五)ID3、C4.5、CART树等构建过程的思想及剪枝操作_第1张图片

第一步:

显然,|Y|=2。在决策树开始学习是,根节点包含D中所有样例,其中正例占p1=8/17,反例占p2=9/17。于是根节点的信息熵为:

在这里插入图片描述

第二步:

计算使用属性集合{色泽,根蒂,敲声…}中的哪个属性进行数据集划分可以带来最高的信息增益。

先计算“色泽”:

根据色泽可以将数据集D分为3个子集:

D1包含{1,4,6,10,13,17}(正例p1=3/6,反例占p2=3/6)、D2包含{2,3,7,8,9,15}(正例p1=4/6,反例占p2=2/6)、D3包含{5,11,12,14,16}(正例p1=1/5,反例占p2=4/5).

求每个节点的信息熵:
机器学习之决策树算法(五)ID3、C4.5、CART树等构建过程的思想及剪枝操作_第2张图片

计算使用“色泽”划分数据集后的信息增益:

机器学习之决策树算法(五)ID3、C4.5、CART树等构建过程的思想及剪枝操作_第3张图片

类似的,计算出使用其他属性划分数据集后的信息增益:
机器学习之决策树算法(五)ID3、C4.5、CART树等构建过程的思想及剪枝操作_第4张图片

显然,选择“纹理”划分后信息增益最大,于是,通过“纹理”划分数据集,各分支节点包含样例子集的情况是:
机器学习之决策树算法(五)ID3、C4.5、CART树等构建过程的思想及剪枝操作_第5张图片

第三步:

在每个子节点上递归执行相同的算法,便可得到决策树,如下:

机器学习之决策树算法(五)ID3、C4.5、CART树等构建过程的思想及剪枝操作_第6张图片

使用C4.5算法生成决策树

实际上,信息增益准则对可取值数目较多的属性有所偏好(这种偏好是不好的,他会妨碍我们在节点上找到最优的划分特征,最终导致建立的决策树模型复杂、额外增加计算量。说到底就是这是基于“信息增益”选择特征的缺陷),为减少这种偏好的影响,C4.5算法不直接采用信息增益,而是使用“信息增益率”来选择最优划分特征。信息增益率定义为:

在这里插入图片描述
在这里插入图片描述

需要注意的是:信息增益率对可取值数目较少的属性有所偏好。

因此,C4.5算法使用了一个启发式:先选出信息增益高于平均水平的属性,再从中选择信息增益率最高的

使用CART算法生成决策树

CART算法是基于“基尼指数”选择最优划分属性的,数据集D的纯度可以用基尼值表示:

在这里插入图片描述

直观来说,Gini(D)反映了从数据集D中随机抽取两个样本,其标记不一致的概率(在这里插入图片描述表示随机抽2个样本,标记相同的概率)。因此,Gini(D)越小,则数据集的纯度越高。选择属性a的基尼指数(基尼值减少程度)定义为

在这里插入图片描述

于是,我们要选择在这里插入图片描述(基尼指数最小的特征)作为最优划分属性。

剪枝操作

下述剪枝的过程引自周志华《机器学习》直观易于理解;李航《统计学习方法》中的剪枝是通过定义一个损失函数,然后也是像“后剪枝”一样,递归地从树的叶节点向上回缩。

两人算法的不同点在于:李航的算法不是单单看准确率,而是同时权衡准确率和树的复杂度两个因素,并通过改变参数控制两者的影响力。

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

  • 预剪枝
    预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树准确率提升,则停止划分并将当前结点标记为叶结点;后剪枝则是先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树准确率提升,则将该子树替换为叶节点。
    预剪枝是在建造决策树的过程中执行的,如果发现某个节点划分后准确率没有提高,就禁止划分。
    优点:预剪枝使得决策树的分支都没有“展开”,降低了过拟合的风险,减小了训练时间。
    缺点:有欠拟合的风险。因为有些分支的当前划分虽不能提升准确率、甚至会暂时导致准确率下降,但是在其基础上的后续划分却有可能显著提升准确率。
    机器学习之决策树算法(五)ID3、C4.5、CART树等构建过程的思想及剪枝操作_第7张图片

  • 后剪枝
    后剪枝先从训练集生成一棵完成决策树,然后慢慢砍树,砍的位置:当前决策树叶节点的父节点,砍的条件是:如果能提高准确率就砍。
    优点:欠拟合风险很小,准确率一般优于“预剪枝”决策树。
    缺点:训练时间长。
    机器学习之决策树算法(五)ID3、C4.5、CART树等构建过程的思想及剪枝操作_第8张图片

你可能感兴趣的:(机器学习算法思想及代码实现)