zoukankan      html  css  js  c++  java
  • 统计学习笔记之决策树(二)

    1.CART分类树的特征选择

    分类问题中,假设有K个类,样本点属于第k类的概率为,则概率分布的基尼指数定义为:

       

    如果,集合D根据特征A是否取某一可能值a被分割成,在特征A的条件下,集合D的基尼指数定义为:

      

    基尼指数代表了模型的不纯度,基尼指数越小,不纯度越小,特征越好.

     2.CART分类树的生成算法

    输入:训练数据集D,停止计算条件;

    输出:CART决策树.

    根据训练数据集,从根结点开始,递归的对每个结点进行以下操作,构建二叉树:

    (1)计算现有特征对该数据集的基尼指数;

    (2)在所有可能的特征A以及它们所有可能的切分点a中,选择基尼指数最小的特征,以及其对应的切分点作为最优特征和最优切分点,依此从现结点生成两个子结点,将数据集集体依特征分配到两个子结点中去;

    (3)对两个子结点递归的调用(1)(2),直至满足停止条件;

    (4)生成CART决策树

    3.CART回归树的建立

    在CART分类树中,用基尼指数来选择最优特征和最优切分点,而在回归树当中用的是均方差.选择最优切分变量j与切分点s的方式是,求解:

      

      其中的样本输出均值,的样本输出均值。CART分类树采用叶子节点里概率最大的类别作为当前节点的预测类别。而回归树输出不是类别,它采用的是用最终叶子的均值或者中位数来预测输出结果。

    4.CART剪枝思想

      由于决策树算法容易过拟合,导致泛化能力较差,为了解决此问题,便引入了决策树剪枝,即类似于线性回归的正则化,来增强决策树的泛化能力。CART树采用后剪枝,分为两步:一、从生产算法产生的决策树不断剪枝,直到根结点,产生剪枝后的决策树;二、通过交叉验证法在独立的实验数据集上对子树进行测试,选择最优子树。

      在剪枝过程中,计算子树的损失函数:

        

    其中,T为任意子树,是对训练数据的预测误差(如基尼指数),为子树的叶结点个数,为参数,并权衡训练数据的拟合程度与模型的复杂度。表示参数为时的整体损失。偏大时,最优子树偏小,偏小时,最优子树偏大,时,整体树是最优的。

      剪枝时,从整体树开始,对的任意内部结点t,以t为单结点树的损失函数是:

        

      以t为根结点的子树的损失函数是:

        

      当及充分小时,有不等式:

        

    可以这么理解,剪枝后的损失函数值比剪枝前的损失函数值要小.

      当增大时,在某一有:

        

      当再增大时,不等式反向.那么,只要,与t有相同的损失函数值,而t的结点减少,因此t比更可取,对进行剪枝.

       为此,对中每一个内部结点t,计算

        

    它表示剪枝后整体损失函数减少的程度,在中减去最小的,得到的子树作为,同时将最小的设为.为区间的最优子树.如此剪枝下去,直到得到根结点.在这一过程中,不断的增加的值,产生新的区间.

      最后,利用独立的验证数据集,测试子树序列中各棵子树的平均方误差或者基尼指数,值最小的决策树被认为是最优的决策树.在子树序列中,每棵子树都对应一个参数.所以,当最优子树确定时,对应的也就确定下来了,即得到最优决策树.

    5.CART剪枝算法

    输入:CART算法生成的决策树;

    输出:最优决策树.

    (1)设k=0,

    (2)设

    (3)自下而上地对各内部结点t计算,以及

      

      

    这里,表示以t为根结点的子树,是对训练数据的预测误差,的叶结点个数

    (4)对的内部结点t进行剪枝,并对叶结点t以多数表决法决定其类,得到树

    (5)设

    (6)如果不是由根结点及两个叶结点构成的树,返回到(3);否则

    (7)采用交叉验证法在子树序列中选择最优子树

    6.CART树的缺点

    (1)无论是ID3,C4.5还是CART树,都是从根结点开始选择一个特征进行切分,在实际中特征可能由一组特征来决定,如OC1算法就可以解决此问题;

    (2)样本发生一点点变动,树的结构就会有很大改变,为了解决这个,引入了集成学习里的随机森林算法.

  • 相关阅读:
    Windows下 flex + bison 小例子
    MongoDB 启动基于角色的登录认证功能
    多线程中数的原子性加减
    pymongo.errors.OperationFailure: Authentication failed.
    Windows 中 . 和 .. 的区别
    CString常用函数
    string常用函数
    回调函数 小例子
    VS2008兼容安装
    测试代码的执行时间魔法方法%time和%timeit
  • 原文地址:https://www.cnblogs.com/hbwxcw/p/6832403.html
Copyright © 2011-2022 走看看