统计学习方法——第5章 决策树(个人笔记)

统计学习方法——第5章 决策树(个人笔记)

参考《统计学习方法》(第二版)李航

决策树的学习包括三个步骤:特征选择、决策树的生成、决策树的修剪。

5.1 决策树模型与学习

5.1.1 决策树模型

决策树由结点和有向边组成。

结点有两种类型:

①内部结点:内部结点表示一个特征或属性。

②叶节点:叶结点表示一个类。

用决策树分类:

从根结点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子结点;这时,每一个子结点对应着该特征值的一个取值。如此递归下去,直至达到叶结点,最后,将实例分到叶结点的类中。

5.1.2 决策树与if-then规则

5.1.3 决策树与条件概率分布

大致思想如下图

5.1.4 决策树学习

跟kd树学习差不多。

5.2 特征学习

5.2.1 特征选择问题

特征选择就是选取训练数据中具有分类能力的特征,这样才能提高决策树的学习效率。

换句话说,没有分类能力的特征没有用。

例子

 

 5.2.2 信息增益

如果一个特征具有更好的分类能力,或者说,按照这一特征将训练集分割成子集,使得各个子集在当前条件下有最好的分类,那就应该选择这个特征。

信息增益就能够很好的表示这一直观的准则。

随机变量X,其概率分布为

P(X=x_i)=p_i,i=1,\cdots,n

则随机变量的信息熵为

H(X)=-\sum_{i=1}^{n}p_i\log p_i

设随机变量(X,Y),其联合概率分布为

P(X=x_i,Y=y_j)=p_{ij},i=1,\cdots,n;j=1,\cdots,m;

条件熵H(Y|X)表示在X的条件下,是Y的概率:

H(Y|X)=\sum_{i=1}^{n}p_iH(Y|X=x_i)

信息增益表示得知特征X的信息使类Y的信息的不确定性减少(概率增加)的程度。

定义 5.2(信息增益)

特征A对训练数据集D的信息增益g(D,A),定义为:

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

等价于训练数据集中的类与特征的互信息。

算法 5.1(信息增益的算法)

输入:训练数据集D和特征A;

输出:特征A对训练数据集D的信息增益g(D,A)。

(1)计算数据集D的经验熵H(D)

H(D)=-\sum_{k=1}^{K}\frac{|C_k|}{|D|}\log_2\frac{|C_k|}{|D|}

其中K为类别数,C_k为第k类的样本个数,D为所有类别的样本个数。

(2)计算特征A对数据集的经验条件熵H(D|A)

H(D|A)=\sum_{i=1}^{n}\frac{|D_i|}{|D|}H(D_i)=-\sum_{i=1}^{n}\frac{|D_i|}{|D|}\sum_{k=1}^{K}\frac{|D_{ik}|}{|D_i|}\log_2\frac{|D_{ik}|}{|D_i|}

 其中,D_i为特征A的取值将D分为n个子集,i=1,...,n,D_{ik}=D_i\cap C_k,即D_i中属于C_k样本的集合。

(3)计算信息增益

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

 例子

 

5.2.3 信息增益比

以信息增益作为划分训练数据集的特征,存在偏向于选择取值较多的特征的问题。使用信息增益比可以对这一问题进行校正。

定义 5.3(信息增益比)

定义为信息增益与训练数据集D关于特征A的值的熵之比

g_R(D,A)=\frac{g(D,A)}{H_A(D)}

其中g为信息增益,H_A(D)=-\sum_{i=i}^{n}\frac{|D_i|}{|D|}\log_2\frac{|D_i|}{|D|}

5.3 决策树的生成

5.3.1 ID3算法

ID3算法的核心就是在决策树各个节点上应用信息增益准则选择特征,递归地构建决策树。

具体方法:

从根结点开始,对结点计算所有可能的特征值的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子节点;再对子节点递归地调用以上方法,构建决策树;知道所有的特征信息增益均很小或没有特征可以选择为止。

算法 5.2 (ID3算法)

输入:训练数据集D,特征集A阈值\varepsilon

输出:决策树T。

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

(2)若A=\O,则T为单节点树,并将D中实例树最大的类C_k作为该结点的类标记,返回T;

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

(4)如果A_g小于阈值\varepsilon,则置T为单节点树,并将D中实例数最大的类C_k作为该结点的类的标记,返回T;

(5)否则,对A_g的每一可能值a_i,依A_g=a_i,将D分割为若干非空子集D_i,将D_i中实例数最大的类作为标记,构建子节点,由节点及其子节点构成树T,返回T;

(6)对第i个节点,以D_i为训练集,以A-A_g为特征集,递归调用步(1)~步(5),得到子树T_i,返回T_i

例子,会看的明白一点

5.3.2 C4.5的生成算法

选择信息增益比来选择特征,算法步骤跟ID3一样。

5.4 决策树的剪枝

 简化分类树模型,防止过拟合。

