CART
分类与回归树(classification and regression tree)既可以用在分类,也可用在回归,是在给定输入随机变量 X X 条件下输出随机变量的条件概率分布的学习方法。同样的,CART需要生成和剪枝(pruning)。
1.CART是二叉树,每个非叶子节点都有两个孩子。等于递归地构建二叉决策树。可用作回归或分类。
2.对回归树,用平方误差最小化,对分类树,用基尼指数最小化。
很想说虽然使用这些模型或者之后的集成方法,在实操中我们只要调库喂数据就能够完成,底层的工作机理完全不会展示出来,但是我认为了解这些原理是非常有必要的。
生成CART
1. Regression Tree
对于数据集{
X,Y
X
,
Y
},其中
Y
Y
是连续变量,我们考虑如何实现回归树。一个Regression Tree对应着特征空间的一个划分以及在划分单元上的输出值,假设我们将输入空间划分为单元
R1,R2,...RM
R
1
,
R
2
,
.
.
.
R
M
,并且在每个单元上都有一个固定的输出值
cm
c
m
,这样回归树模型就可表示为
f(x)=∑Mm=1cmI(x∈Rm)
f
(
x
)
=
∑
m
=
1
M
c
m
I
(
x
∈
R
m
)
即对于输入模型的输出。
当输入空间的划分确定时,可以用平方误差来表示训练误差,即
用平方误差最小化的准则来求解每个单元上的最优输出值,对
至于这些region怎么划分,用的是启发式的方法。以下便是最小二乘回归树的生成方法:
1. 选择最优切分变量 j j 和切分点,求解
minj,s[minc1∑xi∈R1(j,s)(yi−c1)2+minc2∑xi∈R2(j,s)(yi−c2)2]
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
s
,使上式达到最小值。
2. 用选定的划分区域,并决定相应的输出值:
R1(j,s)={x|x(j)≤s},R2(j,s)={x|x(j)>s},c^m=1Nm∑xi∈Rm(j,s)yi
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
M
个决策区域,生成回归树
j
j
是划分变量,即是算法开始要选择划分的数据的特征。
s
s
就是想在这个区域中所划分的boundary,即切分点。
具体的切分思路我看了李航的统计学习方法后感觉未免有点啰嗦了,尤其是上面那么多的式子是在是看得人头疼;但是看示例吧,又觉得不得要领。
特征的切分可以用这个简单的例子来看,大家可以把训练集看做一张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的那个超长的式子.其中
c1,c2
c
1
,
c
2
都是该区域内对应的数据集的
yi
y
i
的平均值。
找到最优划分之后,集合就如同上面那个只有三个特征和三个实例额数据集那样,划分成了两个部分。我们只需递归的进行划分即可,直到满足条件为止。到最后,每个划分区域的值都是对应的平均值。最后我们就得到了开头的回归树模型。
2. Classification Tree
先介绍下基尼指数吧,它和信息增益、信息增益率同为分类时决定如何分裂的一种指标。TODO