《统计学习方法》 读书笔记 第五章

第五章 决策树

概述

  1.可以认为是if-then的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。
  2.主要优点是模型具有可读性,分类速度快。
  3.包括三个步骤:特征选择、决策树的生成和决策树的修剪。

5.1 决策树模型与学习

  决策树的损失函数通常是正则化的极大似然函数。
  现实中决策树算法通常采用启发式方法,近似求解这一最优化问题,这样得到的决策树是次最优的
  决策时常用的算法有ID3、C4.5与CART。

5.2 特征选择

  特征选择在于选取对训练数据具有分类能力的特征,可以提高决策树学习的效率。
  通常特征选择的准则是信息增益或信息增益比。

信息增益

熵表示随机变量不确定性的度量。随机变量X熵的定义为

H(X)=i=1npilogpi H ( X ) = − ∑ i = 1 n p i log ⁡ p i

若p=0,则定义0log0 = 0。当式中的对数以2为底或以e为底,这时熵的单位分别称为比特或者纳特。
当随机变量只取两个值,例如1或0,即X的分布为:
P(X=1)=p,P(X=0)=1p P ( X = 1 ) = p , P ( X = 0 ) = 1 − p

熵为:
H(p)=plog2p(1p)log2(1p) H ( p ) = − p log 2 p − ( 1 − p ) log 2 ( 1 − p )

当p=0或p=1时H(p)=0,随机变量完全没有不确定性,当p=0.5时,H(p)=1,熵取值最大,随机变量不确定性最大。
条件熵H(Y|X)表示在X条件下Y的不确定性:
H(Y|X)=i=1npiH(Y|X=xi) H ( Y | X ) = ∑ i = 1 n p i H ( Y | X = x i )

当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件概率分别称为经验熵和经验条件熵。

信息增益表示得知特征X的信息而使类Y的信息的不确定性减少的程度

  定义5.2 (信息增益) 特征A对训练集D的信息增益g(D,A),定义为集合D的经验熵H(D),与特征A给定条件下D的经验条件熵H(D|A)之差,即

g(D,A)=H(D)H(D|A) g ( D , A ) = H ( D ) − H ( D | A )

  一般的,熵H(Y)与条件熵的差称为互信息。信息增益等价于互信息。

  根据信息增益准则的特征选择方法是,对训练数据集D,计算其每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征。

信息增益比

特征A对训练数据集D的信息增益比 gR(D,A) g R ( D , A ) 定义为其信息增益g(D,A)与训练数据集D关于特征A的值的熵 HA(D) H A ( D )

之比,即

gR(D,A)=g(D,A)HA(D) g R ( D , A ) = g ( D , A ) H A ( D )

5.3 决策树的生成

ID3算法

  ID3算法的核心是在决策树的各个结点用信息增益准则选择特征,递归的构建决策树。具体方法是:从根节点开始,对结点计算所有可能特征的信息增益,选取信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点;再对子结点递归的调用以上方法,构建决策树。直到所有的特征的信息增益均很小或没有特征可以选择为止。

  ID3算法主要用来处理离散性问题,不适合用于处理连续性问题。

算法 (ID3 算法)

输入:训练数据集D,特征集A,阈值 ε ε ;

输出:决策树T

(1)若D中所有实例属于同一类C,则T为单结点树,并将C作为该结点的类标记,返回T;

(2)若A是空集,则T为单结点树,并将D中实例数最大的类C作为该结点的类标记,返回T;

(3)否则,计算A中各特征对D的信息增益,选择信息增益最大的特征。

(4)如果所选择的特征的信息增益小于阈值,则T为单结点树,并将D中实例数最大的类作为该结点的类标记,返回T;

(5)否则,对所选特征的每一个可能值a,依据A=a将D分割为若干非空子集 Di D i ,将 Di D i 中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树T,返回T;

(6)对第i个子结点,以 Di D i 为训练集,以除去已用特征外的其他特征作为特征集,递归的调用(1)~(5)的过程,得到子树并返回。

C4.5的生成算法

C4.5算法与ID3算法相似,只不过用信息增益比代替信息增益来选择特征。

5.4 决策树的剪枝

  如果不进行树的剪枝操作,决策树可能过于复杂,泛化能力差,即出现过拟合。具体的,剪枝过程是从已生成的树上裁掉一些子树或者叶结点,并将其根结点或父结点作为新的叶结点。

  决策树的剪枝往往通过最小化决策树整体的损失函数值来进行的。假设有T个结点,t是树T的叶结点,叶结点上有 Nt N t 个样本点,其中k类的样本点有 Ntk N t k 个,k=1,2,3,…,K,决策树学习的损失函数可以定义为:

Cα(T)=t=1|T|NtHt(T)+α|T| C α ( T ) = ∑ t = 1 | T | N t H t ( T ) + α | T |

