CART算法
分类与回归树(CART)是应用广泛的算法,同样由特征选择、树的生成及剪枝组成,可以用于解决分类和回归问题。
ID3算法、C4.5算法分别使用了信息增益、信息增益比来选择特征,他们都使用了包含大量的对数运算的熵模型来计算样本纯度。而CART算法使用基尼系数来代替信息增益(比),基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好。这和信息增益(比)是相反的。
CART决策树的生成过程是递归构建二叉树的过程。对于分类树,使用基尼指数最小化准则;对回归树,使用平方误差最小化准则。
CART回归树生成
构建回归树有两个问题:
(1) 如何得到预测结果?
(2) 如何对输入空间进行划分?
一颗回归树是输入空间的一个划分,以及在划分单元的输出值。假设输入空间已经划分为M个: R 1 , R 2 , . . . , R M R_1, R_2, ..., R_M R1,R2,...,RM,并且在每个单元 R m R_m Rm有一个固定的输出值 c m c_m cm,于是回归树模型可表示为:
f ( x ) = ∑ m = 1 M c m I ( x ∈ R m ) f(x) = \sum_{m=1}^{M} c_m I(x \in R_m) f(x)=m=1∑McmI(x∈Rm)
可以用平方误差 ∑ x i ∈ R m ( y i − f ( x i ) ) 2 \sum_{x_i \in R_m} (y_i - f(x_i))^2 ∑xi∈Rm(yi−f(xi))2来表示回归树的预测误差,用平方误差最小的准则求解每个单元的最优输出值。
对于第一个问题,单元 R m R_m Rm上的 c m c_m cm的最优值 c ^ m \hat c_m c^m是 R m R_m Rm上所有输入实例 x i x_i xi对应的输出 y i y_i yi的均值,即:
c ^ m = a v e ( y i ∣ x i ∈ R m ) \hat{c}_m = ave(y_i \ | \ x_i \in R_m) c^m=ave(yi ∣ xi∈Rm)
那么如何对输入空间进行划分?可以采用启发式的方法,选择样本x的第j个特征 x ( j ) x^{(j)} x(j)和它的均值s作为切分变量和切分点。定义两个区域:
R 1 ( j , s ) = { x ∣ x ( j ) ⩽ s } R 2 ( j , s ) = { x ∣ x ( j ) > s } R_1(j, s) = \{x \ | \ x^{(j)} \leqslant s\}\\ \ R_2(j, s) = \{x \ | \ x^{(j)} > s\} R1(j,s)={
x ∣ x(j)⩽s} R2(j,s)={
x ∣ x(j)>s}
然后寻找最优切分变量 j 和最优切分点 s,具体地就是遍历所有特征的所有切分点,求解:
min j , s [ min c 1 ∑ x i ∈ R 1 ( j , s ) ( y i − c 1 ) 2 + min c 2 ∑ x i ∈ R 2 ( j , s ) ( y i − c 2 ) 2 ] \min_{j, s} \ [ \min_{c_1} \sum_{x_i \in R_1(j,s)} (y_i - c_1)^2 + \min_{c_2} \sum_{x_i \in R_2(j,s)} (y_i - c_2)^2] j,smin [c1minxi∈R1(j,s)∑(yi−c1)2+c2minxi∈R2(j,s)∑(yi−c2)2]
其中, c 1 c_1 c1为R1数据集的样本输出均值, c 2 c_2 c2为R2数据集的样本输出均值:
c ^ 1 = a v e ( y i ∣ x i ∈ R 1 ( j , s ) ) , c ^ 2 = a v e ( y i ∣ x i ∈ R 2 ( j , s ) ) \hat{c}_1 = ave( y_i \ | \ x_i \in R_1(j, s)), \ \hat{c}_2 = ave( y_i \ | \ x_i \in R_2(j, s)) c^1=ave(yi ∣ xi∈R1(j,s)), c^2=ave(yi ∣ xi∈R2(j,s))
遍历所有输入变量,找到最优的切分变量 j,构成一个对(j,s)。依次将输入空间划分为两个区域。对每个区域重复上述划分过程,直到满足停止条件位置,这样的回归树通常称为最小二乘回归树,算法叙述如下:
输入:训练数据集 D D D
输出:回归树 f ( x ) f(x) f(x)
步骤:
-
遍历变量 j j j,对固定的切分变 量 j j j 扫描切分点 s s s,得到满足下面关系的 ( j , s ) (j,s) (j,s)
min j , s [ min c 1 ∑ x i ∈ R 1