如何创建完美的决策树

编译作者: 陈峻 2019-05-15 09:00:00

【51CTO.com快译】众所周知,决策树在现实生活中有着许多实用的场景,它深刻地影响着包括分类和回归在内的、非常广泛的机器学习领域。可以说,在各种决策分析中,决策树能够起到直观且明确的决策辅助性作用。

什么是决策树?

决策树是一系列相关选择所产生的可能性结果的“展示图”。它允许个人或组织根据其成本、概率和效益,来对各种可能采取的行动进行权衡。

顾名思义,决策树使用的是树状的决策模型。它既可以被用于推进各种非正式的讨论,又可以被用来通过“绘制”算法,以预测那些在数学上的***选择。

决策树通常是从单个节点开始的。该节点可以分支出各种可能性的结果。同时,这些结果都会导致新的节点产生,而这些节点则会继续分枝出另一些其他类型的可能性。因此,这些最终形成一个树状的结构。

在决策树中一般有三种不同类型的节点:机会节点、决策节点和末端节点(end node)。我们用圆形来表示的机会节点,代表某些结果的概率;用正方形来表示的决策节点,代表要做出的各种决策;结束节点表示某个决策路径的最终结果。

决策树的优缺点

优势

  • 决策树能够生成各种可理解的规则。
  • 无需大量计算,决策树即可执行分类。
  • 决策树能够处理连续变量和分类变量。
  • 决策树能够清楚地表明哪些字段对于预测或分类是最为重要的。

