机器学习之决策树CART
概念
分类和回归树(CART)模型有Breiman等人在1984年提出,是应用广泛的决策树学习方法,CART同样由特征选择、树的生成及树的剪枝组成,既可以用于分类也可以用于回归.
CART是在给定输入随机变量 X 条件下输出随机变量
Y 的条件概率分布的学习方法. CART假设决策树是二叉树, 内部节点特征取值为”是”和”否”, 即这样的决策树等价于递归地二分每一个特征, 将输入空间划分为有限个单元, 并在这些单元上确定预测的概率分布, 也就是在输入给定的条件下输出的条件概率分布.CART算法分为两个部分:
(1) 决策树的生成: 基于训练数据集生成决策树, 生成的决策树要尽量大;
(2) 决策树剪枝: 用验证数据集对已生成的输进行剪枝并选择最优子树, 这是用损失函数最小作为剪枝的标准.
CART生成
决策树的生成就是递归地构建二叉树的过程. 对回归树用平方误差最小化准则, 对分类树用基尼指数(亦可以用信息增益)最小化准则, 进行特征选择, 生成二叉树.
1. 回归树的生成
假设 X 与
Y 分别为输入和输出变量, 且 Y 是连续变量, 给定训练数据集
D=$(x1,y1),(x2,y2),⋯,(xN,yN)
考虑如何生成回归树.
一个回归树对应着输入空间的一个划分及在划分的单元上的输出值. 假设已将输入空间划分为 M 个单元R1,⋯,RM , 并且在每个单元 Rm 上有一个固定的输出值 cm , 即模型的输出, 于是回归树的模型可以表示为
f(x)=∑m=1McmI(x∈Rm)
当输入空间的划分确定时, 可以用平方误差 ∑xi∈Rm(yi−f(xi))2 来表示回归树对训练数据的预测误差, 用平方误差最小的准则求解每个单元上的最优输出值. 显然, 要使的平方误差最小, 那么每个单元 Rm 上的最优值 c^m 是 Rm 上的所有输入实例 xi 对应的输出 yi 的均值, 即
c^m=ave(yi|xi∈Rm)
问题是怎样对输入空间进行划分. 这里采用启发式的方法, 选择第 j 个变量x(j) 和它的值 s , 作为切分变量和切分点, 并定义两个区域:
R1(j,s)={x|x(j)≤s}和R2(j,s)={x|x(j)>s}
然后最小化
minj,s⎡⎣minc1∑xi∈R1(j,s)(yi−c1)2−minc2∑xi∈R2(j,s)(yi−c2)2⎤⎦
对固定输入变量 j 可以找到最优的切分点s .
c^1=ave(yi|xi∈R1(j,s))和c^2=ave(yi|xi∈R2(j,s))
遍历所有变量, 找到最优的切分变量 j , 构成一个对(j,s) , 即找到最优的分类特征及其切分点. 依此将输入空间划分为两个区域. 接着, 对每个区域重复上述划分过程, 直到满足停止条件为止. 这样就得到了一颗回归树. 这样的回归树通常称为最小二乘回归树. 其算法如下:
最先二乘回归树算法
输入:训练数据集 D ;
输出:回归树f(x) .
在训练数据集所在的输入空间中, 递归地将每个区域划分为两个子区域并决定每个子区域上的输出值, 构建二叉树:
(1)选择最优切分变量 j 与切分点s , 求解
minj,s⎡⎣minc1∑xi∈R1(j,s)(yi−c1)2+minc2∑xi∈R2(j,s)(yi−c2)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=1Nm∑xi∈Rm(j,s)yi, x∈Rm, m=1,2
(3)继续对两个子区域调用步骤(1)(2),直至满足条件停止.
(4)将输入空间划分为 M 个区域, 生成决策树:R1,R2,...,RM
f(x)=∑m=1Mc^mI(x∈Rm)