首页 > 代码库 > 统计学习笔记之决策树(二)

统计学习笔记之决策树(二)

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)采用交叉验证法在子树序列技术分享中选择最优子树技术分享

统计学习笔记之决策树(二)