决策树笔记
来源:互联网 发布:视频剪辑制作软件电脑 编辑:程序博客网 时间:2024/06/12 20:47
- 概述
- 决策树的生成
- 特征选择
- 信息增益
- 熵
- 条件熵
- 信息增益
- 信息增益比
- 信息增益
- 决策树的生成
- IDE3算法
- C45算法
- 特征选择
- 决策树的剪枝
- 损失函数
- 剪枝算法
- 说明
概述
决策树常见的算法有IDE3、C4.5以及CART算法。
按照决策树是否为二叉树,可以将3个算法分为两类,IDE3、C4.5属于非二叉树决策树算法,CART针对二叉树决策树,本文介绍IDE3、C4.5,关于CART算法,请参考 决策树笔记-CART算法。
决策树是一种用来做分类的树形结构。
决策树的节点分为两种,内部节点和叶节点。内部节点表示一个特征或属性,叶节点表示分类结果。
用决策树进行分类时,从根节点开始,对待分类实例的某一特征进行测试,根据测试结果将实例分配到子节点,如此递归进行下去,直到达到叶节点,即完成分类。
决策树的学习通常包括2个步骤,决策树的生成和决策树的剪枝。而在决策树的生成过程中,用到的很关键的算法,就是特征选择。在生成决策树时优先使用对分类最有效的特征来作为当前的节点,特征选择算法就是用来找出“最有效的特征”。
决策树的生成
特征选择
特征选择目的在于选取对训练数据具有分类能力的特征,这样可以提高决策树学习与分类的效率。
例如,你是一名新入职的负责审核贷款的银行员工,你现在要学习如何决定是否给一个申请者发放贷款,你的上司给了你一些已经完成审核的申请信息让你学习,其中包含一些特征:年龄、是否有工作、是否有房子、信誉情况,你发现能否申请成功跟是否有房子的关系最大,而跟年龄的关系相对最小,于是你在做决策时,会优先考虑申请者是否拥有房子。
那么给定一堆特征,如何判断哪个特征跟分类的关系最大,如何评价各个特征的分类能力呢?通常选择的标准是信息增益(互信息)或者信息增益比(信息增益的加强版)。
信息增益
为说明信息增益,首先来了解熵和条件熵。
熵
熵是表示随机变量不确定性的度量。总是考得很好的学生和总是考倒数的学生熵都很小,而有时候考得好有时候考得不好的学生熵比较大。
设
该随机变量
若
条件熵
设有随机变量
条件熵
作为银行员工,老王跟你申请贷款,一种情况下你对老王的情况一无所知,另一种情况下你知道老王北京有套房子,这两种情况下你贷款给老王的可能性必然是有很大差异的,条件熵就是用来表达后者。
以老王有房子为条件,你给老王贷款这件事情的不确定性(熵)减小了。
随机变量
话说得有点绕,公式也有点绕。你一无所知的时候给老王贷款的不确定性就叫做给给老王贷款的熵,你知道老王有无房子时给老王贷款的不确定性就叫做“以老王有无房子为条件,你给老王贷款的条件熵”,这里条件熵包含了有无房子这个变量的两个取值:有房子、没房子,这就是为什么要求数学期望。
信息增益
信息增益表示得知特征
对老王一无所知时给老王贷款的不确定性 - 知道老王有无房子时给老王贷款的不确定性 = 关于有无房子和是否贷款的信息增益
特征
这里还要多说一句,打个岔,不想看这部分可以不看,直接看下一小节信息增益比。
互信息的定义是熵和条件熵之差,而上面信息增益也说是熵和条件熵之差,那岂不是互信息=信息增益?
为了方便理解,上面没有提及经验熵和经验条件熵的概念。
当熵和条件熵中的概率由数据估计(尤其是极大似然估计)得到时,所对应的熵和条件熵分别被称为经验熵和经验条件熵,而:
但是在数值上,
信息增益比
信息增益有一个缺点:偏向于取值种类多的特征。
特征身份证号假设有100个(即训练集的数量,100个人就有100个身份证号)取值;特征有无房子有两个取值,有或无;那么特征增益这种评价特征优劣的指标会偏向于身份证号特征。
因为身份证号的条件熵为一定为0,因而其信息增益就等于熵;而有无房子的条件熵往往大于0,因此有无房子的信息增益小于身份证号。
更通俗点,你的模型通过学习会记住训练集中申请人的身份证号,因为它发现仅仅凭身份证号,就可以知道是否给一个人贷款;但是这是毫无意义的,因为这严重过拟合了。
因此引出信息增益比的概念。
特征
其中
其实如果将类别标记
有没有变得好记好理解一些。
决策树的生成
按照特征选择标准的不同,决策树的生成算法常见分为ID3算法、C4.5算法。
IDE3算法
输入:训练数据集
输出:决策树
1. 若
2. 若
3. 计算
4. 如果
5. 否则,对
6. 对第
C4.5算法
将IDE3算法中的信息增益替换为信息增益比。
决策树的剪枝
决策树生成的过程只注重提高信息增益,以增强对训练集数据的分类精度,但是这往往容易导致过拟合。而对决策树的剪枝可以通过降低复杂度来提高其泛化能力。
在执行剪枝动作时,需要一个指标来决定是否剪枝,因此引进损失函数的概念。
损失函数
设树
决策树的损失函数定义为:
其中,
通常,将决策树的损失函数写为:
剪枝算法
有了损失函数,剪枝的时候就有了参考,大致思路是,如果剪枝能够减小损失函数值,那就剪,否则不剪。
输入:决策树
输出:修剪后的决策树
1. 计算每个节点的经验熵。
2. 递归地从叶节点向上回缩。
设剪枝之前和之后的决策树分别为
则进行剪枝,将父节点变为新的叶节点。
3. 返回步骤2,直到不能继续为止,得到损失函数最小的决策树
说明
如有错误,敬请指正。
- 决策树笔记
- 决策树笔记
- 决策树笔记
- 决策树笔记
- 【笔记】决策树
- 笔记-决策树
- 决策树笔记
- 决策树学习笔记整理
- 决策树学习笔记
- 决策树算法学习笔记
- 决策树学习笔记整理
- 决策树学习笔记整理
- 决策树学习笔记整理
- 关于决策树的笔记
- 决策树学习笔记
- 决策树学习笔记整理
- 决策树学习笔记整理
- 【复习笔记】决策树学习
- linux下IPTABLES配置详解
- mmseg中文分词算法的python实现及其优化
- 作业7
- web前端性能优化总结
- vue 2.0渲染html
- 决策树笔记
- mac 安装vim 插件YouCompleteMe
- C++——跳马问题(广搜)
- 100以内 素数
- 软键盘弹出影响webapp中固定定位的问题
- Lamda Expressions
- java 项目连接mysql 数据库
- $.extend()和$.fn.extend()
- leetcode 40. Combination Sum II