决策树算法,从名字中也可以理解到该算法是以树形结构建立模型的,该算法主要根据分层和分割的方式将预测变量空间划分为一系列简单区域。对某个给定的待预测的观测值,用它所属区域中训练的平均值或众数进行预测。决策树可以分为回归树和分类树,前者用于预测数值,后者用于预测类别。
一、回归树
我们若需要预测数值时,就需要使用到回归树。而创建回归树的步骤也就分为两大部分:
1、将预测变量空间分割成i个不重叠的区域R_1,R_2....R_i。
2、对落入区域R_i的每个观测值作同样的预测,预测值等于R_i上训练集的响应值的简单算术平均。
看上去比较难理解,但是其实是很简单的道理。比如第一步,假设某数据集中有三个数值型变量,现在按照某种方法(后面会介绍)将前两变量划分区域,第三个变量为需要预测的变量:
然后就是第二步,根据预测样本两个变量的取值划分到相应的区域中,然后该样本第三变量的预测值就为区域中的已知样本第三变量的简单算术平均。
现在需要解决的问题是:如何合理地划分区域,构建不重叠的区域R_1,R_2....R_i。
理论上区域可以按照任意规则划分,但是出于模型简化和增强可解释性的考虑,我们将划分区域的目标设定为找到是模型目标变量的残差平方和RSS最小的矩形区域R_1,R_2...R_i,RSS定义为:
其中Y_Ri为第i个区域中训练集预测变量的平均值。但是我们想将划分区域的所有可能计算得到RSS之后比较,是不可能的,尤其当变量个数很多的时候。因此只能采用一种自上而下的贪婪算法:递归二叉分裂。
执行递归二分裂算法时,需先选择预测变量X_a和分割点s,将变量空间分为两个区域
R1(a,s)={x|x_a<s} 和 R2(a,s)={x|x_a>=s},使RSS尽可能少。更进一步,就是我们要找到a和s,使得下面的式子取得最小值:
其中Y_R1是R1(a,s)中训练集的平均值,Y_R2是R2(a,s)中训练集的平均值。我们对每个区域的分割都采用相同的方法,使之每次分割的区域RSS都能达到最小。当然对于区域的分列我们也要给定一个条件,不然会无限地分裂