机器学习二 -- 决策树学习

决策树学习

从今天开始,坚持每天学习一个机器学习的新知识,加油!

决策树学习是应用最广的归纳推理算法之一,是一种逼近离散值目标函数的方法,在这种方法中学习到的函数被表示为一颗决策树。

决策树表示法

决策树通过把实例从根结点排列到某个叶子结点来分类实例,叶子结点即为实例所属的分类。树上的每一个结点指定了对实例的某个属性的测试,并且该结点的每一个后继分支对应于该属性的一个可能值。分类实例的方法是从这棵树的根节点开始,册数这个结点指定的属性,然后按照给定实例的该属性对应的树枝向下移动,然后这个过程再以新结点为根的子树上重复。

上图画出了一颗典型的学习到的决策树,这颗决策树根据天气情况分类“星期六上午是否适合打网球”。貌似很多机器学习和数据挖掘的书籍提到这个决策树的时候都是说的这个例子,汗!不过呢,我们还可以根据这颗决策树写出对应的表达式:

决策树学习的适用问题

  • 实例是由“属性-值”对(pair)表示的
  • 目标函数具有离散的输出值
  • 可能需要析取的描述
  • 训练数据可以包含错误
  • 训练数据可以包含缺少属性值的实例

决策树学习的应用列举

  • 根据疾病分类患者
  • 根据起因分类设备故障
  • 根据拖欠支付的可能性分类贷款申请

决策树学习的算法ID3

基本的ID3算法通过自顶向下构造决策树来进行学习。构造过程是从“哪一个属性将从树的根结点被测试?”这个问题开始的。我们使用统计测试来确定每一个实例属性单独分类训练样例的能力。分类能力最好的属性(即信息增益最大的属性)被选作树的根结点的测试。然后为根结点属性的每个可能值产生一个分支,并把训练样例排列到适当的分支之下。然后重复整个过程,用每个分支结点关联的训练样例来选取在该点被测试的最佳属性。这形成了对合格决策树的贪婪搜索,也就是算法从不回溯重新考虑以前的选择。

熵:表示了任意样例集的纯度。

假定S为训练集,S的目标属性C有m个可能的类标号值,C={C1,C2,C3…Cm},每个类标号值相应的概率为p1,p2,p3…pm。那么训练集S的信息熵定义为:Entropy(S)=Entropy(p1,p2,,,,pm)=-(p1*log2(p1)+p2*log2(p2)+pm*log2(pm));

信息增益:一个属性的信息增益就是由于使用这个属性分割样例而导致的期望熵降低。

假设训练集为S,并用属性A来划分S,那么属性A的信息增益Gain(S,A)为训练集S的熵减去按属性A划分S后的子集的熵,即Gain(S,A) = Entropy(S) - Entropy_A(S)。

Entropy_A(S)=abs(Si)/abs(S)Entropy(Si)(Si表示描述属性A的离散值的集合,abs(Si)表示属性A当前这个值的个数)

ID3 算法的优势和不足

它是关于现有属性的有限离散值函数的一个完整空间。但是当遍历决策树空间时,ID3 仅维护单一的当前假设,这样就失去了表示所有一致假设带来的优势,而且ID3 算法在搜索中不进行回溯,每当在树的某一层次选择了一个属性进行测试,它不会再回溯重新考虑这个选择,所以它易受无回溯的爬山搜索中的常见风险影响:收敛到局部最优的答案,而不是全局最优的。

决策树学习的归纳偏置

如果给定一个训练样例的集合,那么通常有很多决策树与这些样例一致。所以,要描述ID3 算法的归纳偏置,应该找到它从所有一致的假设中选择一个的根据。ID3从这些决策树中会选择哪一个呢?它会选择在使用简答到复杂的爬山算法遍历可能的树空间时遇到的第一个可接受的树。总结的说,ID3归纳偏置的搜索策略为:较短的树比较长的树优先;那些信息增益高的属性更靠近根结点的树优先。

