且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

读书笔记《集体智慧编程》Chapter 7 : Modeling with Decision Tree

更新时间:2022-09-22 11:55:21

本章概要
决策树与贝叶斯分类,费舍尔分类,神经网络一样,是一种分类技术。但是,与其他分类技术不同的是,决策树做出决策的过程很清晰,可以帮助用户了解决策过程,从而调整自己的策略(比如广告投放),往往决策树本身处理过程比其分类结果更重要。
本章主要介绍了CART算法构建决策树与做出决策,同时还介绍了一些决策树的优化方案,容错机制和使用场景。
本章还介绍了三种集合纯度计算方法
  • 基尼不纯度(Gini Impurity)
  • 熵(Entory)
  • 方差(Variance)
 
决策树
 
 

读书笔记《集体智慧编程》Chapter 7 : Modeling with Decision Tree

 
上面就是一个决策树,分叶节点是逻辑判断,叶节点是结果。输入结果按照决策树的节点一级一级的向下走,直到访问到叶节点,得到最后的分类结果。可以理解为一系列的if-then语句,按照二叉树的样式组合。决策树是通过训练数据集构建的,也就是先给出一些数据集,类别别清楚的分隔好,然后根据这个数据集,进行构建决策树。
 
如何分隔
选取一个特征值,将所有数据分割成两分。特性值是数字,就用大于逻辑分割(小于也可以),如果是枚举类型,通过相等于不相等分隔为两类。
 
如何选取特征值
通过度量特征值分隔后,两个子集合的纯度,选取最优特征值。分隔后的结果越纯,特征值月好。
 
集合纯度
本章介绍了三种集合纯度计算方法:
  • 基尼不纯度Gini Impurity
  • 熵entropy
  • 方差variance,计算连续数值。
现在需要知道,前两者可以计算枚举类型的纯度,最后一个计算连续数据结合的纯度。都是值越大,越不纯,越小越纯。
 
 
 
构建决策树
遍历每个列每个不同节点(除最后一列),按当前节点分隔,计算分隔后的权重熵(权重按照所占比例计算),计算出为分割前的熵与分割后的权重熵之差information gain,越大越好,选出***的。然后根据***的两个集合继续分隔,直到information gain <= 0为止,因为只有这样,说明当前集合十分纯净,无法被继续分隔。
 
使用决策树
使用方法十分自然,顺着决策树的根几点,一步一步的向下走,直到到达叶节点。
 
修剪决策树
决策树有可能过度适应(我理解为过度茂盛),以至于得不到好的结果。所以需要修剪。
第一种方案:在生成决策数的时候控制information gain的增长量,如果达不到一定增长量,那么就停止分裂。但是这样会出现一个问题,当前分裂可能达不到一定的增长量,但是下一城节点可能达到更大的增长量。
第二种方案:构建决策树的方案不变,在构建完后,修剪枝叶,也就是合并叶节点,只要合并后的节点与之前的节点的差小于一定范围就可以继续合并。这样可以避免错误的删除明显的决策节点
 
处理丢失数据
输入数据不完整时,决策树也可以工作,但是会给出多个决策和权重,
 
决策树适用场景
决策的节点只能是简单的逻辑,如果逻辑太复杂,决策树会很大且不准确。决策树不适合大量数值特性。适合于大量枚举特性,或者具有明显分隔界限的连续数据。当然,如前面提到的,决策树本身具有参考价值,可以帮助用户进行策略分析。
声明:如有转载本博文章,请注明出处。您的支持是我的动力!文章部分内容来自互联网,本人不负任何法律责任。

本文转自bourneli博客园博客,原文链接:http://www.cnblogs.com/bourneli/archive/2012/11/17/2775405.html,如需转载请自行联系原作者