决策树学习

来源:互联网 发布:软件项目管理ppt 编辑:程序博客网 时间:2024/05/29 09:42

  文中有部分图片和公式来自于周志华《机器学习》一书,再次向周老师表达深深的感激,如有侵权,告知之后可以删除。本文章只是个人用于学习总结。
1. 决策树概念介绍
  决策树是一种在机器学习中常见的学习算法。决策树是一种基于树结构来进行决策分类和回归的,在每一步的决策过程中根据属性值来进行划分,决策过程中提出的每个判定问题就是对某一个属性的测试。一般的,一个决策树通常包含一个根节点,若干的叶子节点和内部节点,叶子节点对应于最后的决策结果,其他每一节点对应于每一个属性测试,从根到叶子节点的一条路径就构成了一个判断序列。决策树学习的目的就是为了学习得到一棵泛化能力较强,可以较好的处理之前没有见到过的数据的过程。下面的这幅图可以很好的说明决策树学习的过程。
这里写图片描述
  从算法的过程中可以看到,算法最关键的步骤在于从所有的属性集中选取最优的属性,在划分的过程中,我们希望每次划分的结果是数据可以越来越纯,最好是每个节点中的数据都是同一个类别,那么怎样来判断数据的纯度呢?
2. 信息增益
  首先定义数据的信息熵,假设在给定的数据中D中有k类样本,则数据的信息熵定义如下:
这里写图片描述
规定在p的值为0时候,熵值为0
  现在假定要利用属性a来对数据进行划分,a一共有V个不同的取值,那么根据属性a不同的取值最后就会产生V个分支节点,可以计算每一个分支节点对应的信息熵,不同节点对应的数据个数也是不相同的,所以可以给每个节点赋予一个权重,利用下面的式子来计算信息增益。
这里写图片描述
  从上面的式子可以看出,信息增益对应的就是用划分之前节点数据的信息熵来减去划分之后各个节点信息熵的加和。一般说来,信息增益反映了数据纯度的变化,信息增益越大,以为着利用这个属性来划分数据取得的效果也越好。在决策树的生成算法中,ID3算法就是采用信息增益的原则来生成决策树的。
3.基尼值数
  CART决策树选择使用基尼系数来生成决策树,数据集D的基尼系数可用一下的公式来定义:
这里写图片描述
基尼系数反映了随机的从数据集中选取两个元素不一致的概率大小,所以,基尼指数越小,表示数据的纯度越纯。
  与信息增益一样,利用属性a来划分数据一样可以得到V个节点,定义属性a的基尼指数为:
这里写图片描述
  所以在生成决策树中,选择那个可以是的数据的基尼指数最小的属性来划分数据。
4.剪枝处理
  利用决策树生成算法(ID3,CART)可以生成一棵满足条件的树,但是在决策树生成的过程中,为了尽可能好的训练样本,决策树分支的过程将会不断的重复,有时候就会造成决策树的分支过多,出现过拟合的情况,而决策树剪枝处理就是为了解决过拟合的情况。常见的决策树剪枝处理可以分为预剪枝和后剪枝两种。
   预剪枝是在决策树的生成过程中对每个节点在划分之前进行判断,若当前节点的划分不能带来决策树泛化能力的提升,则停止划分将当前节点划分为叶子节点。后剪枝则是先生成一棵完整的决策树,然后自下而上的对非叶子节点进行考察,如果将该非叶子节点的子树替换为该节点可以带来泛化能力的提升,则可以将子树替换为叶子节点。
至于如和来判断决策树泛化能力的提升呢?可以将原始的数据集划分为两  个部分,其中一部分用来寻来呢决策树的生成,一部分用来测试决策树的泛化能力,下面分别对预剪枝和后剪枝进行说明。
   在这里我们依旧采用《机器学习》书中第四章节表4.2的数据来进行说明。
这里写图片描述
  表中上面部分的数据为训练集,下部分数据为验证集,在划分之前,所有的样例都是在根节点,若不进行划分,则该节点为叶子节点,戚类别标记为训练样例中出现最多的类别。接下来用用验证集来验证训练出的决策树的泛化能力。在训练集中,总共出现了5个“是”,5个“否”,假设我们采取“是”作为叶子节点的类别,显而易见,这个单节点的决策树在验证集上分类正确率为3/7,大概是42.9%。
   接下来使用脐部这个属性来对所用的样本进行划分,可以将样例分为三个节点,编号1,2,3,14为一组(类别为“是”),编号6,7,15,17(类别为“是”)为一组,编号10,16(类别为“否”)为一组。在验证集上对这个决策树来进行验证,可以计算得到此时分类真确率为5/7,大概是71.4%,大于第一次未进行划分的正确率,所以可以进行这次划分。说明通过这样的一次划分之后,决策树的泛化能力提高了,这样的划分是有必要的。接下来再对刚才划分生成的3个节点采取同样的方法进行划分,例如1,2,3,14这一组的样例,采用色泽属性对其进行划分,可以计算得到划分之后决策树的泛化能力为57.1%,小于之前未划分的泛化能力,所以此次的划分带来的是负面的影响,不进行这样的划分。另外两个节点采用同样的方法进行判断。
这里写图片描述
  预剪枝可以减少决策树中节点的个数,降低了过拟合的风险。由于在预剪枝处理中避免了那些可能会带来决策树泛化能力下降的划分,但如果在这些划分上接着往下划分可能决策树的泛化能力最终是的得到提高的 ,所以预剪枝处理在一定程度上会带来欠拟合。
  后剪枝处理先生成一棵完整的决策树,如图所示:
这里写图片描述
  首先计算决策树的泛化能力为42.7%,先考虑节点6,利用纹理属性进行划分,如将划分之后的三个子节点进行剪枝,都归为节点6,在验证集上计算决策树的泛化能力,计算可知正确率为57.1%,泛话能力得到了提升,所以进行剪枝处理。同理接着计算节点5,计算后决策树的分类正确率为57.1%,没有得到提高,所以不进行剪枝,同样的方法一次向上进行处理。
   一般情况下,后剪枝处理的决策树欠拟合能力风险很小,往往泛化能力也由于预剪枝处理的决策树,但是后剪枝处理往往在生成决策树之后自下而上进行处理的,所以训练计算开支比预剪枝决策树的开支大。
参考
《机器学习》周志华

0 0
原创粉丝点击