为什么短的假设优先?

假设物理学家优先选择行星运动简单的解释,而不用复杂的解释,为什么?一种解释是短假设的数量少于长假设的数量,所以找到一个短的但同时与训练数据拟合的假设的可能性较小。相反,常常有很多非常复杂的假设拟合当前的训练数据,但却无法正确地泛化到后来的数据。比如考虑决策树假设,500个结点的决策树比5个结点的决策树多得多,如果给定一个20个训练样例的集合,可以预期能够找到很多500个结点的决策树与训练数据一致,而如果一个5个结点的决策树也可以完美的拟合这些数据当然是出乎意料的。所以我们会相信5个结点的树不太可能是统计巧合,因而优先选择这个5个结点的决策树的假设,而不选择500个结点的。

处理决策树学习的常见问题

避免过度拟合数据

对于一个假设,当存在其他的假设对训练数据样例的拟合比它差,但事实上在实例的整个分布中表现得却更好时,我们说这个假设过度拟合。

避免决策树学习中的过度拟合的方法被分为两类:

  • 及早停止树增长,在ID3算法完美分类训练数据之前就停止树增长。
  • 后修剪法:即允许树过度拟合数据,然后对这个树进行后修剪。

在实践中证实第二种方法后修剪更加成功的实施准则:

1:使用与训练样例截然不同的一套分离的样例,来评估通过后修剪方法从树上修剪结点的效用。

2:使用所有可用数据进行训练,但是进行统计测试来估计扩展(或修剪)一个特定的结点是否有可能改善在训练集合外的实例上的性能。

3:使用一个明确的标准来衡量训练样例和决策树的复杂度,当这个编码的长度最小时停止树增长。

合并连续值的属性

我们最初的ID3定义被限制为取离散值的属性。所以,我们可以先把连续值属性的值域分割为离散的区间集合。例如,对于连续值的属性A,算法可以动态的创建一个新的布尔属性Ac,如果A<c,那么Ac为真,否则为假。这样,就把连续值的属性的值离散化了。

属性选择的其他度量标准

有一些极端的例子里,采取信息增益来作为选择树的结点的优先性,有时这棵树虽然可以理想的分类训练数据,但是对于实例的数据的性能非常差,不是一个很好的预测器。所以我们选择了新的度量标准:增益比率。增益比率的计算方法先略过,这个我在后面的总结里会详细的讲解到。

处理缺少属性值的训练样例

  1. 赋给属性A决策结点n的训练样例中该属性的最常见值。
  2. 为属性A的每个可能值赋予一个概率。

处理不同代价的属性

在某些学习任务中,实例的属性可能与代价相关。例如,在学习分类疾病时,我们可能以这些属性来描述患者:体温、活组织切片检查、脉搏、血液化验结果等,这些属性在代价方面差别非常大。对于这样的任务,我们将优先选择尽可能使用低代价属性的决策树,通过引入一个代价项到属性选择度量中,我们可以用信息增益除以属性的代价,这样我们就可以使低代价的属性会被优先选择。仅当需要产生可靠的分类时我们才依赖高代价属性。

时间: 2025-01-01 23:11:48

机器学习二 -- 决策树学习的相关文章

《机器学习》第三章 决策树学习 笔记加总结

<机器学习>第三章 决策树学习 决策树学习方法搜索一个完整表示的假设空间,从而避免了受限假设空间的不足.决策树学习的归纳偏置是优越选择较小的树. 3.1.简介 决策树学习是一种逼近离散值目标函数的方法,在这种方法中学习到的函数被表示为一棵决策树. 决策树(Decision Tree)是一种简单但是广泛使用的分类器.通过训练数据构建决策树,可以高效的对未知的数据进行分类. 决策数有两大优点: 1)决策树模型可以读性好,具有描述性,有助于人工分析: 2)效率高,决策树只需要一次构建,反复使用,每一

