决策树学习概述

转载链接

转载的一篇关于决策树的知识,感觉这篇比较容易理解。脑子太笨了。。

基于树的学习算法在数据科学竞赛中相当常见。这些算法给预测模型赋予了准确性、稳定性以及易解释性。其中,决策树算法也是引人关注的「随机森林」算法的基础构造模块。本文介绍了决策树的概念和简单实现,使用生动的示例帮助理解,希望能够对你有所帮助。

对于 ML 的入门者来说,决策树很容易上手。本教程将介绍:


  • 决策树是什么

  • 如何构建决策树

  • 使用 Python 构建决策树


决策树是什么


我们跳过正式定义,从概念上了解一下决策树。试想你坐在办公室里,感觉自己饿了,想出去吃点东西,但是午餐要下午 1 点才开始。那么你怎么办呢?当然,你会看一下时间,然后决定能否出去。你可以按照以下逻辑进行思考:


我们刚刚搭了一个决策树!这是一个简单的版本,但我们可以通过加入天气、成本等因素构建一个更为复杂的决策树。如果你想和你的朋友 Jon Snow 去一家中餐馆吃午饭,决策逻辑可以这样表示:


这也是一个决策树。从顶部开始,循着描述当前状况的路线一路向下,直到做出决定。

注意事项


我们把场景切换到计算机世界。我们刚刚画的每一个框叫做一个节点。最上面的节点叫做根节点,下面每层的节点叫做叶节点,可以把它想成现实世界中的一棵树,但是根朝上。


每个节点测试我们的世界(数据集)中的某个属性,从节点引出的每个分支对应于该属性的值。给定一棵决策树,决策过程如下:


  1. 从根节点开始

  2. 观察根节点属性的值

  3. 按照与观察值对应的路径往下走

  4. 重复以上步骤,直至到达叶节点,这样就能做出决策


信息增益和熵


信息增益是选择最佳属性常用且容易上手的方法之一。它使用另一种叫做熵的属性计算出来。


熵是物理学和数学中的概念,指系统的随机性或混乱度。在信息论中,它指的是一组样本的混乱度。


我们通过一个例子来说明:你有两个装满巧克力的袋子。巧克力有红的也有蓝的。你想通过计算巧克力的数量来测量袋子的熵。所以你坐下来开始数。2 分钟后,你发现第一袋有 50 块巧克力。其中 25 块是红色的,25 块是蓝色的。第二袋也有 50 块巧克力,都是蓝色的。


在这种情况下,第一个袋子的熵是 1,因为里面的巧克力呈均匀分布。第二个袋子的熵为零,因为里面的巧克力没有随机性。


我们用下面这个公式计算一个系统的熵:


在这个公式中,c 代表类别或属性的总数,p_i 代表属于第 i 类的样本数量。是不是有点懵?我们通过例子了解一下:


让我们回到刚刚的巧克力袋子。我们有两个类别:红色(R)和蓝色(B)。第一个袋子里有 25 块红色巧克力。巧克力总数是 50。因此,p_i=25/50。蓝色类别也是这样处理。把这些值代入熵方程,我们得到以下结果:



解方程,结果如下:


继续计算第二个袋子的熵,里面有 50 块红色巧克力,0 块蓝色巧克力。得到的熵是 0。


如果你理解这个概念,太好了!我们现在转到信息增益。


信息增益


信息增益是由基于给定属性的样本分割导致的熵下降。从数学角度上看,信息增益的定义为:



S 代表整个样本集,A 代表我们想要分割的属性。|S| 代表样本数量,|Sv| 表示属性 A 当前值的样本数量。


仍然很复杂,是不是?那我们举个例子,看看它的工作流程。


构建决策树


首先,给巧克力的例子添加一些细节。我们已经知道袋 1 中有 25 块红色巧克力、25 块蓝色巧克力。现在,我们还要考虑巧克力的品牌。红色巧克力中,有 15 块是士力架,10 块是 Kit Kat 牌。蓝色巧克力中,20 块是 Kit Kat 牌,5 块是士力架。假设我们只想吃红色的士力架。那么这里,红色士力架(15)是正例,其他的巧克力(如红色 Kit Kat 和蓝色士力架)都是负例。


现在,与我们的类别(吃/不吃)相关的数据集的熵是:


现在我们来回顾一下,我们有 50 块巧克力。如果只看属性「颜色」,则我们有 25 个红色的、25 个蓝色的。如果看属性「品牌」,则我们有 20 块士力架、30 块 Kit Kat 巧克力。


为了构建决策树,我们需要选择其中一个属性作为根节点。我们想要选择具备最高信息增益的属性。现在我们来计算这些属性的信息增益。


颜色相关的信息增益是:

我们刚才计算了与类别相关的巧克力的熵,是 0.8812。如果我们想吃 15 块士力架而不是 10 块 Kit Kat,则红色巧克力的熵是:


如果我们不想吃蓝色巧克力,则熵为 0。


我们的信息增益计算就变成了:

如果我们分割颜色,则信息增益是 0.3958。


现在我们来看下品牌。如果我们想吃 15 块士力架(共有 20 块),不想吃 Kit Kat。则士力架的熵是:

如果我们不吃 Kit Kat,则熵为 0。信息增益为:


品牌分割的信息增益是 0.5567。

由于品牌的信息增益较大,我们将基于品牌进行分割。下一级,我们只要左边的颜色。我们可以轻松地根据颜色进行分割,无需进行任何计算。决策树如下:


猜你喜欢

转载自blog.csdn.net/qq_37249672/article/details/80333571
今日推荐