机器学习 决策树

一.概述
1.概念:

决策树(Decision Tree)又称判定树,是1个重要的用于分类的算法,属于有监督学习模型.决策树是1个类似于流程图的树结构.类似于我们平时利用选择做决策的过程,决策树依据实例的各个属性对实例进行逐级判断,从而将全部实例分类.显然,决策树的生成是递归过程.有3种情形会导致递归返回:①当前结点包含的样本全属千同一类别,无需划分(使用当前节点中的类别作为节点类别) ②当前属性集为空或所有样本在所有属性上均取值相同,无法划分(使用当前节点中最多的类别作为节点类别) ③当前结点包含的样本集合为空,无法划分(使用父节点中最多的类别作为节点类别)

2.结构:

决策树在逻辑上以树的形式存在,包含根节点,内部结点,分支叶节点:
①根节点:包含数据集中的所有数据的集合,即最上层的节点或起始节点,也属于内部节点
②内部节点:每个内部节点为1个判断条件,并为包含根节点中满足从根节点到该节点的所有条件(不含)的所有数据的集合.根据内部结点的判断结果,其中的数据会被分到2个或多个子节点中
③分支:每个分支代表1个属性输出,包含在内部节点的判断中得到某个共同结果的所有数据,连接了内部节点及其子节点(内部节点或叶节点)
④叶节点:叶节点表示最终的类别,被包含在该叶节点的数据属于该类别

在这里插入图片描述
3.优缺点
(1)优点:

①直观,便于理解
②对小规模数据集效果较好
③可以自学习,无需使用者了解大量背景知识

(2)缺点:

①对连续变量的处理不好(受阈值选择的影响较大)
②类别较多时,错误增加得较快
③可规模性一般

二.决策树构造算法

共同点:都是贪心算法;都自上而下(从根节点到叶节点)构建决策树
区别:属性选择的度量方法不同(C4.5-gain ratio,CART-gini index,ID3-information gain)

1.ID3算法
(1)信息熵与信息熵增益:

信息熵参见 机器学习.最大熵模型.一 部分

信息熵增益(Entropy Information Gain):信息熵增益表示使用特征 A A A作为节点判断标准时的信息获取量.设没有节点 A A A时数据集 D D D的经验熵(预期需求信息量)为 H ( D ) H(D) H(D),有节点 A A A D D D的经验条件熵为 H ( D   ∣   A ) H(D\,|\,A) H(DA),则信息熵增益为 G a i n ( D , A ) : = H ( D ) − H ( D   ∣   A ) Gain(D,A):=H(D)-H(D\,|\,A) Gain(D,A):=H(D)H(DA)信息获取量的单位为 b i t ( s ) bit(s) bit(s).显然,信息熵增益就是 A A A D D D的互信息.信息增益越大,说明节点对确定性的提升越大

(2)算法原理

ID3算法最早由J. Ross Quinlan于1975年提出.该算法从代表全部训练样本的根节点开始,以信息获取量最大的属性作为选择当前节点的标准(注意:判断标准必须是离散化的,对连续的属性需要进行离散化),然后为各个子节点分别选取判断标准,进行递归直到节点中只剩下1种类型的样本,即到达了叶节点.在下列情况之一发生时即停止递归:
①给定节点中的所有样本都属于同1类
②没有剩余的可用于划分样本的属性(此时按多数样本属于的类决定该样本集属于哪个类)

实例:对如下数据集建立决策树
在这里插入图片描述
首先计算各属性的信息获取量: G a i n ( a g e ) = H ( D ) − H ( D   ∣   a g e )     = − 9 14 log ⁡ 2 9 14 − [ 5 14 ⋅ ( − 2 14 log ⁡ 2 2 14 − 3 14 log ⁡ 2 4 14 )      + 4 14 ⋅ ( − 4 14 log ⁡ 2 4 14 − 0 14 log ⁡ 2 0 14 )   + 5 14 ⋅ ( − 3 14 log ⁡ 2 3 14 − 2 14 log ⁡ 2 2 14 ) ]   = 0.940 b i t s − 0.694 b i t s = 0.246 b i t s   G a i n ( i n c o m e ) = 0.029 b i t s     G a i n ( s t u d e n t ) = 0.151 b i t s      G a i n ( c r e d i t r a t i n g ) = 0.048 b i t s      Gain(age)=H(D)-H(D\,|\,age)\\\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\:\:\,=-\frac{9}{14}\log_2\frac{9}{14}-[\frac{5}{14}·(-\frac{2}{14}\log_2\frac{2}{14}-\frac{3}{14}\log_2\frac{4}{14})\\\qquad\qquad\qquad\qquad\qquad\quad\:\:\:\:+\frac{4}{14}·(-\frac{4}{14}\log_2\frac{4}{14}-\frac{0}{14}\log_2\frac{0}{14})\\\qquad\qquad\qquad\qquad\qquad\qquad\:+\frac{5}{14}·(-\frac{3}{14}\log_2\frac{3}{14}-\frac{2}{14}\log_2\frac{2}{14})]\\\qquad\qquad\quad\:=0.940bits-0.694bits\\=0.246bits\:\\Gain(income)=0.029bits\qquad\qquad\qquad\:\:\:\\Gain(student)=0.151bits\qquad\qquad\qquad\:\:\:\,\\Gain(credit_rating)=0.048bits\qquad\qquad\qquad\qquad\:\:\:\, Gain(age)=H(D)H(Dage)=149log2149[145(142log2142143log2144)+144(144log2144140log2140)+145(143log2143142log2142)]=0.940bits0.694bits=0.246bitsGain(income)=0.029bitsGain(student)=0.151bitsGain(creditrating)=0.048bits由于 0.246 > 0.151 > 0.048 > 0.029 0.246>0.151>0.048>0.029 0.246>0.151>0.048>0.029,故选择 a g e age age作为根节点的判断标准
在这里插入图片描述
之后以此类推

