决策树
决策树学习,假设给定训练数据集:
其中
1.熵
信息是个很抽象的概念,接下来我们从文件压缩问题来说明信息熵,以便于理解。
压缩原理
压缩的本质就是将重复出现的字符用更短的符号代替,就是找出文件内容的概率分布,将出现概率高的部分替代成更短的形式。因此,内容越是重复的文件就可以压缩的越小。比如,"ABABABABABABAB"可以压缩为"7AB"。而内容毫无重复,就很难进行压缩,例如无理数
压缩极限
压缩可以分解成两个步骤。第一步是得到文件内容的概率分布;第二步是对文件进行编码,用较短的符号替代那些重复出现的部分。
比如扔硬币的结果,那么只要一个二进制位就够了,1表示正面,0表示表示负面。足球赛的结果,最少需要两个二进制位。扔骰子的结果,最少需要三个二进制位。
在均匀分布的情况下,假定一个字符(或字符串)在文件中出现的概率是
更一般情况,假定文件有n个部分组成,并且每个部分的内容在文件中的出现概率分别为
上述公式即为压缩极限,表示压缩所需要的二进制位数。
信息熵
在均匀分布的情况下
熵(entropy)是表示随机变量不确定性的度量。设
则随机变量
熵只依赖于
设随机变量
条件熵
例
假定有两个文件都包含1024个符号,在ASCII码的情况下,它们的长度是相等的,都是1KB。甲文件的内容50%是a,30%b,20%是c,则平均每个符号要占用1.49个二进制位。
乙文件的内容10%是a,10%是b,
可以看到文件内容越是分散(随机),所需要的二进制位就越长。所以,这个值可以用来衡量文件内容的随机性(又称不确定性)。这就叫做信息熵(information entropy)。
注:
(1)信息熵只反映内容的随机性,与内容本身无关。
(2)信息熵越大,表示占用的二进制位越长,因此就可以表达更多的符号(信息量并不一定大也许是一堆无序没意义的字符)。
(3)信息熵与热力学的熵,基本无关。
经验熵和经验条件熵
由数据估计(极大似然估计)得到的熵和条件熵。
如数据集
特征
2.信息增益
特征
设数据集为
信息增益的问题
对于取值很多的特征,比如连续型数据(时间)。每一个取值几乎都可以确定一个样本。即这个特征就可以划分所有的样本数据。
- 信息增益不适合连续型、取值多的特征
- 使得所有分支下的样本集合都是纯的,极端情况每一个叶子节点都是一个样本
- 数据更纯,信息增益更大,选择它作为根节点,结果就是庞大且深度很浅的树
3.信息增益比
特征
其中
解决信息增益的问题:特征
信息增益比的问题:实际上偏好可取类别数目较少的特征。
4. 算法
决策树的生成,
递归终止条件:
- 当前节点的所有样本,属于同一类别
,无需划分。该节点为叶子节点,类标记为 - 当前属性集为空,或所有样本在属性集上取值相同
- 当前节点的样本集合为空,没有样本
在集合
- 增益小于阈值,则不继续向下分裂,到达叶子节点。该节点的标记为该节点所有样本中的
majority class
。 这也是预剪枝 - 增益大于阈值,按照特征
的每一个取值 把D划分为各个子集 ,去掉特征
继续对每个内部节点进行递归划分。
算法
5.决策树剪枝
决策树递归生成算法,易出现过拟合现象,这是由于在学习时过多的考虑如何提高对训练数据的正确分类,从而导致构建的决策树过于复杂,我们可以通过对决策树进行剪枝来简化决策树。
决策树剪枝通过极小化损失函数来实现。假设树
其中经验熵为:
令
则
剪枝就是当
6.CART算法
6.1.回归生成树
首先,选择切分变量
然后选择最优切分变量
然后用选定的对
递归对子区域做上述操作,直到满足停止条件。将输入空间划分为
其中
6.2.分类树生成
尼基指数
分类问题中,假设有
对于给定样本集合
这里
如果样本集合
决策树生成:
1.计算现有特征对数据集的尼基指数,对每一个特征
2.在所有可能的特征
对子节点递归做1,2操作直至满足停止条件,生成CART决策树。
6.3.
剪枝
CART剪枝算法从“完全生长”的决策树的底端剪掉一些子树,使决策树变小,从而能够对未知数据有更准确的预测。CART剪枝算法由两步组成;首先从生成算法产生的决策树
然后通过交叉验证法在独立的验证数据集上对子树序列进行测试,从中选择最优子树。
1. 剪枝,形成一个子树序列
在剪枝过程中,计算子树的损失函数:
其中,
对固定的
Breiman等人证明:可以用递归的方法对树进行剪枝。将
序列中的子树是嵌套的。
具体地,从整体树
以
当
当
当
只要
为此,对
它表示剪枝候整体损失函数减少的程度,在
如此剪枝下去,直至得到根节点。在这一过程中,不断地增加
2.在剪枝得到的子树序列
中通过交叉验证选取最优子树
具体地,利用独立的验证数据集,测试子树序列
剪枝算法
输入:
输出:最优决策树
(1)设
(2)自下而上地对各内部节点
这里,
- 自上而下地访问内部节点
,如果有 , 进行剪枝,并对叶节点 以多数表决法决定其类,得到树 .
(4)设
(5)如果
(6)采用交叉验证法在子树序列
7.集成化(Ensemble)
Bagging(bootstrap aggregating)
首先,从大小为
然后,对新的数据进行分类时,首先将新的数据放进每一个分类器
随机森林(Random forest)
首先,从原始数据集从大小为
其次,设有
最后,将生成的多棵树组成随机森林,用随机森林进行分类,分类结果桉树分类器投票多少而定。
Boosting
假设训练集上一个有
参考
- 李航 《统计学习方法》
- 周志华 《机器学习》
- CART回归树