算法原理
CART树属于决策树模型,它可以用于分类和回归问题,这两者的不同主要体现在特征选择上,CART分类树基于Gini系数最小化,而CART回归树是基于误差平方和最小化。另外,CART树区别于其他树模型的特点之一是它是一类二叉树模型,每次进行特征选择时都将数据集分成“是”或“否”这两种。本文将讲解CART回归树模型的原理以及程序实现。
模型
已知一组包含nnn个样本的训练集
{xi,yi}i=1n,xi∈Rt,yi∈R\{x_i,y_i\}_ {i=1}^n,x_i\in\mathbb R^t,y_i\in\mathbb R{xi,yi}i=1n,xi∈Rt,yi∈R
其中,每个样本xix_ixi都有ttt个特征(假设每个特征都是连续值),输出变量yiy_iyi也是连续值。现在的目的是希望通过对训练集进行训练,生成决策树。之后往模型中代入新的样本xjx_jxj,得到预测的连续值yjy_jyj。
原理
CART树生成主要包括
1、遍历选择最优特征
2、按特征进行分类
3、迭代前两步
4、停止迭代
遍历选择最优特征
CART回归树的特征选择是基于误差平方和最小化。以一个节点的最优特征选择为例,因为知道一个节点是如何划分的也就可以知道如何划分所有节点,这是一个迭代的过程。假设当前节点的数据集为NNN,依次将每个特征的每个取值sss作为阈值,将数据集分为两类,分别为
N1={(x,y)∣Aj(x)≤s,(x,y)∈N}N_1=\{(x,y)|A_j(x)\leq{s},(x,y)\in{N}\}N1={(x,y)∣Aj(x)≤s,(x,y)∈N}
N2={(x,y)∣Aj(x)>s,(x,y)∈N}N_2=\{(x,y)|A_j(x)>{s},(x,y)\in{N}\}N2={(x,y)∣Aj(x)>s,(x,y)∈N}
其中,Aj(x)A_j(x)Aj(x)表示样本xxx的第jjj个特征的取值,得到这两类数据集后,便可以计算它们的预测输出值y^\hat{y}y^,是它们各自的数据集中yyy变量的均值。它们的预测输出值分别为
y^N1=1∣N1∣∑(x,y)∈N1y\hat{y}_{N_1}=\frac{1}{|N_1|}\sum_{(x,y)\in{N_1}}yy^N1=∣N1∣1(x,y)∈N1∑y
y^N2=1∣N2∣∑(x,y)∈N2y\hat{y}_{N_2}=\frac{1}{|N_2|}\sum_{(x,y)\in{N_2}}yy^N2=∣N2∣1(x,y)∈N2∑y
然后计算这两类的误差平方总和
e(N,j,s)=∑(x,y)∈N1(y−y^N1)2+∑(x,y)∈N2(y−y^N2)2e(N,j,s)=\sum_{(x,y)\in{N_1}}(y-\hat{y}_ {N_1})^2+\sum_{(x,y)\in{N_2}}(y-\hat{y}_ {N_2})^2e(N,j,s)=(x,y)∈N1∑(y−y^N1)2+(x,y)∈N2∑(y−y^N2)2
因为数据集NNN的样本是有限的,样本的特征是有限的,特征的取值也是有限的,因此可以通过遍历所有特征的所有取值,得到一个e(N,j,s)e(N,j,s)e(N,j,s)序列,并从该序列中选择数值最小的一个作为当前节点的特