2.C4.5算法
(1)信息熵偏见与信息增益率:

如果只使用信息获取量,决策树会倾向于使用分支较多的属性,最终生成1棵很宽但很浅的树,这可能造成过拟合.比如使用出生的年份甚至月份对顾客进行分类,但这没有意义.这称为信息熵偏见(Entropy Bias).因此需要定义分裂因子(Split Information) S p l i t I n f o r m a t i o n ( D , A ) : = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ log ⁡ 2 ∣ D i ∣ ∣ D ∣ = H ( A ) SplitInformation(D,A):=-\displaystyle\sum_{i=1}^n\frac{|D_i|}{|D|}\log_2\frac{|D_i|}{|D|}=H(A) SplitInformation(D,A):=i=1nDDilog2DDi=H(A)其中 D D D表示分支前的样本集, D i D_i Di表示分支后的各个样本集.再定义信息增益率(Information Gain Ratio): G a i n R a t i o ( D , A ) : = G a i n ( D , A ) S p l i t I n f o r m a t i o n ( D , A ) GainRatio(D,A):=\frac{Gain(D,A)}{SplitInformation(D,A)} GainRatio(D,A):=SplitInformation(D,A)Gain(D,A)

(2)算法原理:

信息增益率准则对分支较少的属性有所偏好,因此C4.5算法并非直接选择增益率最大的属性,而是先从候选属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的属性作为当前节点处的属性

3.分类与回归树
(1)基尼指数:

首先定义基尼值 G i n i ( D ) : = ∑ k = 1 n ∑ k ′ ≠ k p k ( 1 − p k )    = 1 − ∑ k = 1 n p k 2 Gini(D):=\displaystyle\sum_{k=1}^n\displaystyle\sum_{k'≠k}p_k(1-p_k)\\\:\:=1-\displaystyle\sum_{k=1}^np_k^2 Gini(D):=k=1nk=kpk(1pk)=1k=1npk2其中 D D D表示样本集, p k p_k pk表示第 k k k类样本的比例.直观来说,基尼值反映了从数据集 D D D中随机抽取2个样本,其类别标记不一致的概率.因此,基尼值越小,样本集的确定性越高.然后可定义属性 a a a基尼指数(Gini Index) G i n i I n d e x ( D , a ) : = ∑ i m ∣ D i ∣ ∣ D ∣ G i n i ( D i ) GiniIndex(D,a):=\displaystyle\sum_{i}^m\frac{|D_i|}{|D|}Gini(D_i) GiniIndex(D,a):=imDDiGini(Di)其中 D D D表示分支前的样本集, D i D_i Di表示分支后的各个样本集
在这里插入图片描述

(2)算法原理:

分类与回归树(Classification and Regression Trees;CART)选择基尼指数最小的属性作为当前节点处的属性

三.多变量决策树

上述决策树均属于单变量决策树(Univariate Decision Tree),特点是每次分支都只使用1个变量进行决策.这种决策树产生的分类边界全部平行于坐标轴.单变量决策树的结果有较好的可解释性,因为每段划分都直接对应了某个属性取值;但在学习任务的真实分类边界较复杂时,必须使用很多段划分才能获得较好的近似
在这里插入图片描述
若能使用斜的划分边界,则决策树模型将大为简化.多变量决策树(Multivariate Decision Tree)就能实现该目标.在这类决策树中,非叶结点不再是仅利用某个属性,而是利用属性的线性组合进行划分;换言之,每个非叶结点是1个形如 t = ∑ i = 1 d ω i a i t=\displaystyle\sum_{i=1}^dω_ia_i t=i=1dωiai的线性分类器,其中 ω i ω_i ωi是属性 a i a_i ai的权重
在这里插入图片描述

四.解决过拟合
1.决策树过长:

分类过细/层数过多时,容易发生过拟合,因此需要进行"剪枝"(Pruning).剪枝操作又可分为2:"先剪枝"/"预剪枝"(Prepruning):决策树增长到一定程度后就停止增长
②"后剪枝"(Postpruning):生成完整的决策树后取消某些分支
后剪枝决策树通常比先剪枝决策树保留了更多的分支.通常后剪枝决策树的欠拟合风险很小,泛化性能往往优于先剪枝决策树.但后剪枝是在生成完
全决策树后进行的,需要自下向上地对所有非叶结点逐一进行考察,因此其训练时间开销比先剪枝决策树要大得多

2.分支过多:

参见 二.2.(1) 部分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值