CART算法

来源:互联网 发布:java项目经理面试题 编辑:程序博客网 时间:2024/06/17 23:05

一、最小二乘回归树

算法

输入:训练师数据集D=(x1y1)(x2y2)(xnyn), y为连续变量

输出:回归树f(x)

在训练数据集所在输入空间中,递归的将每个区域划分为两个子区域并决定每个子区域上的输出值,构建二叉决策树

  1. 选在最优切分变量(特征)j与切分点s,求解
    minj,s[minc1xiR1(j,s)(yic1)2+minc2xiR2(j,s)(yic2)2]

​ 遍历变量j,对固定的切分变量j扫描且分点s,选择使上式达到最小值的(j,s)

  1. 用选定的(j,s)划分区域并决定相应的输出值:

    R1(j,s)={x|x(j)s}R1(j,s)={x|x(j)s}cm^=1NmxiRm(j,s)yi

  2. 继续对两个子区域调用(1),(2),直到满足停止条件。

  3. 将输入空间划分为M个区域R1,R2,,Rm,生成决策树:

    f(x)=m=1Mcm^I(xRm)

二、分类树的生成

假设有K个类,样本点属于K类的概率为pk,则概率分布的基尼指数定义为

Gini(p)=i=1Kpk(1pk)=1i=1Kp2k

对于给定的样本集合D,其基尼指数为
Gini(D)=1i=1K(|Dk||D|)2

如果样本集合D根据特征A是否取某一可能的值a被分割成D1D2两个部分,则在特征A的条件下集合D的基尼指数为:
Gini(D,A)=|D1||D2|Gini(D1)+|D2||d|Gini(D2)

算法:

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

输出:CART决策树

根据训练数据集,从根节点开始,递归的对每个节点进行一下操作,构建二叉决策树

  1. 设结点的训练数据集为D,计算现有特征对该数据集的基尼指数,此时,对每个特征A,对其可能取得每个值a,根据样本点对A=a的测试为“是”或“否”将D分割成D1,D2两个部分,计算A=a时的基尼指数。
  2. 在所有的特征A以及他们所有可能的切分点a中,选择基尼指数最小的特征以及其对应的切分点。依最优特征与最优切分点,从现节点生成两个子节点,将训练数据集分配到连个子节点中去
  3. 对连个子节点递归的调用(1)、(2),直到满足停止条件。
  4. 生成CART树

算法停止条件是 结点中的样本个数小于预定阈值,或者样本的基尼指数小于预定阈值,或者没有更多特征。

0 0