zoukankan      html  css  js  c++  java
  • 浅析决策树的生长和剪枝

    摘要:决策树剪枝策略:先剪枝、后剪枝,用于解决过拟合问题。

    本文分享自华为云社区《浅析决策树的生长和剪枝》,原文作者:chengxiaoli。

    决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系,它是一种监督学习。

    一.决策树模型

    首先说明下什么是决策树呢?决策树是一个类似流程图的树结构:每个内部节点(分支节点/树枝节点)表示一个特征或属性,每个树叶节点代表一个分类。

    在决策树的生长过程中主要会存在的问题是:对于选择分支节点的主观性较强。解决办法:利用信息熵或信息增益解决因为人主观判断问题,只需要计算信息熵或信息增益再排序从而正确分类的过程。

    信息增益的含义 :划分数据集前后信息发生的变化。

    https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202104/29/104959vaiu6ltckioxgsgq.png

    熵:物理学中指物体能量的分布均匀情况,信息熵:对信息的不确定性的度量:公式:H(x)=-sum(plog(p))。信息熵越小,不确定性越小,确定性越大,信息的纯度越高。H(D)是数据集D的熵,计算公式:

    https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202104/29/1050125rxx2fmokza3fbba.png

    Ck是在数据集D中出现k类的数量,N是样本的数量,类别的总数。H(D|A) 是特征A对与数据集D的条件熵,其意义是:在子集Di中Y的分布。计算方法是:

    https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202104/29/105029gh7l9eo0ujlvay6m.png

    GainA(A的信息增益)=H_All(总体的信息熵)-H(A)(以A节点作为划分节点的信息熵)决策树中分支节点选择:信息增益大的作为分支节点信息增益越大,信息熵越小,信息不确定性越小,确定性越大,纯度越高。综合之后信息增益的公式:

    https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202104/29/105046tfj8qfowrhwwc3jk.png

    特征A对训练集D的信息增益比gR(D,A)定义为

    https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202104/29/105056bxmduportpiuzwxz.png

    https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202104/29/1051083owpc8aebw7pkwe3.png

    HA(D)刻画了特征A对训练集D的分辨能力,信息增益率改进由于信息增益偏向特征取值较多的不足之处,使用信息增益率进一步划分决策树。

    以上决策算法:ID3算法-信息增益、C4.5算法-信息增益率。决策树剪枝策略: 先剪枝、后剪枝,用于解决过拟合问题。

    二.ID3和C4.5划分策略

    ID3和C4.5算法的划分思想:根据信息增益或信息增益率选择构建决策树的分支节点,依次递归建树。

    决策树构建的基本步骤:

    (1)如果所有的属性都被用于划分,直接结束;

    (2)计算所有特征的信息增益或信息增益率,选择信息增益较大的(如a节点)值对应的特征进行分类;

    (3)如果使用a节点作为划分节点没有划分完成,接下来使用除去a节点之外的其他特征节点中信息增益较大的进一步进行建立决策树。(递归建立决策树)

    决策树停止停止生长的条件:

    • 如果属性都用于划分,直接结束;如果还有没有被划分的节点,使用多数表决;
    • 如果所有样本都已经分类,直接结束;
    • 定义最大不纯度进行度量;
    • 定义叶子节点的数目;
    • 定义分支节点包含的样本个数。

    三.决策树剪枝

    决策树是充分考虑了所有的数据点而生成的复杂树,有可能出现过拟合的情况,决策树越复杂,过拟合的程度会越高。决策树的构建过程是一个递归的过层,所以必须确定停止条件,否则过程将不会停止,树会不停生长。

    先剪枝:提前结束决策树的增长。预剪枝降低了过拟合的风险,减少了决策树的训练时间开销和测试时间开销.带来了欠拟合的风险。

    后剪枝:是指在决策树生长完成之后再进行剪枝的过程。—— 最小错误剪枝技术(MEP),悲观错误剪枝(MEP)和代价复杂度剪枝(CCP)泛化性能往往优于预剪枝决策树,训练时间开销比未剪枝的决策树和预剪枝的决策树都要大得多。

    总结:

    使用决策树进行分类的优点是非常直观,便于理解,并且执行效率高,执行只需要一次构建,可反复使用。但是对小规模数据集才更有效,而且在处理连续变量时效果不好,较难预测连续字段,在类别较多时,错误增加的比较快。

    参考文献

    [1] 陈雷.深度学习与MindSpore实践[M].清华大学出版社:2020.

    [2] 诸葛越,葫芦娃.百面机器学习[M].人民邮电出版社:2020.

    [3] 阿斯顿.张,李沐.动手学深度学习[M].人民邮电出版社:2020.

    点击关注,第一时间了解华为云新鲜技术~

  • 相关阅读:
    SQL语言
    数组的指针
    Java泛型
    python面向对象(下)
    Java枚举类enum
    理解Java的GC日志
    python生成器
    Java并发编程之ThreadLocal类
    python面向对象(上)
    Java并发编程之闭锁简介
  • 原文地址:https://www.cnblogs.com/huaweiyun/p/14789340.html
Copyright © 2011-2022 走看看