缺点

  • 决策树不太适合于那些目标为预测连续属性值的估算类任务。
  • 在面对有着多个类、和相对较少的训练样本的分类问题时,决策树容易出现错误。
  • 在训练的过程中,决策树在计算成本上的开销比较高。在每个节点上,我们必须先对每个候选字段进行排序,然后才能找到其***的拆分方式。某些算法会使用字段的组合,以对***组合的权重进行搜索。另外,由于必须形成和比较各种候选子树,因此修剪算法(Pruning algorithms,https://www.edureka.co/blog/implementation-of-decision-tree/)的开销会更大。

创建决策树

让我们考虑一个场景,有一组天文学家发现了一颗新的行星,他们感兴趣的问题是:它是否可能是下一个地球呢?

显然,在做出明智的判断之前,我们值得深入研究的决定性因素有许多,包括:该星球上是否存在着水、温度是多少、地表是否容易持续遭受暴风雨的影响、动植物是否在此类特定的气候中能生存活下来等方面。

下面,让我们通过创建一个决策树,来判定它是否人类下一个“栖息地”。

首先,我们设定宜居的温度在0到100摄氏度之间。

其次,是否存在着水?

然后,动植物是否繁茂?

组后,该星球的表面是否有风暴?

至此,我们就得到了一个完整的决策树。

分类规则

分类规则是:在考虑了所有的可能性之后,为每种方案分配一个类变量(class variable)的状况。

类变量

我们为每一个叶节点都分配一个类变量。类变量将直接影响我们判断的最终输出。

下面让我们从上面创建的决策树中,推导出如下的分类规则:

1. 如果温度不在273至373K(开尔文,热力学单位)之间,则视为:生存困难。

2. 如果温度在273至373K之间,且不存在水,则视为:生存困难。

3. 如果温度在273至373K之间,存在水,但没有动植物,则视为:生存困难。

4. 如果温度在273至373K之间,存在水,存在动植物,且无地表暴风雨,则视为:生存可能。

5. 如果温度在273至373K之间,存在水,存在动植物,但存在地表暴风雨,则视为:生存困难。

决策树

本例的决策树由如下部分组成:

  • 根节点:在上例中,“温度”因素被视为根。
  • 内部节点:具有一个传入边(incoming edge)和两到多个传出边(outgoing edge)的节点。
  • 叶子节点:不再具有传出边的末端节点。

根据上述三个部分,我们从根节点开始,逐个检查测试条件(test condition),并将判断结果(或称控制)分配给其中一个传出边,以便将其作为另一个节点的传入边,进行下一轮条件测试。当所有测试条件都遍历完毕并到达叶子节点时,该决策树完毕。而叶子节点则包含了是否认可该决策(判断)的各种类标签(class labels)。

您一定有些疑惑:为什么我们会将“温度”属性作为根,来构造决策树呢?如果选择其他属性,将有什么不同呢?的确,不同的属性特征会创建出许多不同的树。我们需要通过遵循某种算法来选择***的决策树。下面我们来讨论一种被称为“贪婪法则(Greedy Approach)”的决策树创建算法。

贪婪法则

根据维基百科,贪婪法则是基于启发式问题解决(Heuristic Problem Solving)的概念,在每个节点上做出***的局部选择。然后通过这些局部的***选择,在全局范围内找到了近似的***解。

该算法包括:

1. 在每个阶段(节点),选择出***特征作为测试条件。

2. 接着将节点拆分为各种可能性的输出(内部节点)。

3. 重复上述步骤,直到所有测试条件都在叶子节点中被遍历到。

我们回到刚才的问题:如何选择初始的测试条件呢?这里会涉及到两个概念:熵(Entropy)和信息增益(Information Gain)。

熵:在决策树中,熵表示同质性。如果数据是完全均匀的,则熵为0;否则,如果数据被分割了(如50比50%),那么熵为1。

信息增益:信息增益表示节点被拆分时,其熵值的增与减。

我们的目的是,让被选取进行拆分的属性特征具有***的信息增益。因此,根据熵和信息增益的计算值,我们需要在任何特定步骤中,选取***的属性。

我们来看下图的一组数据:

我们可以根据上图中各种维度的属性特征集合,得出一系列不同种类的决策树。下面 是两种创建试验:

树的创建试验 1:

在此,我们使用“学生”,这一属性特征作为初始化的测试条件,其决策树如下图所示。

树的创建试验 2:

同样,我们可以选择“收入”作为测试条件,如下图所示:

用贪婪法则创建***的决策树

在此,我们涉及到两个类:“Yes”表示此人会购买电脑;“No”表示不购买。为了计算熵和信息增益,我们来看看这两个类分别的概率值。

»Positive:“buys_computer=yes”的概率为:

»Negative:“buys_computer=no”的概率为:

D的熵:我们将概率值放入上面的公式,以求出熵。

在准备阶段,我们预先对熵的值进行了分类,它们分别为:

熵 = 0:数据完全是同质的 (纯)

熵 = 1:数据被分为50%比50% (不纯)

由于我们算出的熵值是0.940,可见是不纯的。

下面让我们通过深入研究,来找出合适的属性特征,以计算信息增益。

如果我们在“年龄”上进行拆分,那么就能够按照年龄的不同阶段,来区分是否购买电脑产品。

例如,对于年龄在30岁及以下的人来说,有2人购买(Yes),3人不购买(No)电脑。那么我们针对三个年龄阶段(将年龄属性特征值进行拆分)的人,计算出针对***一列(是否购买电脑)的Info(D)。

可见,信息增益便是总的Info(0.940)与以年龄为属性计算的Info(0.694)的差。

因此,这就是我们如果使用“年龄”为属性进行拆分的因子。同理,我们也可以计算出其余属性特征维度的“信息增益”,如:

信息增益 (年龄) = 0.246

信息增益 (收入) = 0.029

信息增益 (学生) = 0.151

信息增益 (信用评级) = 0.048

通过对上述值的综合比较,我们不难发现:“年龄”的“信息增益”***,因此,拆分“年龄”是一个比较好的决策。

可见,我们应该创建的***决策树应该如下图所示:

由上图可见,我们应该按照如下逻辑“绘制”出该决策树的分类规则:

如果某人的年龄小于30岁,而且他不是学生,那么他就不会买产品。

Age (<30) ^ student(no) = NO

如果某人的年龄小于30岁,并且他是学生,那么他就会购买该产品。

Age (<30) ^ student(yes) = YES

如果某人的年龄在31岁至40岁之间,那么他最有可能购买产品。

Age (31…40) = YES

如果某人的年龄超过了40岁,且信用评级非常好,那么他就不会买产品。

Age (>40) ^ credit_rating(excellent) = NO

如果某人的年龄超过了40岁,且信用评级尚可,那么他很可能会购买产品。

Age (>40) ^ credit_rating(fair) = Yes

这便是我们根据上例所实现的***决策树。

原文标题:How to Create a Perfect Decision Tree,作者:Upasana Priyadarshiny

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

决策树 机器学习 人工智能
上一篇:用机器学习改善供应链的10个方法 下一篇:区块链和人工智能:完美匹配
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

AI免费公开课一网打尽!14个类别、230门课程,GitHub标星6k+

要说这两年最火的机器学习课程,当属吴恩达的Machine Learning。这原本是吴恩达在斯坦福大学开授的课程,课程视频在网络上受到了学习者的广泛好评,后来还推出了专门的网课。

轻沉 ·  1天前
“脑控+AI” 让人用“本能”驾驶 精选

“脑控”即用脑电波来操纵机器设备。这是人类数百年来的梦想——只需要念头一动,机械或设备就已经按照你的想法运转。就像电影《阿凡达》里所演绎的那样,虽然身有残疾,却能通过脑控让另一个“自己”肆意生活。

佚名 ·  1天前
中芯国际量产14nm制程芯片 这是AIoT时代最有价值的制造

中芯国际近日表示,通过加大研发投入,14nm制程工艺芯片已经实现量产,并将于2021年正式出货。

佚名 ·  1天前
调查显示88%的中国员工信任机器人胜过人类老板 精选

中国员工在职场更信任机器人?一项调查显示,有约 88% 的中国员工对机器人的信任程度超过人类上司。

·  1天前
超过Google,微信AI在NLP领域又获一项世界第一

微信AI,NLP领域又获一项世界第一,这次是在机器阅读理解方面。

乾明 ·  3天前
AI如何改善采矿行业现状? 精选

人工智能的引入,有望将采矿业转化成一个更安全、利润空间更大且更为环保的行业。

佚名 ·  3天前
大小仅1MB!超轻量级的人脸识别模型火爆Github

近日,用户Linzaer在Github上开源了一款适用于边缘计算设备、移动端设备以及 PC 的超轻量级通用人脸检测模型,该模型文件大小仅1MB,一经开源就霸榜Github Trending榜单。

佚名 ·  3天前
大数据和人工智能如何协同工作

人工智能和机器学习如何帮助组织从大数据中获得更好的业务见解?需要了解人工智能和大数据分析的下一步发展。大数据技术并不像几年前那样广受关注,但这并不意味着大数据技术没有得到发展。如果说有什么不同的话,那就是大数据的规模正在变得越来越大。

Kevin Casey ·  2019-10-17 11:13:27
Copyright©2005-2019 51CTO.COM 版权所有 未经许可 请勿转载