zoukankan      html  css  js  c++  java
  • 算法入门1(决策树)

      决策树是什么,下面这张图就是决策树:

      

      决策树是一种简单高效并且具有强解释性的模型,广泛应用于数据分析领域。其本质是一颗由多个判断节点组成的树。在使用模型进行预测时,根据输入参数依次在各个判断节点进行判断游走,最后到叶子节点即为预测结果。决策树可以看做一个if-then规则的集合,即如上图的由根结点到叶结点的每一条路径构建一条规则,特征对应规则的条件,叶结点就是结论。每个实例都被一条路径或规则所覆盖,而且只被一条路径或规则覆盖。即实例的特征与那条路径上的特征表现一致。

      我们知道决策树是由一个个判断节点组成,每经过一个判断节点数据就会被拆分一次。在上图中,假设我们先从“体温”来拆分,那么这个拆分到底合不合适、是不是最佳,我们就需要一个量化的指标来进行评价,这个指标称为不纯度。不纯度的选取有多种方法,每种方法也就形成了不同的决策树方法,比如ID3算法使用信息增益作为不纯度;C4.5算法使用信息增益率作为不纯度;CART算法使用基尼系数作为不纯度。

      决策树方法是会把每个特征都试一遍,然后选取那个,能够使分类分的最好的特征,也就是说将A属性作为父节点,产生的纯度增益(GainA)要大于B属性作为父节点,则A作为优先选取的属性。

    一、不纯度

    1.信息增益

      什么是信息增益呢?这与信息论中的熵和条件熵有关。也就是通过信息论的一套来划分数据集。信息增益大的那个特征就是在划分数据时起决定性作用的那个特征。

    2.基尼系数

      基尼不纯度是指将来自集合中的某种结果随机应用于集合中某一数据项的预期误差率。如果集合中的每一个数据项都属于同一分类,那么推测的结果总会是正确的,因此误差率是 0。基尼指数值越大,就表示不确定性越大,所以应选择基尼系数最小的特征及对应切分点作为最优特征。

    二、决策树的生成

    1.ID3算法

      ID3算法的核心是在决策树各个结点上应用信息增益准则来选择特征,递归的构建决策树。从根结点开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值来建立子结点;再对子结点递归的调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止。

    2.CART算法

      CART算法通过样本集合D的基尼系数来进行特征选取。CART全称叫分类与回归树(classification and regression tree),因此可以看到决策树不仅可以做分类,还可以用于回归呢。CART假设决策树是二叉树,左边的分支取值为“是”,右边的分支取值为“否”。

    三、解决过拟合

      决策树容易产生过拟合现象,这样的话虽然对已知的训练数据分类很准确,但对于未知的测试数据就没那么准确了。过拟合的原因是在学习时过多的考虑如何提高对训练样本的正确分类,从而构建了过于复杂的决策树。因此,为了解决过拟合现象,可以对已生成的决策树进行简化,这就是剪枝。上面所介绍的决策树的剪枝过程是相同的,不同的仅仅是对于当前树所用的评价标准不同,也就是上面说过的信息增益、信息增益比或基尼系数。

      剪枝的总体思路如下:

      由完全树T0开始,剪枝部分结点得到T1,再次剪枝部分结点得到T2,直到剪枝到仅剩下树根的那棵树Tk。当然这些树都要保留{T1,T2,....,Tk};

      接着通过交叉验证法在验证数据集上对这k棵树分别进行测试评价,选择损失函数最小的数Tα作为最优子树。

    参考博客:

    http://www.jianshu.com/p/3ef0d7fa92a5?from=jiantop.com

    http://www.jianshu.com/p/6eecdeee5012

     
  • 相关阅读:
    HttpRunner3.X
    基于C++的ByteBuf封装
    关于matlab的配色
    关于样本方差的无偏估计
    使用Python求解Nonogram
    菜鸡的一些力扣记录
    LeetCode链表练习
    C语言中的链表
    Python中的链表简介
    Nebula Graph 源码解读系列 | Vol.03 Planner 的实现
  • 原文地址:https://www.cnblogs.com/yuanninesuns/p/7877871.html
Copyright © 2011-2022 走看看