欢迎使用CSDN-markdown编辑器

来源:互联网 发布:会java学python 编辑:程序博客网 时间:2024/06/07 12:46

机器学习之决策树CART

概念

    分类和回归树(CART)模型有Breiman等人在1984年提出,是应用广泛的决策树学习方法,CART同样由特征选择、树的生成及树的剪枝组成,既可以用于分类也可以用于回归.

    CART是在给定输入随机变量X条件下输出随机变量Y的条件概率分布的学习方法. CART假设决策树是二叉树, 内部节点特征取值为”是”和”否”, 即这样的决策树等价于递归地二分每一个特征, 将输入空间划分为有限个单元, 并在这些单元上确定预测的概率分布, 也就是在输入给定的条件下输出的条件概率分布.

CART算法分为两个部分:
     (1) 决策树的生成: 基于训练数据集生成决策树, 生成的决策树要尽量大;
     (2) 决策树剪枝: 用验证数据集对已生成的输进行剪枝并选择最优子树, 这是用损失函数最小作为剪枝的标准.

CART生成

    决策树的生成就是递归地构建二叉树的过程. 对回归树用平方误差最小化准则, 对分类树用基尼指数(亦可以用信息增益)最小化准则, 进行特征选择, 生成二叉树.

1. 回归树的生成

    假设XY分别为输入和输出变量, 且Y是连续变量, 给定训练数据集

D=$(x1,y1),(x2,y2),,(xN,yN)

考虑如何生成回归树.
     一个回归树对应着输入空间的一个划分及在划分的单元上的输出值. 假设已将输入空间划分为M个单元R1,,RM, 并且在每个单元Rm上有一个固定的输出值cm, 即模型的输出, 于是回归树的模型可以表示为
f(x)=m=1McmI(xRm)

    当输入空间的划分确定时, 可以用平方误差xiRm(yif(xi))2来表示回归树对训练数据的预测误差, 用平方误差最小的准则求解每个单元上的最优输出值. 显然, 要使的平方误差最小, 那么每个单元Rm上的最优值c^mRm上的所有输入实例xi对应的输出yi的均值, 即
c^m=ave(yi|xiRm)

    问题是怎样对输入空间进行划分. 这里采用启发式的方法, 选择第j个变量x(j)和它的值s, 作为切分变量和切分点, 并定义两个区域:
R1(j,s)={x|x(j)s}R2(j,s)={x|x(j)>s}

然后最小化
minj,sminc1xiR1(j,s)(yic1)2minc2xiR2(j,s)(yic2)2

对固定输入变量j可以找到最优的切分点s.
c^1=ave(yi|xiR1(j,s))c^2=ave(yi|xiR2(j,s))

    遍历所有变量, 找到最优的切分变量j, 构成一个对(j,s), 即找到最优的分类特征及其切分点. 依此将输入空间划分为两个区域. 接着, 对每个区域重复上述划分过程, 直到满足停止条件为止. 这样就得到了一颗回归树. 这样的回归树通常称为最小二乘回归树. 其算法如下:
    最先二乘回归树算法
    输入:训练数据集D;
    输出:回归树f(x).
    在训练数据集所在的输入空间中, 递归地将每个区域划分为两个子区域并决定每个子区域上的输出值, 构建二叉树:
    (1)选择最优切分变量j与切分点s, 求解
minj,sminc1xiR1(j,s)(yic1)2+minc2xiR2(j,s)(yic2)2

遍历变量j, 对固定的切分变量j扫描分点s, 选择使得上式达到最小值的对(j,s).
    (2)用选定的对(j,s)划分区域并决定相应的输出值:
R1(j,s)={x|x(j)s},R2(j,s)={x|x(j)>s}

c^m=1NmxiRm(j,s)yi,   xRm,  m=1,2

    (3)继续对两个子区域调用步骤(1)(2),直至满足条件停止.
    (4)将输入空间划分为M个区域
R1,R2,...,RM
, 生成决策树:
f(x)=m=1Mc^mI(xRm)

原创粉丝点击