其中经验熵为:

Ht(T)=kNtkNtlogNtkNt H t ( T ) = − ∑ k N t k N t log ⁡ N t k N t

|T|表示模型的复杂度, α0 α ≥ 0 控制两者之间的影响,较大的 α α 趋向选择较为简单的树,较小的 α α 趋向选择较为复杂的树,当 α α =0时,只考虑树对数据分类的准确程度,不考虑模型的复杂度。

决策树生成算法学习局部的模型,决策树剪枝算法学习整体的模型

算法 (树的剪枝算法)

输入:生成算法生成的树T,参数

α α

输出:修剪后产生的子树 Tα T α

(1)计算每个结点的经验熵。//为下一步计算损失函数值做打算。

(2)递归地从树的结点向上回缩。

如果剪枝后的整体树的损失函数值小于剪枝前的值,那么进行剪枝,即将父结点变为新的叶结点。

(3)重复步骤(2),得到损失函数值最小的子树。

5.5 CART算法

回归树生成(最小二乘回归树生成算法)

Y是连续变量

输入:训练数据集D;

输出:回归树f(x).

在训练集所在的空间中,递归的将每个区域划分为两个子区域并决定每个子区域上的输出值,构建二叉决策树。

(1)选择最优切分变量和最优切分点s,求解

minj,sminc1xiR1(j,s)(yic1)2+minc2xiR2(j,s)(yic2)2 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 ]

遍历变量j,对固定变量j扫描切分点s,选择使上式最小的对(j,s)。

(2)对选定的对(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ˆ=1NmxiRm(j,s)yi,xRm,m=1,2 c ^ = 1 N m ∑ x i ∈ R m ( j , s ) y i , x ∈ R m , m = 1 , 2

(3)继续对两个子区域调用步骤(1),(2),直至满足停止条件。

(4)将输入空间划分为M个区域,生成决策树。

f(x)=m=1McmˆI(xRm) f ( x ) = ∑ m = 1 M c m ^ I ( x ∈ R m )

分类树的生成

Y是离散变量

基尼指数

分类问题中,假设有K个类,样本点属于第k类的概率为 pk p k ,则概率分布的基尼指数为

Gini(p)=k=1Kpk(1pk)=1k=1Kp2k G i n i ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2

如果样本集合D根据特征A是否取某一可能值a被分割成 D1 D 1 D2 D 2 两部分,则在特征A的条件下,集合D的基尼指数为:

Gini(D,A)=|D1||D|Gini(D1)+|D2||D|Gini(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 )

CART生成算法

输入:训练数据集D,停止计算的条件(样本个数小于预定阈值,或样本的基尼指数小于阈值,或者没有更多特征)。

输出:CART决策树。

根据训练数据集,从根结点开始,递归的对每个结点进行以下操作,构建二叉树。

(1)设结点的训练数据集为D,计算现有特征对该数据集的基尼指数。对每个特征A,对其每个取值a,根据A是否等于a将其分为两类,计算A=a时的基尼指数。

(2)在其所有特征及其所有取值中,选择基尼指数最小的特征及其取值作为最优特征及最优切分点。并将数据划分到两个子结点中。

(3)对两个子结点递归的调用(1),(2),直至满足停止条件。

(4)生成最终的决策树。

CART剪枝

损失函数:

Cα(T)=C(T)+α|T| C α ( T ) = C ( T ) + α | T |

T为任意子树,C|T|为训练数据的预测误差,|T|是子树的叶结点个数

α α 的意义同5.4

CART剪枝算法

输入:CART算法生成的决策树 T0 T 0

输出:最优决策树 Tα T α

(1)设k=0,T= T0 T 0

(2)设 α=+ α = + ∞

(3)自上而下的对各内部结点计算

g(t)=C(t)C(Tt)|Tt|1 g ( t ) = C ( t ) − C ( T t ) | T t | − 1

α=min(α,g(t)) α = min ( α , g ( t ) )

(4)对 g(t)=α g ( t ) = α 的内部结点t进行剪枝,并对叶结点t以多数表决法决定其类,得到树T

(5)设 k=k+1,αk=α,Tk=T k = k + 1 , α k = α , T k = T

(6)如果生成的树不是由根结点及两个叶结点构成的树,则回到步骤(3);否则令 Tk=Tn T k = T n

(7)采用交叉验证法在子树序列中选择最优子树。


通俗说法

对于一棵由CART生成算法生成的决策树,从它的叶结点上面的第一个内部结点开始,尝试剪去每一个这样的叶结点,选择其中 α α 最小的叶结点真正剪去,以此向上重复此过程,直至根结点成为最后一棵子树(单结点树),然后,使用一个验证集按照选定的指标(基尼指数、平方误差)对这些剪枝后的子树进行筛选,选出最佳子树。

详细解释(我觉得OK)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值