文章目录

  • 一、相关概念
    • 信息熵
    • 条件熵
    • 信息增益
    • 信息增益率
    • 基尼系数
    • 条件基尼系数
    • 基尼系数下降速度
  • 二、相关算法
    • ID3算法
    • C4.5算法
    • CART算法
  • 三、总结

一、相关概念

信息熵

H ( D ) = − ∑ k = 1 k ∣ C k ∣ ∣ D ∣ log ⁡ 2 ∣ C k ∣ ∣ D ∣ H(D)=-\sum_{k=1}^{k} \frac{\left|C_{k}\right|}{|D|} \log _{2} \frac{\left|C_{k}\right|}{|D|} H(D)=−∑k=1k​∣D∣∣Ck​∣​log2​∣D∣∣Ck​∣​

其中, ∣ D ∣ \left|D\right| ∣D∣表示事件中的所有样本点, ∣ C K ∣ \left|C_{K}\right| ∣CK​∣表示事件的第 k k k个可能值出现的次数,所以商值 表示第 k k k个可能值出现的频率。当不

确定性越大时,它所包含的信息量也就越大,信息熵也就越高。

条件熵

基于其他事件计算某个事件的熵,就称为条件熵。条件熵并不等同于条件概率,它是已知事件各取值下条件熵的期望。公式如

下:

