决策树是最重要的机器学习算法之一。它用于机器学习分类和机器学习回归问题。在本文中,我们将讨论相对于机器学习中的分类部分。
什么是决策树?
机器学习种的决策树是一种具有树状结构的分类和预测工具,其中每个内部节点表示对一个属性的测试,每个分支表示测试的结果,每个叶节点(终端节点)持有一个类标签。
上面我们有一个小决策树。决策树的一个重要优点是它具有很强的可解释性。这里如果身高> 180厘米(或身高<180厘米并且体重> 80公斤)的人是男性。其他女性。你有没有想过我们是怎么得出这个决策树的。我将尝试使用天气数据集来解释它。
在进一步讨论之前,我将解释一些与决策树相关的重要术语。
熵
在机器学习中,熵是对正在处理的信息中的随机性的度量。熵越高,从该信息中得出任何结论就越困难。
信息增益
信息增益可以定义为从观察另一个随机变量获得的随机变量或信号的信息量。可以认为是父节点的熵与子节点的加权平均熵之间的差异。
基尼杂质
Gini杂质是一种度量,如果根据子集中标签的分布对随机选择的元素进行随机标记,那么该元素被错误标记的频率。
基尼杂质的下限为0,如果数据集仅包含一个类,则出现0。
有很多算法可以构建决策树。
- CART(分类和回归树) - 这使用基尼杂质作为度量。
- ID3(Iterative Dichotomiser 3) - 它使用熵和信息增益作为度量。
在本文中,我将介绍ID3。
使用ID3算法进行分类
考虑一下我们将决定是否踢足球的天气数据集。
这里有自变量来确定因变量。自变量是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。在此基础上,我们计算了上述概率。
从上面的数据我们可以很容易地得到下表
现在我们必须计算平均加权熵。也就是说,我们发现每个特征的权重总和乘以概率。
- 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,它形成决策树的第一个节点(根节点)。
现在我们的数据如下所示
由于overcast 仅包含“yes”类的示例,我们可以将其设置为yes。现在我们的决策树看起来如下。
下一步是在我们的决策树中找到下一个节点。现在我们将在sunny下找到一个。我们必须确定以下哪个Temperature ,Humidity 或Wind有更高的信息增益。
计算父熵E(sunny)
- E(sunny) = (-(3/5)log(3/5)-(2/5)log(2/5)) = 0.971.
现在计算温度的信息增益。 IG(sunny, Temperature)
- 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下的节点。
对于上表中的Humidity ,我们可以说,如果humidity是normal时, play将发生,如果high则不会play。同样地,找到rainy下面的节点。
注意:熵大于0的分支需要进一步拆分。
最后,我们的决策树将如下所示:
使用CART算法进行分类
使用CART的分类与它类似。但是我们使用基尼杂质代替熵。
因此,作为第一步,我们将找到决策树的根节点。为此计算类变量的gini索引
- Gini(S) = 1 - [(9/14)² + (5/14)²] = 0.4591
下一步我们将计算基尼增益。首先,我们将找到Outlook,Temperature, Humidity 和Windy的平均加权基尼杂质。
首先考虑Outlook的情况
- 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算法中使用的相同步骤。
决策树的优缺点
好处:
- 决策树是超级可解释的
- 需要很少的数据预处理
- 适用于低延迟应用
缺点:
- 更有可能过度拟合噪声数据。随着树越来越深,噪声过度拟合的概率也会增加。解决方案就是pruning。