上篇文章介绍了CART分类树的实现,CART分类树对于特征值是连续的场景是适用的,但是对于类标记是连续值的场景就不适用了,这时需要采用CART回归树。对于回归算法我们并不陌生,在决策树之前的算法我们学习的所有机器学习的算法都是回归类的算法。我们假设CART回归树的损失函数是:
(1)
是预测结果,
是类标记的样本值。等式两边对
求偏导,得到:
(2)
令,这时得到
的最小值,可得:
(3)
可以看出就是
的平均值,所以可以写成:
(4)
那么对于CART回归树,进行阈值切分的标准,从计算基尼系数变成了计算损失函数。
对于连续特征值,与CART分类树一样,CART回归树算法使用某一阈值进行二元切分,即在特征值的取值范围区间内选择一个阈值t,将数据集切割成两份,然后使用一个数据子集(大于t)构造左子树,使用另一个数据子集(小于等于t)构造右子树。
阈值的选择:
对于CART回归树,可以通过先对样本进行排序,然后对相邻的两个样本的值取平均值作为阈值,通过划分后,计算对应的损失函数是否最小作为判别标准:
(5)
就是对公式(5),遍历所有可能阈值计算值,选择对于
取最小值的阈值作为二元切分的阈值。注意:对于
值的计算,并没有像计算基尼系数一样,按照比例进行分配。
对于不连续的特征值,假设属性A的可能取值是{
},可以选择阈值
,