从决策树到GBDT & Xgboost(二)

CART

分类与回归树(classification and regression tree)既可以用在分类,也可用在回归,是在给定输入随机变量 X 条件下输出随机变量 Y 的条件概率分布的学习方法。同样的,CART需要生成和剪枝(pruning)。

1.CART是二叉树,每个非叶子节点都有两个孩子。等于递归地构建二叉决策树。可用作回归或分类。

2.对回归树,用平方误差最小化,对分类树,用基尼指数最小化。

很想说虽然使用这些模型或者之后的集成方法,在实操中我们只要调库喂数据就能够完成,底层的工作机理完全不会展示出来,但是我认为了解这些原理是非常有必要的。

生成CART

1. Regression Tree

对于数据集{ X , Y },其中 Y 是连续变量,我们考虑如何实现回归树。一个Regression Tree对应着特征空间的一个划分以及在划分单元上的输出值,假设我们将输入空间划分为 M 单元 R 1 , R 2 , . . . R M ,并且在每个单元上都有一个固定的输出值 c m ,这样回归树模型就可表示为 f ( x ) = m = 1 M c m I ( x R m ) 即对于输入模型的输出。
当输入空间的划分确定时,可以用平方误差来表示训练误差,即

x i R m ( y i f ( x i ) ) 2

用平方误差最小化的准则来求解每个单元上的最优输出值,对
x i R m ( y i f ( x i ) ) 2
上式求梯度可知最优的时候 c ^ m R m 上所有输入实例的输出 y i 均值。
至于这些region怎么划分,用的是启发式的方法。以下便是最小二乘回归树的生成方法:

1. 选择最优切分变量 j 和切分点 s ,求解

m i n j , s [ m i n c 1 x i R 1 ( j , s ) ( y i c 1 ) 2 + m i n c 2 x i R 2 ( j , s ) ( y i c 2 ) 2 ]
遍历变量 j ,对固定的切分变量 j 扫描切分点 s ,使上式达到最小值。

2. 用选定的 ( j , s ) 划分区域,并决定相应的输出值: R 1 ( j , s ) = { x | x ( j ) s } , R 2 ( j , s ) = { x | x ( j ) > s } , c ^ m = 1 N m x i R m ( j , s ) y i
3. 并继续对两个子区域递归调用1和2,直到满足停止条件。
4. 划分为 M 个决策区域,生成回归树 f ( x ) = m = 1 M c ^ m I ( x R m )

j 是划分变量,即是算法开始要选择划分 R 的数据的特征。 s 就是想在这个区域中所划分的boundary,即切分点。
具体的切分思路我看了李航的统计学习方法后感觉未免有点啰嗦了,尤其是上面那么多 m i n 的式子是在是看得人头疼;但是看示例吧,又觉得不得要领。

特征的切分可以用这个简单的例子来看,大家可以把训练集看做一张excel表格,横排是实例,纵列是特征或属性:
1 2 3
2 3 8
6 4 10
那么如果我想从特征0(第一列)以切分点为3,那么我就可以分为
1 2 3
2 3 8

6 4 10
这两个区域。因为上面两个实例,其特征0对应的值小于3,下面的实例大于3嘛。这就是一种划分。可见特征和切分点的组合也可以是很多很多的,CART要找到最优的划分特征和划分点,划分之后再递归地….最优的话,遍历所有输入变量来找最优切分特征和最优切分点…也就是上面步骤1的那个超长的式子.其中 c 1 , c 2 都是该区域内对应的数据集的 y i 的平均值。
找到最优划分之后,集合就如同上面那个只有三个特征和三个实例额数据集那样,划分成了两个部分。我们只需递归的进行划分即可,直到满足条件为止。到最后,每个划分区域的值都是对应的平均值。最后我们就得到了开头的回归树模型。

2. Classification Tree

先介绍下基尼指数吧,它和信息增益、信息增益率同为分类时决定如何分裂的一种指标。TODO

猜你喜欢

转载自blog.csdn.net/qq_38339832/article/details/79655745