0. 概述
分类与回归树(classification and regression tree, CART)模型由Breiman等人在1984年提出,是应用广泛的决策树学习方法,既可以用于分类也可以用于回归。
CART是在给定输入随机变量 X X 条件下输出随机变量 Y Y 的条件概率分布的学习方法。主要由以下两步组成:
(1)决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大。
(2)决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标注。
1. CART生成:
决策树的生成就是递归地构建二叉决策树的过程,对回归树用平方误差最小化准则,对分类树用基尼(Gini index)最小化准则,进行特征选择,生成二叉树。
1.1 回归树的生成
一个回归树对应着输入空间(特征空间)的一个划分以及在划分的单元上的输出值。假设已将输入空间划分为 M M 个单元 R1,R2,...,RM R 1 , R 2 , . . . , R M ,并且在每个单元 Rm R m 上有一个固定的输出值 cm c m ,于是回归树模型可以表示为:
f(x)=∑m=1McmI(x∈Rm) f ( x ) = ∑ m = 1 M c m I ( x ∈ R m )
当输入空间的划分确定时,可以用平方误差
∑x∈Rm(yi−f(xi))2 ∑ x ∈ R m ( y i − f ( x i ) ) 2 来表示回归树对于训练数据的预测误差,用平方误差最小的准则求解每个单元上的最优输出值。易知,单元
Rm R m 上的
cm c m 的最优值
c^m c ^ m 是
Rm R m 上的所有输入实例
xi x i 对应的输出
yi y i 的均值,即:
c^m=ave(yi|xi∈Rm) c ^ m = a v e ( y i | x i ∈ R m )
问题是怎么对输入空间进行划分,这里采用启发式的方法,选择第
j j 个变量
x(j) x ( j ) 和它的取值
s s 作为切分变量和切分点,并定义两个区域:
R1(j,s)={x|x(j)≤s} R 1 ( j , s ) = { x | x ( j ) ≤ s } 和
R2(j,s)={x|x(j)>s} R 2 ( j , s ) = { x | x ( j ) > s }
然后寻找最优切分变量 j j 和最优切分点 s s ,求解:
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 。
c^1=ave(yi|xi∈R1(j,s)) c ^ 1 = a v e ( y i | x i ∈ R 1 ( j , s ) ) 和 c^2=ave(yi|xi∈R2(j,s)) c ^ 2 = a v e ( y i | x i ∈ R 2 ( j , s ) )
历遍所有输入变量,找到最优的切分变量 j j ,构成一个对 (j,s) ( j , s ) 。依次将输入空间划分为两个区域,并重复以上过程。
最小二乘回归树生成算法
输入:训练数据集 D D
输出:回归树 f(x) f ( x )
在训练数据集所在输入空间中,递归地将每个区域划分为两个子区域,并决定每个子区域上的输出值,构建二叉决策树:
(1)选择最优切分变量 j j 与切分点 s s ,求解
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 ,对固定的切分变量
j j 扫描切分点
s s ,选择使上式达到最小值的对
(j,s) ( j , s )
(2)用选定的对
(j,s) ( j , s ) 划分区域并决定相应的输出值:
R1(j,s)={x|x(j)≤s},R2(j,s)={x|x(j)>s} R 1 ( j , s ) = { x | x ( j ) ≤ s } , R 2 ( j , s ) = { x | x ( j ) > s }
c^m=1Nm∑xi∈Rm(j,s)yi,x∈Rm,m=1,2 c ^ m = 1 N m ∑ x i ∈ R m ( j , s ) y i , x ∈ R m , m = 1 , 2
(3)继续对两个子区域调用步骤(1),(2),直至满足停止条件。
(4)将输入空间划分为
M M 个区域
R1,R2,...,Rm R 1 , R 2 , . . . , R m ,生成决策树:
f(x)=∑m=1Mc^mI(X∈Rm) f ( x ) = ∑ m = 1 M c ^ m I ( X ∈ R m )
1.2 分类树的生成
分类树采用基尼指数选择最优特征值,同时决定该特征的最优二值切分点。
基尼指数的定义:
分类问题中,假设有 K K 个类,样本点属于第 k k 类的概率为 pk p k ,则概率分布的基尼指数定义为:
Gini(p)=∑k=1Kpk(1−pk)=1−∑p=1Kp2k G i n i ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ p = 1 K p k 2
如果样本集合 D D 根据特征 A A 是否取某一可能值 a a 被分割成 D1 D 1 和 D2 D 2 两部分,即:
D1={(x,y)∈D|A(x)=a},D2=D−D1 D 1 = { ( x , y ) ∈ D | A ( x ) = a } , D 2 = D − D 1
则在特征
A A 的条件下,集合
D D 的基尼系数定义为
Gini(D,A)=D1DGini(D1)+D2DGini(D2) G i n i ( D , A ) = D 1 D G i n i ( D 1 ) + D 2 D G i n i ( D 2 )
基尼指数
Gini(D) G i n i ( D ) 表示集合的不确定性,基尼指数
Gini(D,A) G i n i ( D , A ) 表示经
A=a A = a 分割后集合的不确定性,基尼指数越大,样本集合的不确定性也就越大,这一点与熵相似。
决策树生成算法
输入:训练数据集 D D ,停止计算的条件;
输出:CART决策树
根据训练数据集,从根节点开始,递归地对每个结点进行以下操作,构建二叉决策树:
(1)设结点的训练数据集为 D D ,计算现有特征对该数据集的基尼指数。此时,对每一个特征 A A ,对其可能取的每一个值 a a ,根据样本点对 A=a A = a 的测试为“是”或“否”将 D D 分割为 D1 D 1 和 D2 D 2 两部分,利用
Gini(D,A)=D1DGini(D1)+D2DGini(D2) G i n i ( D , A ) = D 1 D G i n i ( D 1 ) + D 2 D G i n i ( D 2 )
计算
A=a A = a 时的基尼指数。
(2)在所有可能的特征
A A 以及它们所有可能的切分点
a a 中,选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点。依最优特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中取。
(3)对两个子结点递归地调用(1),(2),直至满足停止条件。
(4)生成CART决策树。