H ⁡ ( D ∣ A ) = ∑ i , k P ( A i ) H ⁡ ( D k ∣ A i ) = ∑ i , k P ( A i ) P ( D k ∣ A i ) log ⁡ 2 P ( D k ∣ A i ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ ∑ k = 1 k ∣ D i k ∣ ∣ D i ∣ log ⁡ 2 ∣ D i k ∣ ∣ D i ∣ \begin{aligned} \operatorname{H}(D\mid A) &=\sum_{i, k} P\left(A_{i}\right) \operatorname{H}\left(D_{k} \mid A_{i}\right) \\ &=\sum_{i, k} P\left(A_{i}\right) P\left(D_{k} \mid A_{i}\right) \log _{2} P\left(D_{k} \mid A_{i}\right) \\ &=\sum_{i=1}^{n} \frac{\left|D_{i}\right|}{|D|} \sum_{k=1}^{k} \frac{\left|D_{ik}\right|}{\left|D_{i}\right|} \log _{2} \frac{\left|D_{ik}\right|}{\left|D_{i}\right|}\\ \end{aligned} H(D∣A)​=i,k∑​P(Ai​)H(Dk​∣Ai​)=i,k∑​P(Ai​)P(Dk​∣Ai​)log2​P(Dk​∣Ai​)=i=1∑n​∣D∣∣Di​∣​k=1∑k​∣Di​∣∣Dik​∣​log2​∣Di​∣∣Dik​∣​​

其中, P ( A i ) P\left(A_{i}\right) P(Ai​)表示 A事件的第i种值对应的概率

P ( D k ∣ A i ) P\left(D_{k} \mid A_{i}\right) P(Dk​∣Ai​)为已知 A i A_{i} Ai​的情况下, D D D事件为 k k k值的条件熵,其对应的计算公式为: P ( D k ∣ A i ) log ⁡ 2 P ( D k ∣ A i ) P\left(D_{k} \mid A_{i}\right) \log _{2} P\left(D_{k} \mid A_{i}\right) P(Dk​∣Ai​)log2​P(Dk​∣Ai​)

∣ D i ∣ \left|D_{i}\right| ∣Di​∣表示 A i A_{i} Ai​的频数, 表示 A i A_{i} Ai​在所有样本中的频率

∣ D i k ∣ \left|D_{i k}\right| ∣Dik​∣表示 A i A_{i} Ai​下 D D D事件为 k k k值的频数,表示所有 A i A_{i} Ai​中, D D D事件为 k k k值的频率。

信息增益

信息增益指的就是划分可以带来纯度的提高,信息熵的下降。它的计算公式,是父亲节点的信息熵减去所有子节点的信息熵,每

一步下降的量就称为信息增益。他的计算公式表示为:

Gain ⁡ ( D , A ) = H ( D ) − H ( D ∣ A ) \operatorname{Gain}(D, A)=H(D)-H(D \mid A) Gain(D,A)=H(D)−H(D∣A)

由如上公式可知,对于已知的事件 A A A来说,事件 D D D的信息增益就是 D D D的信息熵与 A A A事件下 D D D的条件熵之差,事件 A A A对事件 D D D的影

响越大,条件熵 H ( D ∣ A ) H(D|A) H(D∣A)就会越小(在事件 A A A的影响下,事件 D D D被划分得越“纯净”),体现在信息增益上就是差值越大,进而说

明事件 D D D的信息熵下降得越多。所以,在根节点或中间节点的变量选择过程中,就是挑选出各自变量下因变量的信息增益最大

的。

信息增益率

为了克服信息增益指标的缺点,有人提出了信息增益率的概念,它的思想很简单,就是在信息增益的基础上进行相应的惩罚。信

息增益率的公式可以表示为:

GainRatio  ( D , A ) = Gain ⁡ ( D , A ) H ( A ) \text { GainRatio }(D,A)=\frac{\operatorname{Gain}(D,A)}{H(A)}  GainRatio (D,A)=H(A)Gain(D,A)​

其中, H ( A ) H(A) H(A)为事件 A A A的信息熵。事件 A A A的取值越多, G a i n ( D , A ) Gain(D,A) Gain(D,A)可能越大,但同时 H ( A ) H(A) H(A)也会越大,这样以商的形式就实现

了 G a i n ( D , A ) Gain(D,A) Gain(D,A)的惩罚。

基尼系数

基尼系数本身反应了样本的不确定度。当基尼系数越小的时候,说明样本之间的差异性小,不确定程度低。分类的过程本身是一

个不确定度降低的过程,即纯度的提升过程。所以 CART 算法在构造分类树的时候,会选择基尼系数最小的属性作为属性的划

分。基尼指数的计算公式可以表示为:

Gini ⁡ ( p 1 , p 2 , ⋯ p k ) = ∑ k = 1 K p k ( 1 − p k ) = ∑ k = 1 K ( p k − p k 2 ) = 1 − ∑ k = 1 K p k 2 \operatorname{Gini}\left(p_{1}, p_{2}, \cdots p_{k}\right)=\sum_{k=1}^{K} p_{k}\left(1-p_{k}\right)=\sum_{k=1}^{K}\left(p_{k}-p_{k}^{2}\right)=1-\sum_{k=1}^{K} p_{k}^{2} Gini(p1​,p2​,⋯pk​)=∑k=1K​pk​(1−pk​)=∑k=1K​(pk​−pk2​)=1−∑k=1K​pk2​

其中, p k p_k pk​表示某事件第 k k k个可能值的发生概率,该概率可以使用经验概率表示,所以基尼指数可以重写为:

Gini ⁡ ( D ) = 1 − ∑ k = 1 K ( ∣ C k ∣ ∣ D ∣ ) 2 \operatorname{Gini}(D)=1-\sum_{k=1}^{K}\left(\frac{\left|C_{k}\right|}{|D|}\right)^{2} Gini(D)=1−∑k=1K​(∣D∣∣Ck​∣​)2

其中, ∣ D ∣ |D| ∣D∣表示事件中的所有样本点, ∣ C k ∣ |C_k| ∣Ck​∣表示事件的第 k k k个可能值出现的次数,所以概率值 p k p_k pk​就是所表示的频率。

条件基尼系数

条件基尼指数仍然是某变量各取值下条件基尼指数的期望,所不同的是,条件基尼指数采用的是二分法原理。对于三个及以上不

同值的离散变量来说,在计算条件基尼指数时会稍微复杂一些,因为该变量在做二元划分时会产生多对不同的组合。所以在计算

条件基尼指数时就需要考虑三种及以上组合的值,最终从三种值中挑选出最小的作为该变量的二元划分。条件基尼指数的计算公

式可以表示为:

Gini ⁡ ( D ∣ A ) = ∑ i , k P ( A i ) Gini ⁡ ( D k ∣ A i ) = ∑ i = 1 2 P ( A i ) ( 1 − ∑ k = 1 K ( p i k ) 2 ) = ∑ i = 1 2 P ( ∣ D i ∣ ∣ D ∣ ) ( 1 − ∑ k = 1 K ( ∣ D i k ∣ ∣ D i ∣ ) 2 ) \begin{aligned} \operatorname{Gini}(D\mid A) &=\sum_{i, k} P\left(A_{i}\right) \operatorname{Gini}\left(D_{k} \mid A_{i}\right) \\ &=\sum_{i=1}^{2} P\left(A_{i}\right)\left(1-\sum_{k=1}^{K}\left(p_{i k}\right)^{2}\right) \\ &=\sum_{i=1}^{2} P\left(\frac{\left|D_{i}\right|}{|D|}\right)\left(1-\sum_{k=1}^{K}\left(\frac{\left|D_{i k}\right|}{\left|D_{i}\right|}\right)^{2}\right) \end{aligned} Gini(D∣A)​=i,k∑​P(Ai​)Gini(Dk​∣Ai​)=i=1∑2​P(Ai​)(1−k=1∑K​(pik​)2)=i=1∑2​P(∣D∣∣Di​∣​)(1−k=1∑K​(∣Di​∣∣Dik​∣​)2)​

其中, P ( A i ) P(A_i) P(Ai​)表示 A A A变量在某个二元划分下第 i i i组的概率,其对应的经验概率为 ∣ D i ∣ ∣ D ∣ \frac{\left|D_{i}\right|}{|D|} ∣D∣∣Di​∣​ ,即 A A A变量中第 i i i组的样本量与总样本量的商

G i n i ( D k ∣ A i ) Gini(D_{k}|A_i) Gini(Dk​∣Ai​)表示在已知分组 A i A_i Ai​的情况下,变量 D D D取第 k k k种值的条件基尼指数

其中, ∣ D i k ∣ ∣ D i ∣ \frac{\left|D_{ik}\right|}{|D_i|} ∣Di​∣∣Dik​∣​表示分组Ai内变量D取第k种值的频率。

基尼系数下降速度

与信息增益类似,还需要考虑自变量对因变量的影响程度,即因变量的基尼指数下降速度的快慢,下降得越快,自变量对因变量

的影响就越强。下降速度的快慢可用下方式子衡量:

△ Gini ⁡ ( D ) = Gini ⁡ ( D ) − Gini ⁡ ( D ∣ A ) \triangle \operatorname{Gini}(D)=\operatorname{Gini}(D)-\operatorname{Gini}(D\mid A) △Gini(D)=Gini(D)−Gini(D∣A)

二、相关算法

我们以打篮球的数据集为例,详细说明决策树的分析步骤

天气  温度  湿度  刮风  是否打篮球  晴天  高  中  否  否  晴天  高  中  是  否  阴天  高  高  否  是  小雨  高  高  否  是  小雨  低  高  否  否  晴天  中  中  是  是  阴天  中  高  是  否  \begin{array}{|c|c|c|c|c|} \hline \text { 天气 } & \text { 温度 } & \text { 湿度 } & \text { 刮风 } & \text { 是否打篮球 } \\ \hline \text { 晴天 } & \text { 高 } & \text { 中 } & \text { 否 } & \text { 否 } \\ \hline \text { 晴天 } & \text { 高 } & \text { 中 } & \text { 是 } & \text { 否 } \\ \hline \text { 阴天 } & \text { 高 } & \text { 高 } & \text { 否 } & \text { 是 } \\ \hline \text { 小雨 } & \text { 高 } & \text { 高 } & \text { 否 } & \text { 是 } \\ \hline \text { 小雨 } & \text { 低 } & \text { 高 } & \text { 否 } & \text { 否 } \\ \hline \text { 晴天 } & \text { 中 } & \text { 中 } & \text { 是 } & \text { 是 } \\ \hline \text { 阴天 } & \text { 中 } & \text { 高 } & \text { 是 } & \text { 否 } \\ \hline \end{array}  天气  晴天  晴天  阴天  小雨  小雨  晴天  阴天 ​ 温度  高  高  高  高  低  中  中 ​ 湿度  中  中  高  高  高  中  高 ​ 刮风  否  是  否  否  否  是  是 ​ 是否打篮球  否  否  是  是  否  是  否 ​​

ID3算法

  1. 计算信息熵

    7条数据中,3次去打篮球,4此不去打篮球,因此信息熵为:

    H ( D ) = − 3 7 log ⁡ 2 3 7 − 4 7 log ⁡ 2 4 7 = 0.985 H(D)=-\frac{3}{7} \log _{2} \frac{3}{7}-\frac{4}{7} \log _{2} \frac{4}{7}=0.985 H(D)=−73​log2​73​−74​log2​74​=0.985

  2. 计算每个属性的条件熵

    (1) 天气:3次晴天(1次去,2次不去),2次阴天(1次去,1次不去),2次小雨(1次去,1次不去)

    H ( D ∣ 天气 ) = − 3 7 ( 1 3 log ⁡ 2 ( 1 3 ) + 2 3 log ⁡ 2 ( 2 3 ) ) − 2 7 ( 1 2 log ⁡ 2 ( 1 2 ) + 1 2 log ⁡ 2 ( 1 2 ) ) − 2 7 ( 1 2 log ⁡ 2 ( 1 2 ) + 1 2 log ⁡ 2 ( 1 2 ) ) = 0.965 \begin{array}{c} H(D\mid \text {天气})=-\frac{3}{7}\left(\frac{1}{3} \log_{2} \left(\frac{1}{3}\right)+\frac{2}{3} \log_{2} \left(\frac{2}{3}\right)\right)-\frac{2}{7}\left(\frac{1}{2} \log_{2} \left(\frac{1}{2}\right)+\frac{1}{2} \log_{2} \left(\frac{1}{2}\right)\right) -\frac{2}{7}\left(\frac{1}{2} \log_{2} \left(\frac{1}{2}\right)+\frac{1}{2} \log_{2} \left(\frac{1}{2}\right)\right)=0.965\\ \end{array} H(D∣天气)=−73​(31​log2​(31​)+32​log2​(32​))−72​(21​log2​(21​)+21​log2​(21​))−72​(21​log2​(21​)+21​log2​(21​))=0.965​

    (2) 温度:4次高(2次去,2次不去),2次中(1次去,1次不去),1次低(不去)

    H ( D ∣ 温度 ) = − 4 7 ( 1 2 log ⁡ 2 ( 1 2 ) + 1 2 log ⁡ 2 ( 1 2 ) ) − 2 7 ( 1 2 log ⁡ 2 ( 1 2 ) + 1 2 log ⁡ 2 ( 1 2 ) ) − 0 = 0.857 \begin{array}{c} H(D\mid \text {温度})=-\frac{4}{7}\left(\frac{1}{2} \log_{2} \left(\frac{1}{2}\right)+\frac{1}{2} \log_{2} \left(\frac{1}{2}\right)\right)-\frac{2}{7}\left(\frac{1}{2} \log_{2} \left(\frac{1}{2}\right)+\frac{1}{2} \log_{2} \left(\frac{1}{2}\right)\right)-0=0.857 \\ \end{array} H(D∣温度)=−74​(21​log2​(21​)+21​log2​(21​))−72​(21​log2​(21​)+21​log2​(21​))−0=0.857​

    (3) 湿度:4次高(2次去,2次不去),3次中(1次去,2次不去)

    H ( D ∣ 湿度 ) = − 4 7 ( 1 2 log ⁡ 2 ( 1 2 ) + 1 2 log ⁡ 2 ( 1 2 ) ) − 3 7 ( 1 3 log ⁡ 2 ( 1 3 ) + 2 3 log ⁡ 2 ( 2 3 ) ) = 0.965 \begin{array}{c} H(D\mid \text {湿度})=-\frac{4}{7}\left(\frac{1}{2} \log_{2} \left(\frac{1}{2}\right)+\frac{1}{2} \log_{2} \left(\frac{1}{2}\right)\right)-\frac{3}{7}\left(\frac{1}{3} \log_{2} \left(\frac{1}{3}\right)+\frac{2}{3} \log_{2} \left(\frac{2}{3}\right)\right) =0.965\\ \end{array} H(D∣湿度)=−74​(21​log2​(21​)+21​log2​(21​))−73​(31​log2​(31​)+32​log2​(32​))=0.965​

    (4) 刮风:3次刮风(1次去,2次不去),4次不刮风(2次去,2次不去)

    H ( D ∣ 刮风 ) = − 3 7 ( 1 3 log ⁡ 2 ( 1 3 ) + 2 3 log ⁡ 2 ( 2 3 ) ) − 4 7 ( 1 2 log ⁡ 2 ( 1 2 ) + 1 2 log ⁡ 2 ( 1 2 ) ) = 0.965 \begin{array}{c} H(D\mid \text {刮风})=-\frac{3}{7}\left(\frac{1}{3} \log_{2} \left(\frac{1}{3}\right)+\frac{2}{3} \log_{2} \left(\frac{2}{3}\right)\right)-\frac{4}{7}\left(\frac{1}{2} \log_{2} \left(\frac{1}{2}\right)+\frac{1}{2} \log_{2} \left(\frac{1}{2}\right)\right) =0.965\\ \end{array} H(D∣刮风)=−73​(31​log2​(31​)+32​log2​(32​))−74​(21​log2​(21​)+21​log2​(21​))=0.965​

  3. 计算信息增益

    Gain  ( D,天气 ) = H ( D ) − H ( D ∣ 天气 ) = 0.985 − 0.965 = 0.020 \text { Gain }(\text {D,天气})=H(\text {D})-H(\text {D} \mid \text {天气})=0.985-0.965=0.020  Gain (D,天气)=H(D)−H(D∣天气)=0.985−0.965=0.020

    Gain  ( D,温度 ) = H ( D ) − H ( D ∣ 温度 ) = 0.985 − 0.857 = 0.128 \text { Gain }(\text {D,温度})=H(\text {D})-H(\text {D} \mid \text {温度})=0.985-0.857=0.128  Gain (D,温度)=H(D)−H(D∣温度)=0.985−0.857=0.128

    Gain  ( D,湿度 ) = H ( D ) − H ( D ∣ 湿度 ) = 0.985 − 0.965 = 0.020 \text { Gain }(\text {D,湿度})=H(\text {D})-H(\text {D} \mid \text {湿度})=0.985-0.965=0.020  Gain (D,湿度)=H(D)−H(D∣湿度)=0.985−0.965=0.020

    Gain  ( D,刮风 ) = H ( D ) − H ( D ∣ 刮风 ) = 0.985 − 0.965 = 0.020 \text { Gain }(\text {D,刮风})=H(\text {D})-H(\text {D} \mid \text {刮风})=0.985-0.965=0.020  Gain (D,刮风)=H(D)−H(D∣刮风)=0.985−0.965=0.020

    我们能看出来温度作为属性的信息增益最大。因为 ID3 就是要将信息增益最大的节点作为父节点,这样可以得到纯度高的决策树,所以我们将温度作为根节点。其决策树状图分裂为下图所示:

然后我们要将上图中第一个叶节点,也就是温度进一步进行分裂,往下划分,计算其不同属性(天气、湿度、刮风)作为节点的信息增益,可以得到:

G a i n ( 温 度 : 高 , 湿 度 ) = 1 Gain(温度:高 , 湿度)=1 Gain(温度:高,湿度)=1

G a i n ( 温 度 : 高 , 天 气 ) = 1 Gain(温度:高 , 天气)=1 Gain(温度:高,天气)=1

G a i n ( 温 度 : 高 , 刮 风 ) = 0.3115 Gain(温度:高 , 刮风)=0.3115 Gain(温度:高,刮风)=0.3115

我们能看到湿度,或者天气在温度为高的节点都可以得到最大的信息增益,这里我们选取湿度作为节点的属性划分。同理,我们可以按照上面的计算步骤得到完整的决策树,结果如下:

C4.5算法

  1. 计算各属性的信息熵

    H ( 天 气 ) = − 3 7 log ⁡ 2 3 7 − 2 7 log ⁡ 2 2 7 − 2 7 log ⁡ 2 2 7 = 1.557 H(天气)=-\frac{3}{7} \log _{2} \frac{3}{7}-\frac{2}{7} \log _{2} \frac{2}{7}-\frac{2}{7} \log _{2} \frac{2}{7}=1.557 H(天气)=−73​log2​73​−72​log2​72​−72​log2​72​=1.557

    H ( 温 度 ) = − 4 7 log ⁡ 2 4 7 − 2 7 log ⁡ 2 2 7 − 1 7 log ⁡ 2 1 7 = 1.379 H(温度)=-\frac{4}{7} \log _{2} \frac{4}{7}-\frac{2}{7} \log _{2} \frac{2}{7}-\frac{1}{7} \log _{2} \frac{1}{7}=1.379 H(温度)=−74​log2​74​−72​log2​72​−71​log2​71​=1.379

    H ( 湿 度 ) = − 4 7 log ⁡ 2 4 7 − 3 7 log ⁡ 2 3 7 = 0.985 H(湿度)=-\frac{4}{7} \log _{2} \frac{4}{7}-\frac{3}{7} \log _{2} \frac{3}{7}=0.985 H(湿度)=−74​log2​74​−73​log2​73​=0.985

    H ( 刮 风 ) = − 3 7 log ⁡ 2 3 7 − 4 7 log ⁡ 2 4 7 = 0.985 H(刮风)=-\frac{3}{7} \log _{2} \frac{3}{7}-\frac{4}{7} \log _{2} \frac{4}{7}=0.985 H(刮风)=−73​log2​73​−74​log2​74​=0.985

  2. 计算信息增益率

    GainRatio  ( D , 天 气 ) = Gain ⁡ ( D , 天 气 ) H ( 天 气 ) = 0.128 \text { GainRatio }(D,天气)=\frac{\operatorname{Gain}(D,天气)}{H(天气)}= 0.128  GainRatio (D,天气)=H(天气)Gain(D,天气)​=0.128

    GainRatio  ( D , 温 度 ) = Gain ⁡ ( D , 温 度 ) H ( 温 度 ) = 0.093 \text { GainRatio }(D,温度)=\frac{\operatorname{Gain}(D,温度)}{H(温度)}=0.093  GainRatio (D,温度)=H(温度)Gain(D,温度)​=0.093

    GainRatio  ( D , 湿 度 ) = Gain ⁡ ( D , 湿 度 ) H ( 湿 度 ) = 0.203 \text { GainRatio }(D,湿度)=\frac{\operatorname{Gain}(D,湿度)}{H(湿度)}=0.203  GainRatio (D,湿度)=H(湿度)Gain(D,湿度)​=0.203

    GainRatio  ( D , 刮 风 ) = Gain ⁡ ( D , 刮 风 ) H ( 刮 风 ) = 0.203 \text { GainRatio }(D,刮风)=\frac{\operatorname{Gain}(D,刮风)}{H(刮风)}=0.203  GainRatio (D,刮风)=H(刮风)Gain(D,刮风)​=0.203

    湿度和刮风的信息增益率最高,这里选择湿度为根节点,之后继续重复上述步骤,方法类似ID3算法,介于步骤繁琐,作者就不一一列举了≡(▔﹏▔)≡。

CART算法

  1. 计算基尼系数

    Gini ⁡ ( D ) = 1 − ( 3 7 ) 2 − ( 4 7 ) 2 = 0.450 \operatorname{Gini}(\text {D}) = 1-\left(\frac{3}{7}\right)^{2}-\left(\frac{4}{7}\right)^{2} = 0.450 Gini(D)=1−(73​)2−(74​)2=0.450

  2. 计算条件基尼系数

    下面分别计算自变量天气、温度、湿度和刮风对因变量是否打篮球的条件基尼指数:

    (1) 天气

    打包处理为:晴天与非晴天(阴天与小雨为一组),阴天与非阴天(晴天与小雨为一组),小雨与非小雨(晴天与阴天为一组)

    Gini ⁡ ( D ∣ 晴 天 ) = 3 7 ( 1 − ( 2 3 ) 2 − ( 1 3 ) 2 ) + 4 7 ( 1 − ( 1 2 ) 2 − ( 1 2 ) 2 ) = 0.476 \begin{aligned} &\operatorname{Gini}(D\mid 晴天)=\frac{3}{7}\left(1-\left(\frac{2}{3}\right)^{2}-\left(\frac{1}{3}\right)^{2}\right)+\frac{4}{7}\left(1-\left(\frac{1}{2}\right)^{2}-\left(\frac{1}{2}\right)^{2}\right)=0.476\end{aligned} ​Gini(D∣晴天)=73​(1−(32​)2−(31​)2)+74​(1−(21​)2−(21​)2)=0.476​

    Gini ⁡ ( D ∣ 阴 天 ) = 2 7 ( 1 − ( 1 2 ) 2 − ( 1 2 ) 2 ) + 5 7 ( 1 − ( 2 5 ) 2 − ( 3 5 ) 2 ) = 0.486 \begin{aligned} &\operatorname{Gini}(D\mid 阴天)=\frac{2}{7}\left(1-\left(\frac{1}{2}\right)^{2}-\left(\frac{1}{2}\right)^{2}\right)+\frac{5}{7}\left(1-\left(\frac{2}{5}\right)^{2}-\left(\frac{3}{5}\right)^{2}\right)=0.486\end{aligned} ​Gini(D∣阴天)=72​(1−(21​)2−(21​)2)+75​(1−(52​)2−(53​)2)=0.486​

    Gini ⁡ ( D ∣ 小 雨 ) = 2 7 ( 1 − ( 1 2 ) 2 − ( 1 2 ) 2 ) + 5 7 ( 1 − ( 2 5 ) 2 − ( 3 5 ) 2 ) = 0.486 \begin{aligned} &\operatorname{Gini}(D\mid 小雨)=\frac{2}{7}\left(1-\left(\frac{1}{2}\right)^{2}-\left(\frac{1}{2}\right)^{2}\right)+\frac{5}{7}\left(1-\left(\frac{2}{5}\right)^{2}-\left(\frac{3}{5}\right)^{2}\right)=0.486\end{aligned} ​Gini(D∣小雨)=72​(1−(21​)2−(21​)2)+75​(1−(52​)2−(53​)2)=0.486​

    由于最小值为0.476,故将晴天与非晴天作为变量天气的二元划分。

    其余变量计算方法类似,温度和湿度需要打包分组,刮风可直接计算。

  3. 计算基尼系数下降速度

    以天气为例:

    △ Gini ⁡ ( D ) = Gini ⁡ ( D ) − Gini ⁡ ( D ∣ 晴 天 ) = 0.450 − 0.476 = − 0.026 \triangle \operatorname{Gini}(D)=\operatorname{Gini}(D)-\operatorname{Gini}(D\mid 晴天)= 0.450-0.476=-0.026 △Gini(D)=Gini(D)−Gini(D∣晴天)=0.450−0.476=−0.026

    再计算其余属性的下降速度,值最大的变量用于根节点的条件判断。接下来的步骤类似上述两种算法,继续迭代,直至结

    束。

三、总结

以上是对决策树三种经典算法的原理及步骤的解释,利用python可直接实现ID3算法和CART算法,希望上述文章可以帮助你真

正理解使用决策树方法进行分类时具体的处理方法。

数据分析算法(一):决策树相关推荐

  1. python数据分析算法调用_python数据分析算法(决策树2)CART算法

    CART(Classification And Regression Tree),分类回归树,,决策树可以分为ID3算法,C4.5算法,和CART算法.ID3算法,C4.5算法可以生成二叉树或者多叉树 ...

  2. 图解机器学习算法(6) | 决策树模型详解(机器学习通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/34 本文地址:https://www.showmeai.tech/article-d ...

  3. 机器学习算法 04 —— 决策树(ID3、C4.5、CART,剪枝,特征提取,回归决策树)

    文章目录 系列文章 决策树 1 决策树算法简介 2 决策树分类的原理 2.1 信息熵 2.2 决策树划分依据-信息增益(ID3) 2.3 决策树划分依据-信息增益率(C4.5) 2.4 决策树划分依据 ...

  4. Python算法:决策树分类

    Python算法:决策树分类 文章目录 Python算法:决策树分类 一.前言 二.决策树算法原理介绍 1.决策树原理 2.决策树构造 3.交叉验证 三.决策树算法函数介绍 1. train_test ...

  5. 算法杂货铺——分类算法之决策树(Decision tree)

    算法杂货铺--分类算法之决策树(Decision tree) 2010-09-19 16:30 by T2噬菌体, 88978 阅读, 29 评论, 收藏, 编辑 3.1.摘要 在前面两篇文章中,分别 ...

  6. 统计学习方法第五章作业:ID3/C4.5算法分类决策树、平方误差二叉回归树代码实现

    ID3/C4.5算法分类决策树 import numpy as np import math class Node:def __init__(self,feature_index=None,value ...

  7. 12_信息熵,信息熵公式,信息增益,决策树、常见决策树使用的算法、决策树的流程、决策树API、决策树案例、随机森林、随机森林的构建过程、随机森林API、随机森林的优缺点、随机森林案例

    1 信息熵 以下来自:https://www.zhihu.com/question/22178202/answer/161732605 1.2 信息熵的公式 先抛出信息熵公式如下: 1.2 信息熵 信 ...

  8. python决策树id3算法_决策树ID3算法预测隐形眼睛类型--python实现

    标签: 本节讲解如何预测患者需要佩戴的隐形眼镜类型. 1.使用决策树预测隐形眼镜类型的一般流程 (1)收集数据:提供的文本文件(数据来源于UCI数据库) (2)准备数据:解析tab键分隔的数据行 (3 ...

  9. sklearn分类器算法:决策树与随机森林及案例分析

    分类算法之决策树 决策树是一种基本的分类方法,当然也可以用于回归.我们一般只讨论用于分类的决策树.决策树模型呈树形结构.在分类问题中,表示基于特征对实例进行分类的过程,它可以认为是if-then规则的 ...

  10. SparkMLlib回归算法之决策树

    SparkMLlib回归算法之决策树 (一),决策树概念 1,决策树算法(ID3,C4.5 ,CART)之间的比较: 1,ID3算法在选择根节点和各内部节点中的分支属性时,采用信息增益作为评价标准.信 ...

最新文章

  1. 用ASP.NET建立一个在线RSS新闻聚合器(3)
  2. mdkstc系列器件支持包下载_WPS Office 2019 For Linux(2020/10/21)更新-支持PDF编辑
  3. 基本java,jquery异步 的级联下拉列表
  4. 百度智能音箱新品被指抄袭天猫精灵方糖R:存在5处雷同
  5. System Center 2012各组件介绍
  6. Nginx(二)状态信息(status)
  7. 【起航计划 027】2015 起航计划 Android APIDemo的魔鬼步伐 26 App-Preferences-Preferences from XML 偏好设置界面...
  8. php 线性回归算法,线性回归方程计算器
  9. JAVA 解析json字符串常用方法
  10. 2018年腾讯实习生招聘模拟笔试:硬币组合-个人思路及代码
  11. Permission is only granted to system apps解决方法
  12. vscode 侧边栏源代码管理不见了
  13. docker中安装mongo3.2
  14. ESP32-CAM视频流
  15. Lecture 3 Bit Hacks
  16. jwplayer 自定义logo已经右键菜单事件
  17. Python安装教程步骤3:Pycharm和Anaconda3安装及环境配置相关问题汇总
  18. 树莓派连接yl-69土壤湿度传感器
  19. 可以替代百度统计工具Matomo,小睿部署实战!看完你也会了哦!
  20. 浅析:选择WMS仓库管理系统的误区

热门文章

  1. Centos7进入图形界面
  2. 公司财务第一周作业(代理问题、财务管理)
  3. 李国庆:建议被降级降薪员工主动辞职,网友炸了!
  4. Gearman的安装和使用
  5. 苹果手机以旧换新活动_苹果中国宣布以旧换新活动延期至3月25日
  6. 2021年中国程序员薪资和生活现状调查报告
  7. java连接本地数据库命令_Java操作数据库时一次连接只能执行一条SQL命令
  8. 不做人生规划,你离挨饿只有三天(转)
  9. 老婆的最后一条短信----(真的很感人)
  10. 「Deep Learning」读书分享系列