决策树(decision tree) 是一种基本的分类与回归方法.本章主要讨论 用于分类的决策树。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为 是 i f − t h e n 是if-then 是if−then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。其主要优点是模型具有可读性,分类速度快。学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型。预测时,对新的数据,利用决策树模型进行分类。决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的修剪。这些决策树学习的思想主要来源于由Quinlan在1986年提出的 ID3算法和1993年提出的C4.5算法,以及由Breiman等人在1984年提出的CART算法。本章首先介绍决策树的基本概念,然后通过ID3和C4.5介绍特征的选择、决策树的生成以及决策树的修剪,最后介绍CART算法.
定义5.1 (决策树) 分类决策树模型 是一种描述对实例进行分类的树形结构。决策树由 结点(node) 和有向边(directed edge) 组成.结点有两种类型:内部结点(intermnal node)和叶结点(leaf node)。 内部结点表示一个特征或属性,叶结点表示一个类.
用决策树分类,从根结点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子结点;这时,每一个子结点对应着该特征的一个取值。如此递归地对实例进行测试并分配,直至达到叶结点。最后将实例分到叶结点的类中。
图5.1是一个决策树的示意图。图中圆和方框分别表示内部结点和叶结点.
可以将决策树看成一个 i f − t h e n if-then if−then规则的集合。将决策树转换成 i f − t h e n if-then if−then规则的过程是这样的:由决策树的根结点到叶结点的每一条路径构建一 条规则;路径上内部结点的特征对应着规则的条件,而叶结点的类对应着规则的结论。决策树的路径或其对应的 i f − t h e n if-then if−then规则集合具有一个重要的性质:互斥并且完备。这就是说,每一个实例都被一条路径或一条规则所覆盖,而且只被一条路径或一条规则所覆盖。这里所谓覆盖是指实例的特征与路径上的特征一致或实例满足规则的条件。
决策树还表示给定特征条件下类的 条件概率分布。这一条件概率分布定义在特征空间的一个划分(partition) 上.。将特征空间划分为互不相交的单元(cel)或区域(region),并在每个单元定义一个类的概率分布就构成了一个条件概率分布,决策树的一条路径对应于划分中的一个单元,决策树所表示的条件概率分布由各个单元给定条件下类的条件概率分布组成。假设 X X X为表示特征的随机变量, Y Y Y为表示类的随机变量,那么这个条件概率分布可以表示为 P ( Y ∣ X ) P(Y|X) P(Y∣X). X X X取值于给定划分下单元的集合, Y Y Y取值于类的集合,各叶结点(单元)上的条件概率往往偏向某一个类,即属于某一类的概率较大。 决策树分类时将该结点的实例强行分到条件概率大的那一类去.
图 5.2 (a) 示意地表示了特征空间的一个划分。图中的大正方形表示特征空间。这个大正方形被若干个小矩形分割,每个小矩形表示一个单元特征空间划分上的单元构成了一个集合, x x x取值为单元的集合,为简单起见,假设只有两类:正类和负类,即 Y Y Y取值为 + 1 +1 +1和 − 1 -1 −1。小矩形中的数字表示单元的类,图 5.2 (b) 示意地表示特征空间划分确定时,特征(单元)给定条件下类的条件概率分布。图 5.2 (b) 中条件概率分布对应于图 5.2 (a) 的划分.当某个单元 c 的条件概率满足 P ( Y = + 1 ∣ X = c ) > 0.5 P(Y=+1|X =c)> 0.5 P(Y=+1∣X=c)>0.5 时,则认为这个单元属于正类,即落在这个单元的实例都被视为正例.图 5.2 © 为对应于图5.2 (b)中条件概率分布的决策树.
决策树学习,假设给定训练数据集
D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x n , y n ) } D = \lbrace(x1, y1), (x2, y2),\cdots,(x_n, y_n)\rbrace D={(x1,y1),(x2,y2),⋯,(xn,yn)}
其中, x i = ( x i ( 1 ) , x i ( 2 ) , ⋯ , x i ( n ) ) x_i = (x_i^{(1)}, x_i^{(2)}, \cdots, x_i^{(n)}) xi=(xi(1),xi(2),⋯,xi(n)) 为输入实例(特征向量), n n n 为特征个数, y i ∈ { 1 , 2 , ⋯ , K } y_i∈\lbrace1,2,\cdots,K\rbrace yi∈{1,2,⋯,K} 为类标记, i = 1 , 2 , ⋯ , N i = 1, 2,\cdots,N i=1,2,⋯,N, N N N为样本容量。学习的目标是根据给定的训练数据集构建一个决策树模型,使它能够对实例进行正确的分类。
决策树学习的策略是以损失函数为目标函数,然后求取其最小化的过程,如下所述,决策树学习的损失函数通常是正则化的极大似然函数。
当损失函数确定以后,学习问题就变为在损失函数意义下选择最优决策树的问题.因为从所有可能的决策树中选取最优决策树是 NP完全问题,所以现实中决策树学习算法通常采用启发式方法,近似求解这一最优化问题.这样得到的决策树是次最优( sub-optimal)的.
决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程。这一过程对应着对特征空间的划分,也对应着决策树的构建。开始,构建根结点,将所有训练数据都放在根结点,选择一个最优特征,按照这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下最好的分类。如果这些子集已经能够被基本正确分类,那么构建叶结点,并将这些子集分到所对应的叶结点中去:如果还有子集不能被基本正确分类,那么就对这些子集选择新的最优特征,继续对其进行分割,构建相应的结点。如此递归地进行下去,直至所有训练数据子集被基本正确分类,或者没有合适的特征为止。 最后每个子集都被分到叶结点上,即都有了明确的类.这就生成了一棵决策树.
特征选择在于选取对训练数据具有分类能力的特征。这样可以提高决策树学习的效率,如果利用一个特征进行分类的结果与随机分类的结果没有很大差别,则称这个特征是没有分类能力的。经验上扔掉这样的特征对决策树学习的精度影响不大。通常特征选择的准则是 信息增益或信息增益比。
例表5.1 是一个由 15 个样本组成的贷款申请训练数据。数据包括贷款申请人的 4 个特征(属性):第 1 个特征是年龄,有 3 个可能值:青年,中年,老年;第 2 个特征是有工作,有 2 个可能值:是,否;第 3 个特征是有自己的房子,有 2 个可能值:是,否;第 4 个特征是信贷情况,有 3 个可能值:非常好,好,一般。表的最后一列是类别,是否同意贷款,取2个值:是,否。
希望通过所给的训练数据学习一个贷款申请的决策树,用以对未来的贷款申请进行分类,即当新的客户提出贷款申请时,根据申请人的特征利用决策树决定是否批准贷款申请。
图5.3 表示从表5.1 数据学习到的两个可能的决策树,分别由两个不同特征的根结点构成。图5.3 (a)所示的根结点的特征是年龄,有3个取值,对应于不同的取值有不同的子结点。图5.3 (b)所示的根结点的特征是有工作,有2个取值,对应于不同的取值有不同的子结点。两个决策树都可以从此延续下去,问题是:究竟选择哪个特征更好些? 这就要求确定 选择特征的准则。直观上,如果一个特征具有更好的分类能力,或者说,按照这一特征将训练数据集分割成子集,使得各个子集在当前条件下有最好的分类,那么就更应该选择这个特征。信息增益(information gain) 就能够很好地表示这一直观的准则.
为了便于说明,先给出 熵与条件熵的定义.在信息论与概率统计中,熵(entropy) 是表示随机变量不确定性的度量。熵值越大,则随机变量的不确定性越高,设 x x x 是一个取有限个值的离散随机变量,其概率分布为
P ( X = x i ) = p i , i = 1 , 2 , ⋯ , n P(X = x_i) = p_i,i = 1,2,\cdots,n P(X=xi)=pi,i=1,2,⋯,n
则随机变量 X X X的熵定义为
H ( X ) = − ∑ i = 1 n p i l o g p i H(X) = -\sum_{i = 1}^np_ilog p_i H(X)=−i=1∑npilogpi
在上式中,若 p i = 0 p_i = 0 pi=0, 则定义 0 l o g 0 = 0 0log0 = 0 0log0=0。通常,上式中的对数以 2 为底或以 e 为底(自然对数),这是熵的单位分别称作比特(bit) 或纳特(nat)。由定义可知,熵只依赖 X X X的分布,而与 X X X的取值无关,所以也可将 X X X的熵记作 H ( p ) H(p) H(p),即
H ( p ) = − ∑ i = 1 n p i l o g p i H(p) = -\sum_{i = 1}^np_ilogp_i H(p)=−i=1∑npilogpi
熵越大,随机变量的不确定性就越大。从定义可验证
0 ≤ H ( p ) ≤ l o g n 0 \leq H(p) \leq logn 0≤H(p)≤logn
当随机变量只取两个值,例如1,0时,即X的分布为
P ( X = 1 ) = p , P ( X = 0 ) = 1 − p , 0 ≤ p ≤ 1 P(X = 1) = p,P(X=0) = 1 - p, 0 \leq p \leq 1 P(X=1)=p,P(X=0)=1−p,0≤p≤1
熵为
H ( p ) = − p l o g 2 p − ( 1 − p ) l o g 2 ( 1 − p ) H(p) = -plog_2p - (1-p)log_2(1-p) H(p)=−plog2p−(1−p)log2(1−p)
这时,熵 H ( p ) H(p) H(p) 随概率 p 变化的曲线如图5.4所示(单位为比特).
当 p = 0 或 p = 1 时 H ( p ) = 0 p=0或p=1时H(p)=0 p=0或p=1时H(p)=0,随机变量完全没有不确定性。当 p = 0.5 时 , H ( p ) = 1 p=0.5时,H(p)=1 p=0.5时,H(p)=1,熵取值最大,随机变量不确定性最大.
设有随机变量 ( X , Y ) (X,Y) (X,Y),其联合概率分布为
P ( X = x i , Y = y j ) = p i j , i = 1 , 2 , ⋯ , n ; j = 1 , 2 , ⋯ , m P(X = x_i,Y = y_j) = p_{ij},i = 1,2,\cdots,n;j = 1,2,\cdots,m P(X=xi,Y=yj)=pij,i=1,2,⋯,n;j=1,2,⋯,m
条件熵 H ( Y ∣ X ) H(Y |X) H(Y∣X)表示在已知随机变量 X X X的条件下随机变量 Y Y Y的不确定性。随机变量 X X X给定的条件下随机变量 Y Y Y的条件(conditional entropy) H ( Y ∣ X ) H(Y|X) H(Y∣X),定义为 X X X给定条件下 Y Y Y的条件概率分布的熵对 X X X的数学期望
H ( Y ∣ X ) = ∑ i = 1 n p i H ( Y ∣ X = x i ) H(Y|X) = \sum_{i = 1}^np_iH(Y|X = x_i) H(Y∣X)=i=1∑npiH(Y∣X=xi)
这里, p i = P ( X = x i ) , i = 1 , 2 , ⋯ , n . p_i = P(X = x_i),i = 1,2,\cdots,n. pi=P(X=xi),i=1,2,⋯,n.
当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称为 经验(empiricalentropy)熵和经验条件熵(empiricalconditional entropy)。此时,如果有0概率,令 0 l o g 0 = 0 0log0=0 0log0=0。信息增益(informationgain)表示得知特征X的信息而使得类Y的信息的不确定性减少的程度.
定义5.2(信息增益)
特征 A A A 对训练数据集 D D D 的信息增益 g ( D , A ) g(D,A) g(D,A),定义为集合 D D D的经验熵 H ( D ) H(D) H(D)与特征 A A A给定条件下 D D D的经验条件熵 H ( D ∣ A ) H(D|A) H(D∣A)之差,即
g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A) = H(D) - H(D|A) g(D,A)=H(D)−H(D∣A)
一般地, 熵 H ( Y ) H(Y) H(Y)与条件熵 H ( Y ∣ x ) H(Y |x) H(Y∣x)之差称为 互信息(mutual information)。决策树学习中的信息增益等价于训练数据集中类与特征的互信息.
决策树学习应用信息增益准则选择特征。给定训练数据集 D D D和特征 A A A,经验熵 H ( D ) H(D) H(D)表示对数据集 D D D进行分类的不确定性。而经验条件熵 H ( D ∣ A ) H(D| A) H(D∣A)表示在特征A给定的条件下对数据集D进行分类的不确定性。那么它们的差,即 信息增益,就表示由于特征 A A A而使得对数据集 D D D的分类的不确定性减少的程度。显然,对于数据集D而言,信息增益依赖于特征,不同的特征往往具有不同的信息增益。信息增益大的特征具有更强的分类能力.
根据信息增益准则的特征选择方法是:对训练数据集(或子集) D,计算其每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征。
设训练数据集为 D D D, ∣ D ∣ |D| ∣D∣ 表示其样本容量,即样本个数。设有 K K K 个类 C k C_k Ck, k = 1 , 2 , ⋯ , K k=1,2,\cdots,K k=1,2,⋯,K, ∣ C k ∣ |C_k| ∣Ck∣ 为属于类 C k C_k Ck 的样本个数, ∑ k = 1 K ∣ C k ∣ = ∣ D ∣ \sum_{k = 1}^K|C_k| = |D| ∑k=1K∣Ck∣=∣D∣。
设特征 A A A 有 n n n 个不同的取值 { a 1 , a 2 , ⋯ , a n } \lbrace a_1,a_2,\cdots,a_n\rbrace {a1,a2,⋯,an},根据特征 A A A 的取值将 D D D 划分为 n n n 个子集 D 1 , D 2 , ⋯ , D n D_1,D_2,\cdots,D_n D1,D2,⋯,Dn, ∣ D i ∣ |D_i| ∣Di∣ 为 D i D_i Di 样本个数, ∑ i = 1 n ∣ D i ∣ = ∣ D ∣ \sum_{i = 1}^n|D_i| = |D| ∑i=1n∣Di∣=∣D∣。记子集 D i D_i Di 中属于类 C k C_k Ck的样本的集合为 D i k D_{ik} Dik,即,|Dk |为Dk的样本个数.于是信息增益的算法如下:
算法 5.1(信息增益算法)
输入:训练数据集 D D D和特征 A A A;
输出:特征 A A A对训练数据集 D D D的信息增益 g ( D , A ) g(D,A) g(D,A)
例5.2 对表 5.1 所给的训练数据集 D D D,根据信息增益准则选择最优特征
(4)
g ( D , A 4 ) = 0.971 − 0.608 = 0.363 g(D,A_4) = 0.971 - 0.608 = 0.363 g(D,A4)=0.971−0.608=0.363
最后,比较各特征的信息增益值.由于特征 A 3 A_3 A3 (有自己的房子)的信息增益值最大,所以选择特征 A 3 A_3 A3 作为最优特征.
信息增益值的大小是相对于训练数据集而言的,并没有绝对意义。在分类问题困难时,也就是说在训练数据集的经验熵大的时候,信息增益值会偏。反之,信息增益值会偏小。使用 信息增益比(infornation gain ratio) 可以对这一问题进行校正,这是特征选择的另一准则.
定义5.3(信息增益比) 特征 A A A 对训练数据集 D D D 的信息增益比 g R ( D , A ) g_R(D,A) gR(D,A) 定义为其信息增益 g ( D , A ) g(D, A) g(D,A) 与训练数据集 D D D 的经验熵 H ( D ) H(D) H(D) 之比:
g R ( D , A ) = g ( D , A ) H ( D ) g_R(D,A) = \frac{g(D,A)}{H(D)} gR(D,A)=H(D)g(D,A)
本节将介绍决策树学习的生成算法。首先介绍 ID3 的生成算法,然后再介绍C4.5中的生成算法,这些都是决策树学习的经典算法.
ID3算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归地构建决策树。具体方法是:从根结点(root node)开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点:再对子结点递归地调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止.最后得到一个决策树. ID3 相当于用极大似然法进行概率模型的选择.
算法 5.2(ID3算法)
例 5.3 对 表5.1 的训练数据集, 利用ID3算法建立决策树
决策树生成算法递归地产生决策树,直到不能继续下去为止。这样产生的树往往对训练数据的分类很准确,但对未知的测试数据的分类却没有那么准确,即出现 过拟合现象。过拟合的原因在于学习时过多地考虑如何提高对训练数据的正确分类,从而 构建出过于复杂的决策树。解决这个问题的办法是考虑决策树的复杂度,对已生成的决策树进行 简化。
在决策树学习中 将已生成的树进行简化的过程称为剪枝(pruning)。具体地,剪枝从已生成的树上裁掉一些子树或叶结点, 并将其根结点或父结点作为新的叶结点,从而简化分类树模型.
本节介绍一种简单的决策树学习的剪枝算法。
决策树的剪枝往往通过 极小化决策树整体的损失函数(loss function)或代价函数(cost function) 来实现。设树 T T T的叶结点个数为 ∣ T ∣ |T| ∣T∣, t t t 是树 T T T 的叶结点,该叶子节点上有 N t N_t Nt 个样本点,其中 k k k 类的样本点有 N t k N_{tk} Ntk 个, k = 1 , 2 , ⋯ , K k = 1,2,\cdots,K k=1,2,⋯,K, H t ( T ) H_t(T) Ht(T) 为叶节点 t t t 上的经验熵, α ≥ 0 α\geq0 α≥0为参数,则决策树学习的损失函数可以定义为
C α ( T ) = ∑ t = 1 T N t H t + α ∣ T ∣ ( 5.11 ) C_α(T) = \sum_{t = 1}^TN_tH_t + α|T| \qquad\qquad \qquad\qquad(5.11) Cα(T)=t=1∑TNtHt+α∣T∣(5.11)
其中经验熵为
H t ( T ) = − ∑ k N t k N t l o g N t k N t ( 5.12 ) H_t(T) = -\sum_k\frac{N_{tk}}{N_t}log\frac{N_{tk}}{N_t} \qquad\qquad \qquad\qquad(5.12) Ht(T)=−k∑NtNtklogNtNtk(5.12)
在损失函数中,将式 (5.11) 右端的第 1 项记作
C ( T ) = ∑ i = 1 T N t H t ( T ) = − ∑ i = 1 T ∑ k = 1 K N t k l o g N t k N t ( 5.13 ) C(T) = \sum_{i = 1}^TN_tH_t(T) = -\sum_{i = 1}^T\sum_{k = 1}^KN_{tk}log\frac{N_{tk}}{N_t} \qquad\qquad(5.13) C(T)=i=1∑TNtHt(T)=−i=1∑Tk=1∑KNtklogNtNtk(5.13)
这时有
C α ( T ) = C ( T ) + α ( T ) ( 5.14 ) C_α(T) = C(T) + α(T)\qquad\qquad \qquad\qquad\qquad(5.14) Cα(T)=C(T)+α(T)(5.14)
式 (5.14) 中, C ( T ) C(T) C(T) 表示模型对 训练数据的预测误差,即模型与训练数据的拟合程度, ∣ T ∣ |T| ∣T∣表示 模型复杂度,参数 a ≥ 0 a≥0 a≥0 控制两者之间的影响。较大的 a a a 促使选择较简单的模型(树), 较小的 a a a 促使选择较复杂的模型(树)。 a = 0 a=0 a=0 意味着只考虑模型与训练数据的拟合程度,不考虑模型的复杂度.
剪枝,就是当 a a a 确定时,选择损失函数最小的模型,即损失函数最小的子树。当 a a a 值确定时,子树越大,往往与训练数据的拟合越好,但是模型的复杂度就越高;相反,子树越小,模型的复杂度就越低,但是往往与训练数据的拟合不好。损失函数正好表示了对两者的平衡.
可以看出,决策树生成只考虑了通过提高信息增益(或信息增益比)对训练数据进行更好的拟合。而决策树剪枝通过优化损失函数还考虑了减小模型复杂度。决策树生成学习局部的模型,而决策树剪枝学习整体的模型。式 (5.11) 或式 (5.14) 定义的损失函数的极小化等价于 正则化的极大似然估计。所以,利用损失函数最小原则进行剪枝就是用正则化的极大似然估计进行模型选择.
图5.6 是决策树剪枝过程的示意图,下面介绍剪枝算法。
分类与回归树(lassification and regression tree, CART)模型由Breiman等人在1984 年提出,是应用广泛的决策树学习方法.。CART同样由特征选择、树的生成及剪枝组成,既可以用于分类也可以用于回归。以下将用于分类与回归的树统称为决策树.
CART是在给定输入随机变量 X X X 条件下输出随机变量 Y Y Y 的 条件概率分布 的学习方法。CART假设决策树是二叉树,内部结点特征的取值为 “是”和“否”**,左分支是取值为“是”的分支,右分支是取值为“否”的分支。这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些单元上确定预测的概率分布,也就是在输入给定的条件下输出的条件概率分布.
决策树的生成就是递归地构建二叉决策树的过程。对回归树用平方误差最小化准则,对分类树用基尼指数(Gini index)最小化准则,进行特征选择生成二叉树.
假设 X X X 与 Y Y Y 分别为输入和输出变量,并且 Y Y Y 是连续变量,给定训练数据集
D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x n , y n ) } D = \lbrace(x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n)\rbrace D={(x1,y1),(x2,y2),⋯,(xn,yn)}
考虑如何生成回归树。一个回归树对应着输入空间(即特征空间)的一个划分以及在划分的单元上的输出值。假设已将输入空间划分为 M M M 个单元 R 1 , R 2 , ⋯ , R M R_1,R_2,\cdots,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}^Mc_mI(x∈R_m) f(x)=m=1∑McmI(x∈Rm)
当输入空间的划分确定时,可以用平方误差 ∑ x i ∈ R m ( y − f ( x i ) ) 2 \sum_{x_i∈R_m}(y - f(x_i))^2 ∑xi∈Rm(y−f(xi))2 来表示回归树对于训练数据的预测误差,用平方误差最小的准则求解每个单元上的最优输出值。易知,单元 R m R_m Rm 上的 c m c_m cm的最优值 c m ^ \hat{c_m} cm^ 是 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∈R_m) c^m=ave(yi∣xi∈Rm)
问题是怎样对输入空间进行划分,这里采用 启发式的方法,选择第 j 个变量 x ( j ) x^{(j)} x(j)和它取的值 s,作为 切分变量(spliting variable) 和 切分点(spliting point),并定义两个区域:
R 1 ( j , s ) = { x ∣ x ( j ) ≤ s } 和 R 2 ( j , s ) = { x ∣ x ( j ) ≥ s } R1(j,s) = \lbrace x|x^{(j)} ≤ s\rbrace \quad和 \quad R2(j,s) = \lbrace x|x^{(j)} ≥ s\rbrace R1(j,s)={x∣x(j)≤s}和R2(j,s)={x∣x(j)≥s}
然后 寻找最优切分变量 j j j 和最优切分点 s s s。具体地,求解
m i n ( j , s ) [ m i n c 1 ∑ x i ∈ R 1 ( j , s ) ( y i − c 1 ) + m i n c 2 ∑ x i ∈ R 2 ( j , s ) ( y i − c 2 ) ] min_{(j,s)}\left[min_{c1}\sum_{x_i∈R_1(j,s)}(y_i - c_1) + min_{c2}\sum_{x_i∈R_2(j,s)}(y_i - c_2)\right] min(j,s)⎣⎡minc1xi∈R1(j,s)∑(yi−c1)+minc2xi∈R2(j,s)∑(yi−c2)⎦⎤
对固定输入变量 j j j 可以找到最优切分点 s s s.
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∈ R_1(j,s))\quad和\quad\hat{c_2} = ave(y_i|x_i∈ R_2(j,s)) c1^=ave(yi∣xi∈R1(j,s))和c2^=ave(yi∣xi∈R2(j,s))
遍历所有输入变量,找到最优的切分变量 j j j,构成一个对 ( j , s ) (j,s) (j,s)。依此将输入空间划分为两个区域.接着,对每个区域重复上述划分过程,直到满足停止条件为止。这样就生成一棵回归树.。这样的回归树通常称为最小二乘回归树(least squaresregression tree),现将算法叙述如下:
分类树用 基尼指数选择最优特征,同时决定该特征的最优二值切分点。
定义5.4 (基尼指数)
分类问题中, 假设有 K K K个类,样本点属于第 k k k 类的概率为 P k P_k Pk,则概率分布的基尼指数定义为
G i n i ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 Gini(p) = \sum_{k = 1}^Kp_k(1-p_k) = 1 - \sum_{k = 1}^Kp_k^2 Gini(p)=k=1∑Kpk(1−pk)=1−k=1∑Kpk2
对于二类分类问题,若样本点属于第1个类的概率是 p p p,则概率分布的基尼指数为
G i n i ( p ) = 2 p ( 1 − p ) Gini(p) = 2p(1-p) Gini(p)=2p(1−p)
对于给定的样本集合D,其基尼指数为
G i n i ( D ) = 1 − ∑ k − 1 K ( ∣ C k ∣ ∣ D ∣ ) 2 Gini(D) = 1-\sum_{k - 1}^K\left(\frac{|C_k|}{|D|}\right)^2 Gini(D)=1−k−1∑K(∣D∣∣Ck∣)2
这里, C k C_k Ck 是 D D D 中属于第 k k k 类的样本子集, K K K 是类的个数
如果样本集合 D D D 根据特征 A A A 是否取某一可能值 a a a 被分割成 D 1 D_1 D1和 D 2 D_2 D2两部分,即
D 1 = { ( x , y ) ∈ D ∣ A ( x ) = a } , D 2 = D − D 1 D1=\lbrace(x,y)∈D|A(x) = a\rbrace,D_2 = D-D_1 D1={(x,y)∈D∣A(x)=a},D2=D−D1
则在特征 A A A 的条件下,集合 D D D 的基尼指数定义为
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,A) = \frac{|D_1|}{|D|}Gini(D_1)+\frac{|D_2|}{D}Gini(D_2) Gini(D,A)=∣D∣∣D1∣Gini(D1)+D∣D2∣Gini(D2)
基尼指数 G i n i ( D ) Gini(D) Gini(D) 表示集合 D D D的不确定性,基尼指数 G i n i ( D , A ) Gini(D, A) Gini(D,A)表示经 A = a A= a A=a 分割后集合 D 的不确定性。基尼指数值越大,样本集合的不确定性也就越大,这一点与熵相似。
图5.7显示二类分类问题中基尼指数 G i n i ( p ) Gini(p) Gini(p)、熵(单位比特)之半 1 2 H ( P ) \frac{1}{2}H(P) 21H(P) 和分类误差率的关系,横坐标表示概率 p p p,纵坐标表示损失。可以看出 基尼指数和熵之半的曲线很接近,都可以近似地代表分类误差率.
例:根据 表5.1 所给训练数据集,应用CART算法生成决策树.