机器学习笔记(九)——决策树的生成与剪枝
2016-05-08 11:43
351 查看
一、决策树的生成算法
基本的决策树生成算法主要有ID3和C4.5, 它们生成树的过程大致相似,ID3是采用的信息增益作为特征选择的度量,而C4.5采用信息增益比。构建过程如下:从根节点开始,计算所有可能的特征的信息增益(信息增益比),选择计算结果最大的特征。
根据算出的特征建立子节点,执行第一步,直到所有特征的信息增益(信息增益比)很小或者没有特征可以选择为止。
以上算法只有树的生成,容易产生过拟合。
二、决策树的剪枝
决策树对于训练数据有很好的分类,但是对于未知测试集的分类并没有那么准确,这就产生过拟合的现象。其实,原理都是一样,决策树的构建是直到没有特征可选或者信息增益很小,这就导致构建的决策树模型过于复杂,而复杂的模型是通过在训练数据集上建立的,所以对于测试集往往造成分类的不准确,这就是过拟合。解决过拟合的方法是控制模型的复杂度,对于决策树来说就是简化模型,称为剪枝。很形象的就是减掉树中的一些节点。决策树的剪枝一般通过极小化损失函数或者代价函数来实现。
设树T的叶节点的个数为|T|,t是树T的叶节点,该叶节点上有Nt个样本点,其中k类样本点有Ntk个,k=1,2,…,K,Ht(T)为叶节点t上的经验熵,α≥0为参数,则决策树的损失函数可以定义为:设树T的叶节点的个数为|T|,t是树T的叶节点,该叶节点上有N_t个样本点,其中\\k类样本点有N_{tk}个,k=1,2,\dots,K,H_t(T)为叶节点t上的经验熵,\alpha \ge 0 为\\参数,则决策树的损失函数可以定义为:
Cα(T)=∑t=1|T|NtHt(T)+α|T|(1)C_{\alpha}(T)=\sum_{t=1}^{|T|}N_tH_t(T)+\alpha|T| (1)
其中,经验熵为:
Ht(T)=−∑kNtkNtlogNtkNt(2)H_t(T)=-\sum_k\frac{N_{tk}}{N_t} \log \frac{N_{tk}}{N_t}(2)
将(1)式的第一项记为:
C(T)=∑t=1|T|NtHt(T)=−∑t=1|T|∑k=1KNtklogNtkNtC(T) = \sum_{t=1}^{|T|}N_tH_t(T) = -\sum_{t=1}^{|T|}\sum_{k=1}^KN_{tk} \log \frac{N_{tk}}{N_t}
则:
Cα(T)=C(T)+α|T|(3)C_{\alpha}(T)=C(T)+\alpha|T| (3)
C(T)C(T)表示模型对训练数据的预测误差,即拟合度。|T||T|表示模型的复杂度,参数α≥0\alpha \ge 0控制两者之间的影响。剪枝就是当α\alpha确定时,选择损失函数最小的模型。子树越大,数据拟合得越好,但是模型的复杂度越高;相反,字数越小,数据拟合较差,模型的复杂度较低。损失函数正好表示对两者的平衡。
从上述分析可以看出,决策树的生成算法的模型复杂度很高,很好的地拟合了训练数据。需要重点提一下的是,(3)式定义的损失函数极小化等价于正则化的极大似然估计。
相关文章推荐
- Object-c------NSDate的简单介绍
- 20145210 《Java程序设计》第十周学习总结
- 冗余关系
- Gson解析复杂的json
- 在C语言中调用C++做的动态链接库
- linux命令大全(5)
- C经典 typedof的使用方法
- linux 搭建 nexus 私服及配置
- 快餐车之Linux静态库
- 【Java8网络编程】第1章.基本概念
- ZKEACMS 无法运行问题汇总
- 集合框架--LinkedList集合练习堆栈和队列
- 软键盘弹出控件上移
- Bananapro SimpleCV & usb摄像头教程
- virtualenvwrapper 的安装和使用
- SCVMM-05 Upgrade SCVMM 2012 SP1 to SCVMM 2012 R2
- 反射中获取class对象的三种方式
- 初识50个Linux命令
- Qt标准对话框之QMessageBox
- 树、二叉树、遍历二叉树的总结