《统计学习方法》笔记05:决策树模型
来源:互联网 发布:新概念2和3的区别 知乎 编辑:程序博客网 时间:2024/06/03 12:31
《统计学习方法》笔记05:决策树模型
决策树模型:由训练数据集估计条件概率模型。
学习算法:ID3,L4.5,CART三种。
5.1 预备知识
1. 熵
熵可用来衡量一个随机变量的概率分布的不确定性情况。当随机变量在各取值上概率相同时,熵最大。熵反映了分布的不确定性程度。当分布中各取值概率相同时,不确定性最大,则熵最大。
举例:巴西,德国,中国三国足球联赛,巴西和德国取胜概率远大于中国,不确定性小,可以看做“熵”小;而巴西,德国,阿根廷联赛,三者取胜概率相近,不确定性大,可以看做“熵” 大。计算公式如:
随机变量X共有n种取值,每种取值上的概率与对数乘积的总和。
当各取值上概率相同时,熵最大:
推导如下:
当随机变量只取2个值时,当取值概率为0/1时,熵为0,此时完全没有不确定性。
2.条件熵
如上,熵可反映随机变量X的概率分布的不确定性。有时候,我们还获得了一些和X有关其他信息,将有助于确定X在某些取值上的概率变化,这时X概率分布的不确定性可能会降低。已知其他信息的情况下,X的熵就成了条件熵。
举例:巴西,德国,阿根廷联赛,三者取胜概率相近,不确定性大,“熵” 大;但我们得知巴西全体队员拉肚子,那其获胜可能性变小。球赛整体熵会变小。在这种情况下,就是条件熵。
已知随机变量(X,Y)的联合概率分布为:
条件熵H(Y|X)表示已知X情况下,Y的分布的不确定性。计算如下:
X的取值有n种。
2. 信息增益
信息增益:得知了X信息,使得类Y的信息不确定性减小的程度。也叫作互信息(mutual information),决策树中的信息增益等价于训练集中的类与特征的互信息。
在监督学习中,特征A对训练集D的信息增益:
很明显,信息增益越大,说明不确定性减小的程度越大,该特征越强。该特征的条件熵很小。
算法:求特征A的信息增益
特征A,有n个取值,每个取值下的样本个数为
Dn ,其和为样本总数。输出:
g(D,A) (1)计算经验熵H(D)。当从数据估计中得到概率时,称为经验熵。
H(D)=−∑k=1K|Lk||D|⋅log2|Lk||D|
(2)计算经验条件熵H(D|A):
H(D|A)=−∑i=1n|Di||D|⋅H(Di)
H(Di)=−∑k=1K|Dik|Di⋅log2|Dik|Di
(3)计算特征A的信息增益gain:
g(D,A)=H(D)−H(D|A)
信息增益越大,说明不确定性减小的程度越大,该特征越强。该特征的条件熵很小。举例:银行给某个用户是否发放贷款,特征有用户性别,用户收入等。一般的,发放结果主要看用户的偿还能力,和性别关系不大。
在性别的不同取值(男1、女2)上,发与不发的情况都是各占一半,此时性别的条件熵很大,信息增益就很小;
而在用户收入特征上,在收入不同取值(低1,高2)上,收入高时发放比例很高,收入低时发放比例很低,此时收入的条件熵就很小,信息增益会很大。
则由信息增益知道,收入就是个强特征。
5.2 决策树的生成
1. ID3算法
决策树可看做是if-then-else的集合,以树的形式来看,每个节点是一个判断的特征,根据取值去左子树或者右子树,达到分类的目的。
ID3算法在各个节点上,根据信息增益进行特征选择,递归地构建出决策树。相当于用极大似然法进行概率模型的选择。
对数据集D,在特征集A中选择一个由最大信息增益的特征,可将D分为若干自己
终止条件:特征集为空;或某个节点上同属一类,不用再分;或信息增益值小于Epsilon,不值得去分。
2. L4.5算法
L4.5算法和ID3算法不同之处在于:运用信息增益比来选择特征。其余相同。
3.为什么采用信息增益比?
答:以信息增益划分时,存在偏向于选择取值较多的特征的问题。信息增益比可以对这个问题进行校正。《统计学习方法》P63页。
这个答案没有一定内功,初次悟不到。
举例:上面发贷款的样本中,假设每条样本还有一个用户的身份证号。如果将其作为特征,那么每一个身份证号都可以将样本完全分开,形成了一颗叶子数量很多的,深度只有两层的数。这样计算的身份证号特征的条件熵非常小几乎为0,信息增益值特别大,接近H(D)。但显然这个特征没什么意义。
导致这个偏差的原因就是:该特征可以选择的值过多,每个样本基本一个值,则就是一个类。解决办法:对树分支过多的情况进行惩罚。因此我们将特征A的内部信息计算出来:
然后放在分母位置,该特征上的取值越分散(最极端就是每个样本都有一个值),值越大,最大是log(n),则分母越大,则整体信息增益比越小。起到一定校正作用。
有一个实际计算出的例子,非常直观:
http://blog.csdn.net/olenet/article/details/46433297
5.3 决策树的剪枝
1.剪枝策略
ID3与L4.5生成的树容易过拟合。
原因:学习时总考虑如何提高训练集的准确性。导致树生成后较复杂。
解决:过拟合用结构风险最小化来解决,可加上正则项。考虑树的复杂度,对生成的树简化。该操作称为剪枝(pruning)。
设树T的叶节点个数为
该叶节点的经验熵为:
该节点中分类越纯净,则条件熵越小。说明该节点越强。
我们可定义损失函数,通过极小化损失函数来选择最优树。
第一项反映对训练集的拟合程度,第二项反映模型复杂度。等价于正则化的极大似然估计。
L1范数是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。
L2范数是指向量各元素的平方和然后求平方根。老忘这俩的计算方式。
2.剪枝算法
算法:树的剪枝
输入:生成的树T,参数
α 输出:子树
Tα 过程:
(1)计算每个节点的经验熵。注意是所有节点,虽然我们考虑叶节点比较,但因为不断剪枝时,每个节点都可能变为叶节点。所以计算全部存起来。
(2)递归地从叶节点向上收缩。设有一组叶节点回缩前后的整体树分别为
TB,TA ,对应的损失函数如果是:
Lα(TA)≤Lα(TB)
剪枝后损失函数更小,则说明应该剪枝,将父结点变为新的叶节点。(3)返回(2)直至不能继续为止。得到损失函数最小的子树
Tα 。
注意:每次考虑两个树的损失函数的查,计算可以在局部进行,所以剪枝算法可以由一种动态规划的算法实现。
5.4 CART算法
全称:classification and regression tree(1984年诞生)
即可用于分类,也可用于回归。由三步组成:特征选择,生成树,剪枝。
CART树内部假设为二叉树,每个结点为2分支,是与否。
对回归树:平方误差最小化
对分类树:基尼指数-Gini index
1. 回归树的生成
回归问题,意味着输出是连续值。Y为连续变量。
一个回归树对应特征空间的一个划分,每个划分单元上输出一个值。设现生成了M个空间
回归树模型表示为:
我们用平方误差表示回归树对训练集D的预测误差:
每个区域上的均值为:
如何对空间进行划分?答:采用启发式办法。
选择切分变量和切分值:特征的第
可以将空间划分为两个子空间:
求解在这个划分下的最小值:
我们知道,[ ]括号内的公式,在
这样,我们可以遍历j和s,对每一组情况下,算出[ ]最小值。在所有j,s组合情况下找出一个最小值。此时的j和s就是我们需要的。第一次划分后,对两个子区域迭代这样做,就可以将空间不断细化。
算法:最小二乘回归树生成算法
过程:
在训练集的输入空间中,递归的将每个区域划分为两个子区域,并决定每个子区域的输出值,构建二叉决策树。对每个区域逐个进行:
(1)选择最优切分变量j和切分点s。求解:
minj,s[minc1∑xi∈R1(yi−c1)2+∑xi∈R2(yi−c2)2
遍历j 和s ,对某个j扫描s,使得上式最小的对即为所求。(2)用选好的(j, s)分区,并决定各分区的值。
R1(j,s)={x|x(j)≤s}
每个区域上的均值为:R2(j,s)={x|x(j)>s}
m=2,二分类。Lm^=ave(yi|xi∈Rm) (4)将空间划分为m个区域,生成最小二乘回归决策树:
f(x)=∑m=1MLm⋅I(x∈Rm)
2. 分类树的生成
对分类问题,随机变量在每个类上都有概率。以数据集中各类个数比上总数,极大似然估计,得到离散的概率分布。
基尼系数:
和熵在大小定性上有点像。单增*单减,值在p=0.5最大。
对于样本集合D,基尼指数为
若样本集合D根据特征A是否取a被划分为
算法:CART生成算法
过程:
(1)对D,计算现有特征对D的基尼系数。对每个特征A,对其可能取值将数据集分为D1,D2 ,利用上式计算A=a的基尼系数。(2)对所有A,及其取值a中,选择基尼系数最小的对应的特征及取值,生成两个子节点。
(3)对两个子节点递归调用(1)(2),直至停止条件(节点中样本个数小于预定个数阈值;或者样本集的基尼系数小于预定系数阈值)
3. 剪枝算法
对内部结点t和其子树Tt分析:
当
当
当
当
也就是说,当
(1)为此,我们需要对生成的初始树
我们将
即我们可得到两个序列:
(2)剪枝得到的子树嵌套序列中,我们需要选出最优子树。
从前往后,子树逐渐“凋零”直至根节点,后期将越来越欠拟合;
从后往前,子树逐渐“叶茂”直至原始生成树,越来越过拟合。
选取独立验证集,测试各子树的误差或者基尼系数,值最小的决策树
算法:CART剪枝算法
输入:生成树T0 ;输出:最优子树
过程:
(1)令k=0,T=T0,α=∞ ;(2)自下而上的对内部结点计算
g(t)=L(t)−L(Tt)|Tt|−1
Lα(T)=∑t=1|T|Nt⋅Ht(T)+α|T| (3)对
g(t)=α 的内部结点,剪枝,并对新的叶节点t以多数表决法决定其类别,得到子树。(4)设
k=k+1,αk=α,Tk=T ;(6)采用交叉验证法在子树序列中选择最优子树即可。
总结
(1)分类决策树模型,是表示基于特征对实例进行分类的树的结构。决策树可换成一个if-then规则的集合。也可看做是定义在特征空间划分上的类的条件概率分布。
(2)决策树学习的目的是构建一个与训练集拟合很好,并且复杂度小的决策树。从可能的决策树中直接选取最优决策树是NP完全问题,实际中采用启发式方法学习次优的决策树。
(3)学习算法有ID3,C4.5,CART。学习过程包括:特征选择,生成树,剪枝。特征选择目的在于选择对训练集能够分类的特征。特征选取的准则三种算法分别是信息增益最大,信息增益比最大,基尼系数最小。从根节点开始,递归产生决策树,分别对子树调用过程,不断选取局部最优特征。
(4)由于生成的决策树存在过拟合问题,需要剪枝。从生成的树上剪掉一些叶节点或者叶节点以上的子树,将其父节点或者根节点作为新的叶节点,简化生成的决策树。
参考文献
[1]李航,统计学习方法。
2017-7-28第一版。
- 《统计学习方法》笔记05:决策树模型
- 统计学习方法笔记:决策树
- 统计学习方法笔记七----决策树
- 《统计学习方法》笔记(六)--决策树
- 《统计学习方法》笔记(5):决策树
- 《统计学习方法》第五章决策树学习笔记
- 统计学习方法 笔记与总结 决策树
- [统计学习方法]决策树
- 复习统计学习方法-决策树
- 统计学习方法----决策树
- 统计学习方法--决策树
- 统计学习方法《决策树》
- 统计学习方法:决策树
- 统计学习方法 5-决策树
- 统计学习方法学习笔记《五》——决策树
- 《统计学习方法》笔记——决策树之ID3算法
- 《统计学习方法》笔记之---决策树
- 《统计学习方法》笔记07:最大熵模型
- ansible02 主机目录
- WCF和ASMX WebService的区别是什么
- 二叉树学习:从零基础到代码实现
- 51 nod 1158 全是1的最大子矩阵(单调栈)
- Java笔记
- 《统计学习方法》笔记05:决策树模型
- bzoj 2160 拉拉队训练 (manacher)
- EditText和AutoCompleteTextView
- 一键生成AppIcon 多有尺寸图标
- Java选择排序算法
- 1150: 数数多少个整数
- 常用的分布式事务解决方案
- mysqldump与innobackupex备份过程你知多少(一)
- import、内部类 day11