决策树算法_用实例说明决策树算法

2bc5d3be02f7cb939639d17c879295ba.png

决策树是最重要的机器学习算法之一。它用于机器学习分类和机器学习回归问题。在本文中,我们将讨论相对于机器学习中的分类部分。

什么是决策树?

机器学习种的决策树是一种具有树状结构的分类和预测工具,其中每个内部节点表示对一个属性的测试,每个分支表示测试的结果,每个叶节点(终端节点)持有一个类标签。

44abff73e6eecd4f35cbc074d5fa00e5.png

上面我们有一个小决策树。决策树的一个重要优点是它具有很强的可解释性。这里如果身高> 180厘米(或身高<180厘米并且体重> 80公斤)的人是男性。其他女性。你有没有想过我们是怎么得出这个决策树的。我将尝试使用天气数据集来解释它。

在进一步讨论之前,我将解释一些与决策树相关的重要术语。

在机器学习中,熵是对正在处理的信息中的随机性的度量。熵越高,从该信息中得出任何结论就越困难。

30fc211c903781cb1ff766cc82e724a1.png

信息增益

信息增益可以定义为从观察另一个随机变量获得的随机变量或信号的信息量。可以认为是父节点的熵与子节点的加权平均熵之间的差异。

92aa62063d3fa6c00ed993c2b1c06faa.png

基尼杂质

Gini杂质是一种度量,如果根据子集中标签的分布对随机选择的元素进行随机标记,那么该元素被错误标记的频率。

696e119d804ab02fafc3d47a575f21e1.png

基尼杂质的下限为0,如果数据集仅包含一个类,则出现0。

b0e1cabc0f1ad2eefd0342b3a2c1ef0b.png

有很多算法可以构建决策树。

  1. CART(分类和回归树) - 这使用基尼杂质作为度量。
  2. ID3(Iterative Dichotomiser 3) - 它使用熵和信息增益作为度量。

在本文中,我将介绍ID3。

使用ID3算法进行分类

考虑一下我们将决定是否踢足球的天气数据集。

c7464c2f8c135670ca4c1615e6dd6a83.png

这里有自变量来确定因变量。自变量是Outlook,Temperature,Humidity 和Wind。自变量是play football(yes/no)。

作为第一步,我们必须为决策树找到父节点。为此,请按照以下步骤操作:

找到类变量的熵。

  • E(S) = -[(9/14)log(9/14) + (5/14)log(5/14)] = 0.94

注意:这里的log以2为底。这里总共有14个yes/ni。其中9个yes,5个no。在此基础上,我们计算了上述概率。

从上面的数据我们可以很容易地得到下表

49129fa940fc575de809afe30411efda.png

现在我们必须计算平均加权熵。也就是说,我们发现每个特征的权重总和乘以概率。

  • E(S, outlook) = (5/14)*E(3,2) + (4/14)*E(4,0) + (5/14)*E(2,3) = (5/14)(-(3/5)log(3/5)-(2/5)log(2/5))+ (4/14)(0) + (5/14)((2/5)log(2/5)-(3/5)log(3/5)) = 0.693

下一步是寻找信息增益。它是我们在上面发现的父熵和平均加权熵之间的差。

  • IG(S, outlook) = 0.94 - 0.693 = 0.247

同样地找到Temperature,Humidity和Windy的信息增益。

  • IG(S, Temperature) = 0.940 - 0.911 = 0.029
  • IG(S, Humidity) = 0.940 - 0.788 = 0.152
  • IG(S, Windy) = 0.940 - 0.8932 = 0.048

现在选择具有最大熵增益的特征。这是Outlook.So,它形成决策树的第一个节点(根节点)。

现在我们的数据如下所示

1f20529132d931b38a12ef72300750b1.png

由于overcast 仅包含“yes”类的示例,我们可以将其设置为yes。现在我们的决策树看起来如下。

29b8ee94f295b48361689db7b4cb4948.png

下一步是在我们的决策树中找到下一个节点。现在我们将在sunny下找到一个。我们必须确定以下哪个Temperature ,Humidity 或Wind有更高的信息增益。

caa9a30e99c2a0f8cf2a3858e98b6378.png

计算父熵E(sunny)

  • E(sunny) = (-(3/5)log(3/5)-(2/5)log(2/5)) = 0.971.

现在计算温度的信息增益。 IG(sunny, Temperature)

d0cc242eba4d4caf1f5cc94d408dfd75.png
  • E(sunny, Temperature) = (2/5)*E(0,2) + (2/5)*E(1,1) + (1/5)*E(1,0)=2/5=0.4

现在计算信息增益。

  • IG(sunny, Temperature) = 0.971–0.4 =0.571

同样我们得到

  • IG(sunny, Humidity) = 0.971
  • IG(sunny, Windy) = 0.020

这里IG(sunny, Humidity)是最大的值。所以Humidity 是sunny下的节点。

dddafa0ef112273e76a3f05f9b3535ea.png

对于上表中的Humidity ,我们可以说,如果humidity是normal时, play将发生,如果high则不会play。同样地,找到rainy下面的节点。

注意:熵大于0的分支需要进一步拆分。

最后,我们的决策树将如下所示:

ead0492582d8601a151c9b65fcd321b7.png

使用CART算法进行分类

使用CART的分类与它类似。但是我们使用基尼杂质代替熵。

因此,作为第一步,我们将找到决策树的根节点。为此计算类变量的gini索引

  • Gini(S) = 1 - [(9/14)² + (5/14)²] = 0.4591

下一步我们将计算基尼增益。首先,我们将找到Outlook,Temperature, Humidity 和Windy的平均加权基尼杂质。

首先考虑Outlook的情况

974646840e5fde128af75b7c982eb3a3.png
  • Gini(S, outlook) = (5/14)gini(3,2) + (4/14)*gini(4,0)+ (5/14)*gini(2,3) = (5/14)(1 - (3/5)² - (2/5)²) + (4/14)*0 + (5/14)(1 - (2/5)² - (3/5)²)= 0.171+0+0.171 = 0.342
  • gain (S, outlook) = 0.459 - 0.342 = 0.117
  • gain(S, Temperature) = 0.459 - 0.4405 = 0.0185
  • gain(S, Humidity) = 0.459 - 0.3674 = 0.0916
  • gain(S, windy) = 0.459 - 0.4286 = 0.0304

选择一种具有较高gini增益的。由于outlook的Gini增益更高,所以我们可以选择它作为根节点。

现在您已经知道如何进一步进行。重复我们在ID3算法中使用的相同步骤。

决策树的优缺点

好处:

  1. 决策树是超级可解释的
  2. 需要很少的数据预处理
  3. 适用于低延迟应用

缺点:

  1. 更有可能过度拟合噪声数据。随着树越来越深,噪声过度拟合的概率也会增加。解决方案就是pruning
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值