数据分析算法(一):决策树
文章目录
- 一、相关概念
- 信息熵
- 条件熵
- 信息增益
- 信息增益率
- 基尼系数
- 条件基尼系数
- 基尼系数下降速度
- 二、相关算法
- 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)log2P(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)log2P(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=1Kpk(1−pk)=∑k=1K(pk−pk2)=1−∑k=1Kpk2
其中, 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∑2P(Ai)(1−k=1∑K(pik)2)=i=1∑2P(∣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算法
计算信息熵
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)=−73log273−74log274=0.985
计算每个属性的条件熵
(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(31log2(31)+32log2(32))−72(21log2(21)+21log2(21))−72(21log2(21)+21log2(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(21log2(21)+21log2(21))−72(21log2(21)+21log2(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(21log2(21)+21log2(21))−73(31log2(31)+32log2(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(31log2(31)+32log2(32))−74(21log2(21)+21log2(21))=0.965
计算信息增益
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算法
计算各属性的信息熵
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(天气)=−73log273−72log272−72log272=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(温度)=−74log274−72log272−71log271=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(湿度)=−74log274−73log273=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(刮风)=−73log273−74log274=0.985
计算信息增益率
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算法
计算基尼系数
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
计算条件基尼系数
下面分别计算自变量天气、温度、湿度和刮风对因变量是否打篮球的条件基尼指数:
(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,故将晴天与非晴天作为变量天气的二元划分。
其余变量计算方法类似,温度和湿度需要打包分组,刮风可直接计算。
计算基尼系数下降速度
以天气为例:
△ 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算法,希望上述文章可以帮助你真
正理解使用决策树方法进行分类时具体的处理方法。
数据分析算法(一):决策树相关推荐
- python数据分析算法调用_python数据分析算法(决策树2)CART算法
CART(Classification And Regression Tree),分类回归树,,决策树可以分为ID3算法,C4.5算法,和CART算法.ID3算法,C4.5算法可以生成二叉树或者多叉树 ...
- 图解机器学习算法(6) | 决策树模型详解(机器学习通关指南·完结)
作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/34 本文地址:https://www.showmeai.tech/article-d ...
- 机器学习算法 04 —— 决策树(ID3、C4.5、CART,剪枝,特征提取,回归决策树)
文章目录 系列文章 决策树 1 决策树算法简介 2 决策树分类的原理 2.1 信息熵 2.2 决策树划分依据-信息增益(ID3) 2.3 决策树划分依据-信息增益率(C4.5) 2.4 决策树划分依据 ...
- Python算法:决策树分类
Python算法:决策树分类 文章目录 Python算法:决策树分类 一.前言 二.决策树算法原理介绍 1.决策树原理 2.决策树构造 3.交叉验证 三.决策树算法函数介绍 1. train_test ...
- 算法杂货铺——分类算法之决策树(Decision tree)
算法杂货铺--分类算法之决策树(Decision tree) 2010-09-19 16:30 by T2噬菌体, 88978 阅读, 29 评论, 收藏, 编辑 3.1.摘要 在前面两篇文章中,分别 ...
- 统计学习方法第五章作业:ID3/C4.5算法分类决策树、平方误差二叉回归树代码实现
ID3/C4.5算法分类决策树 import numpy as np import math class Node:def __init__(self,feature_index=None,value ...
- 12_信息熵,信息熵公式,信息增益,决策树、常见决策树使用的算法、决策树的流程、决策树API、决策树案例、随机森林、随机森林的构建过程、随机森林API、随机森林的优缺点、随机森林案例
1 信息熵 以下来自:https://www.zhihu.com/question/22178202/answer/161732605 1.2 信息熵的公式 先抛出信息熵公式如下: 1.2 信息熵 信 ...
- python决策树id3算法_决策树ID3算法预测隐形眼睛类型--python实现
标签: 本节讲解如何预测患者需要佩戴的隐形眼镜类型. 1.使用决策树预测隐形眼镜类型的一般流程 (1)收集数据:提供的文本文件(数据来源于UCI数据库) (2)准备数据:解析tab键分隔的数据行 (3 ...
- sklearn分类器算法:决策树与随机森林及案例分析
分类算法之决策树 决策树是一种基本的分类方法,当然也可以用于回归.我们一般只讨论用于分类的决策树.决策树模型呈树形结构.在分类问题中,表示基于特征对实例进行分类的过程,它可以认为是if-then规则的 ...
- SparkMLlib回归算法之决策树
SparkMLlib回归算法之决策树 (一),决策树概念 1,决策树算法(ID3,C4.5 ,CART)之间的比较: 1,ID3算法在选择根节点和各内部节点中的分支属性时,采用信息增益作为评价标准.信 ...
最新文章
- 用ASP.NET建立一个在线RSS新闻聚合器(3)
- mdkstc系列器件支持包下载_WPS Office 2019 For Linux(2020/10/21)更新-支持PDF编辑
- 基本java,jquery异步 的级联下拉列表
- 百度智能音箱新品被指抄袭天猫精灵方糖R:存在5处雷同
- System Center 2012各组件介绍
- Nginx(二)状态信息(status)
- 【起航计划 027】2015 起航计划 Android APIDemo的魔鬼步伐 26 App-Preferences-Preferences from XML 偏好设置界面...
- php 线性回归算法,线性回归方程计算器
- JAVA 解析json字符串常用方法
- 2018年腾讯实习生招聘模拟笔试:硬币组合-个人思路及代码
- Permission is only granted to system apps解决方法
- vscode 侧边栏源代码管理不见了
- docker中安装mongo3.2
- ESP32-CAM视频流
- Lecture 3 Bit Hacks
- jwplayer 自定义logo已经右键菜单事件
- Python安装教程步骤3:Pycharm和Anaconda3安装及环境配置相关问题汇总
- 树莓派连接yl-69土壤湿度传感器
- 可以替代百度统计工具Matomo,小睿部署实战!看完你也会了哦!
- 浅析:选择WMS仓库管理系统的误区