机器学习笔记 第四章决策树

4.1  基本流程

        决策树基于”树“结构进行决策,每个“内部节点”对应于某个属性上的”测试“;每个分支对应于该测试的一种可能结果(即该属性的某个取值);每个”叶结点“对应于一个”预测结果“。决策树基本流程可大致分为学习过程和预测过程。

        学习过程:通过对训练样本的分析来确定”划分属性“(即内部节点所对应的属性)。

        预测过程:将测试示例从根结点开始,沿着划分属性所构成的”判定测试序列“下行,直到叶结点。

        决策树学习的目的是为了产生一棵泛化能力强,即处理未见示例能力强的决策树,其基本流程遵循简单且直观的"分而治之" 策略,如图所示。

        决策树的生成是一个递归过程.在决策树基本算法中,有三种情形会 导致递归返回。
        (1) 当前结点包含的样本全属于同一类别,无需划分;
        (2) 当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;
        (3) 当前结点包含的样本集合为空,不能划分。

4.2  划分选择

        4.2.1  信息增益

        "信息熵"是度量样本集合纯度最常用的一种指标。假定当前样本集合D中第k类样本所占的比例为 p_{k}(k = 1, 2,. . . , |Y|) ,则D的信息熵定义为

        Ent(D)的值越小,则D的纯度越高。信息增益直接以信息熵为基础,计算当前划分对信息熵所造成的变化。

        假定离散属性a有V个可能的取值\left \{ a^{1},a^{2},...,a^{V} \right \},若使用a来对样本集D进行划分,则会产生V个分支结点,其中第v个分支结点包含了D中所有在 属性a上取值为 a^{v}的样本,记为D^{v}。以属性a对数据集D进行划分所获得的信息增益为:

        以以下图表为例,该数据集包含17个训练样例,显然,|y|=2,则根结点的信息熵为

               然后,我们要计算出当前属性集合{色泽,根蒂,敲声,纹理,脐部,触感} 中每个属性的信息增益。以属性”色泽“为例,可能取值为:{青绿,乌黑,浅白},则D^{1}(色泽=青绿),D^{2}(色泽=乌黑),D^{3}(色泽=浅白)。可计算出用”色泽“划分后所获得的3个分支结点的信息熵为。

        于是,属性”色泽“的信息增益为

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

        显然,属性”纹理“的信息增益最大,于是它被选为划分属性,如下图。

        然后,决策树学习算法将每一个分支结点做进一步划分。

        4.2.2  增益率

        信息增益对可取值数目较多的属性有所偏好,但也有明显弱点,例如:考虑”编号“作为一个属性。为了减少这种偏好可能带来的不利影响,故使用”增益率“来选择最优划分属性。

        属性a的可能取值数目越多(即V越大),则IV(a)的值通常就越大。启发式,先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

        4.2.3  基尼指数

        决策树使用”基尼指数“来选择划分属性,其定义式为

        直观来说,Gini(D) 反映了从数据集 中随机抽取两个样本,其类别标记不一致的概率。因此, Gini(D) 越小,则数据集 的纯度越高。属性a的基尼指数定义为

4.3  剪枝处理

        研究表明,划分选择的各种准则虽然对决策树的尺寸有较大影响,但对泛化性能的影响很有限。例如信息增益与基尼指数产生的结果,仅在约2%的情况下不同。剪枝方法和程度对决策树泛化性能的影响更为显著,在数据带噪时甚至可能将泛化性能提升25%。

        为了尽可能正确分类训练样本,有可能造成分支过多,过拟合可主动去掉一些分支来降低过拟合的风险。决策树剪枝的基本策略有"预剪枝" 和"后剪枝"。预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点;后剪枝则是先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。

        4.3.1预剪枝

        预剪枝使得决策树的很多分支都没有"展开”,这不仅降低了过拟合的风险,还显著减少了决策树的训练时间开销和测试时间开销。 但后剪枝过程是在生成完全决策树之后进行的 并且要自底向上地 对树中的所有非叶 结点进 行逐一 考察,因此其训练时间开销比未剪枝决策树 和预 剪枝 决策树都要 大得多。

4.4  缺失值处理

        现实任务中常会遇到不完整样本,即样本的某些属性值缺失。使用带缺失值的样例,需要解决:如何进行划分属性选择?此外,给定划分属性,若样本在该属性上的值缺失,如何进行划分?其基本思路为样本赋权,权重划分。

        仅通过无缺失值的样例来判断划分属性的优劣。学习开始时,根结点包含样例集D中全部17个样例,权重均为1。以属性“色泽”为例,该属性上无缺失值的样例子集\tilde{D}包含14个样例,信息熵为

\tilde{D}^{1}\tilde{D}^{2}\tilde{D}^{3}分别表在属性"色泽"上取值为"青绿" “乌黑"以及"浅白"的样本子集,有

因此,样本子集\tilde{D}上属性"色泽"的信息增益为

于是,样本集D上属性"色泽"的信息增益为

类似地可计算出所有属性在D上的信息增益:


参考文献:《机器学习》周志华

  • 23
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值