设树T的叶节点个数为|T|,t是树T的叶节点,该叶节点有N_t个样本点,其中k类的样本点有N_{tk}个,

则决策树学习的损失函数为

C_\alpha (T)=\sum_{t=1}^{|T|}N_tH_t(T)+\alpha |T|

其中经验熵为

H_t(T)=-\sum_k\frac{N_{tk}}{N_t}\log\frac{N_{tk}}{N_t}

算法5.4 (树的剪枝算法)

输入:生成算法产生的整个树T,参数\alpha

输出:修剪后的子树T_\alpha

(1)计算每个结点的经验熵。

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

设一组叶节点回缩到其父节点之前与之后的整体树分别为T_BT_A,其对应的损失函数值分别为C_\alpha (T_B)C_\alpha (T_A),如果

C_\alpha (T_A)\leq C_\alpha (T_B)

则进行剪枝,将父节点变为新的叶节点。

(3)返回(2),知道不能继续位置,得到损失函数最小的子树。

5.5 CART算法

CART(classification and regression tree,CART)

CART是在给定输入随机变量X条件下输出随机变量Y的条件概率分布的学习方法。

CART算法步骤:

(1)决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大;

(2)决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准。

5.5.1 CART生成

对回归树用平方误差最小化准则,对分类树用基尼指数最小化原则,进行特征选择,生成二叉树。

1. 回归树的生成
 

给定训练数据集

D=\left \{ (x_1,y_1),\cdots,(x_N,y_N) \right \}

一颗回归树对应着输入空间(即特征空间)的一个划分以及划分的单位上的输出值。

选择第j个变量x^{(j)}和它取的值s,作为切分变量和切分点,并定义两个区域

R_1(j,s)=\left \{x|x^{(j)}\leq s \right \}R_2(j,s)=\left \{x|x^{(j)}> s \right \}

求解平方误差,使其最小来寻找最优切分变量j和最优切分点s,

\min_{j,s}\left [ \min_{c_1}\sum_{x_i}(y_i-c_1)^2+\min_{c_2}\sum_{x_i}(y_i-c_2)^2 \right ]

找到最优(j,s)将输入空间划分为两个子区域,最后对每个区域不断重复上述划分步骤,直至满足停止条件为止。

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

输入:训练数据集D

输出:回归树f(x)。

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

\min_{j,s}\left [ \min_{c_1}\sum_{x_i}(y_i-c_1)^2+\min_{c_2}\sum_{x_i}(y_i-c_2)^2 \right ]

(2) 用选定的(j,s)划分区域并决定相应的输出值:

R_1(j,s)=\left \{x|x^{(j)}\leq s \right \},R_2(j,s)=\left \{x|x^{(j)}> s \right \}

\hat{c}_m=\frac{1}{N_m}\sum_{x_i}yi

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

(4)将输入空间划分为M个区域R_1,\cdots,R_M,生成决策树:

f(x)=\sum_{m=1}^{M}\hat{c}_mI

2.分类树的生成

定义 5.4 (基尼系数)分类问题中,假设有K个类,样本点属于第k类的概率为p_k,则概率分布的基尼指数定义为

Gini (p)=\sum_{k=1}^{K}p_k(1-p_k)=1-\sum_{k=1}^{K}p_k^2

对于给定的样本集合D,其基尼指数为

Gini(D)=1-\sum_{k=1}^{K}\left (\frac{|C_k|}{|D|} \right )^2

其中,C_k为D中第k类的样本子集。

算法 5.6(CART生成算法)

输入:训练数据集D,停止计算的条件

输出:CART决策树

(1)设节点的训练数据集为D,计算现有特征对该数据集的基尼指数。此时,对每个特征A,对其可能取的每个值a,根据A=a的测试为“是”或“否”,将D分成D1和D2两部分,然后计算基尼指数。

(2)选择最小基尼指数的特征和切分点,将节点生成两个子节点,将训练数据集依特征分配到两个子节点上。

(3)对两个子节点递归地调用(1),(2),直到满足停止条件。

(4)生成CART决策树

5.5.2 CART剪枝

从决策树底端减去一些子树,使决策树变小,从而对未知数据有更准确地预测。

算法 5.7(CART剪枝算法)

输入:CART算法生成的决策树T_0;

输出:最优决策树T_\alpha

(1)设k=0,T=T_0.

(2)设\alpha =+\infty

(3)自下而上,计算C(T_t),|T_t|以及

g(t)=\frac{C(t)-C(T_t)}{|T_t|-1}

\alpha =min(\alpha ,g(t))

其中T_t为以t为根节点的子树,C(T_t)是对训练数据的预测误差,|T_t|T_t的叶节点树。

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

(5)k=k+1,\alpha _k=\alpha,T_k=T.

(6)如果T_k不是根节点,则回到步骤(2);否则令T_k=T_n

(7)采用交叉验证法在子树序列T_0,\cdots,T_n选取最优子树T_\alpha

 

 

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值