关于机器学习和深度学习的资料

声明:转来的,原文出处:http://blog.csdn.net/achaoluo007/article/details/43564321 编者按:本文收集了百来篇关于机器学习和深度学习的资料,含各种文档,视频,源码等.而且原文也会不定期的更新,望看到文章的朋友能够学到更多. <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost 到随机森林.Deep Learning. &

从决策树学习谈到贝叶斯分类算法、EM、HMM

从决策树学习谈到贝叶斯分类算法.EM.HMM 引言 近期在面试中,除了基础 &  算法 & 项目之外,经常被问到或被要求介绍和描写叙述下自己所知道的几种分类或聚类算法(当然,这全然不代表你将来的面试中会遇到此类问题,仅仅是由于我的简历上写了句:熟悉常见的聚类 & 分类算法而已),而我向来恨对一个东西仅仅知其皮毛而不得深入,故写一个有关数据挖掘十大算法的系列文章以作为自己备试之用,甚至以备将来经常回想思考.行文杂乱,但侥幸若能对读者起到一点帮助,则幸甚至哉. 本文借鉴和參考了两本书,

机器学习与人工智能学习资源导引

机器学习与人工智能学习资源导引 TopLanguage(https://groups.google.com/group/pongba/) 我经常在 TopLanguage 讨论组上推荐一些书籍,也经常问里面的牛人们搜罗一些有关的资料,人工智能.机器学习.自然语言处理.知识发现(特别地,数据挖掘).信息检索 这些无疑是 CS 领域最好玩的分支了(也是互相紧密联系的),这里将最近有关机器学习和人工智能相关的一些学习资源归一个类: 首先是两个非常棒的 Wikipedia 条目,我也算是 wikiped

近200篇机器学习&amp;amp;深度学习资料分享

编者按:本文收集了百来篇关于机器学习和深度学习的资料,含各种文档,视频,源码等.并且原文也会不定期的更新.望看到文章的朋友能够学到很多其它. <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍非常全面,从感知机.神经网络.决策树.SVM.Adaboost 到随机森林.Deep Learning. <Deep Learning in Neural Networks: An Overview> 介绍:这是瑞士人工智能实验室

机器学习和深度学习资料合集

机器学习和深度学习资料合集 注:机器学习资料篇目一共500条,篇目二开始更新 希望转载的朋友,你可以不用联系我.但是一定要保留原文链接,因为这个项目还在继续也在不定期更新.希望看到文章的朋友能够学到更多.此外:某些资料在中国访问需要梯子. <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.Deep Learning. <Deep Learning in

[转]机器学习和深度学习资料汇总【01】

本文转自:http://blog.csdn.net/sinat_34707539/article/details/52105681 <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.Deep Learning. <Deep Learning in Neural Networks: An Overview> 介绍:这是瑞士人工智能实验室Jurgen

从决策树学习谈到贝叶斯分类算法、EM、HMM --别人的,拷来看看

从决策树学习谈到贝叶斯分类算法.EM.HMM 引言 最近在面试中,除了基础 &  算法 & 项目之外,经常被问到或被要求介绍和描述下自己所知道的几种分类或聚类算法(当然,这完全不代表你将来的面试中会遇到此类问题,只是因为我的简历上写了句:熟悉常见的聚类 & 分类算法而已),而我向来恨对一个东西只知其皮毛而不得深入,故写一个有关数据挖掘十大算法的系列文章以作为自己备试之用,甚至以备将来常常回顾思考.行文杂乱,但侥幸若能对读者起到一点帮助,则幸甚至哉. 本文借鉴和参考了两本书,一本是T

机器学习与深度学习资料

<Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.Deep Learning. <Deep Learning in Neural Networks: An Overview> 介绍:这是瑞士人工智能实验室Jurgen Schmidhuber写的最新版本<神经网络与深度学习综述>本综述的特点是以时间排序,从1940年开始讲起,到60-80