机器学习--02算法--07决策树

本文学习决策树算法

一、信息熵和条件熵

1. 简介

熵的概念最早起源于,热力学中表征物质状态的参量之一,其物理意义是体系混乱程度的度量,即用于度量一个热力学系统的无序程度。在信息论里面,熵是对信息不确定性的测量。
熵越高,信息的不确定性越大,预测的难度越大,则能传输越多的信息;
熵越低,信息的不确定性越小,即信息很容易预测到,则意味着传输的信息越少。

(1)信息熵/边缘熵/先验熵

以下表为例说明信息熵的计算方法。

表1. 目标值为PlayTennis的14个训练样例

DayOutlookTemperatureHumidityWindPlayTennis
D 1 \mathrm{D}_1 D1SunnyHotHighWeakNo
D 2 \mathrm{D}_2 D2SunnyHotHighStrongNo
D 3 \mathrm{D}_3 D3OvercastHotHighWeakYes
D 4 \mathrm{D}_4 D4RainMildHighWeakYes
D 5 \mathrm{D}_5 D5RainCoolNormalWeakYes
D 6 \mathrm{D}_6 D6RainCoolNormalStrongNo
D 7 \mathrm{D}_7 D7OvercastCoolNormalStrongYes
D 8 \mathrm{D}_8 D8SunnyMildHighWeakNo
D 9 \mathrm{D}_9 D9SunnyCoolNormalWeakYes
D 10 \mathrm{D}_{10} D10RainMildNormalWeakYes
D 11 \mathrm{D}_{11} D11SunnyMildNormalStrongYes
D 12 \mathrm{D}_{12} D12OvercastMildHighStrongYes
D 13 \mathrm{D}_{13} D13OvercastHotNormalWeakYes
D 14 \mathrm{D}_{14} D14RainMildHighStrongNo

如表1所示,目标值是:PlayTennis,也就是是否打球。
表1中有四个特征,分别是天气(Outlook)、温度(Temperature)、湿度(Humidity)以及风(Wind)。
 
 
信息熵的公式:
H ( X ) = − ∑ x ∈ X p ( x ) log ⁡ p ( x ) \mathrm{H}(\mathrm{X})=-\sum_{x\in\mathrm{X}}\mathrm{p}(\mathrm{x})\log\mathrm{p}(\mathrm{x}) H(X)=xXp(x)logp(x)
注意:

  • 熵与X变量的取值无关,只依赖于X的分布, H可以看作 p 1 , p 2 , . . . , p n p_{1},p_{2},...,p_{n} p1,p2,...,pn的函数;
  • 熵可以看作 − l o g p i -\mathrm{logp}_{i} logpi的数学期望,负号的作用是确保结果为正;
  • log 一般以2为底,单位是比特(bit),或者以e为底,单位奈特(nat);
    信息熵的取值范围:
    0 ≤ H ( X ) ≤ log ⁡ n 0\leq H(X)\leq\log n 0H(X)logn
    n:X的取值类别数

p = 0 / 1 p=0/1 p=0/1时, H ( X ) = 0 H(X)=0 H(X)=0:随机变量取值很确定,即完全没有信息的不确定性;
p = 1 n p=\dfrac{1}{n} p=n1时, H ( X ) = l o g n H(X)=\mathrm{log}n H(X)=logn:此时模棱两可,熵取值最大。也就是,当随机变量 X 为均匀分布时,信息熵取值最大。

顺带一提,

以表1为例,设是否打球这一随机变量为 Y,则
​ p ⁡ ( Y ⁡ = Yes ⁡ ) = 9 14 p ⁡ ( Y ⁡ = No ⁡ ) = 5 14 ​\begin{array}{c}\operatorname{p}(\operatorname{Y}=\operatorname{Yes})=\dfrac{9}{14}\\\\ \operatorname{p}(\operatorname{Y}=\operatorname{No})=\dfrac{5}{14}\end{array} p(Y=Yes)=149p(Y=No)=145

所以,
H ( Y ) = − ∑ y ∈ Y p ( y ) log ⁡ p ( y ) = − ( p ( Y = Y e s ) ∗ log ⁡ p ( Y = Y e s ) + p ( Y = N o ) ∗ log ⁡ p ( Y = N o ) ) = − ( 9 14 ∗ log ⁡ 2 9 14 + 5 14 ∗ log ⁡ 2 5 14 ) = 0.9403 \begin{aligned} \mathrm H(Y)&=-\sum_{\mathrm{y}\in{Y}}\mathbb{p}(y)\log p(y)\\ &=-(\mathbb{p}(Y=\mathrm{Yes})*\log p(Y=\mathrm{Yes})+\mathbb{p}(Y=\mathrm{No})*\log p(Y=\mathrm{No}))\\ &=-(\frac{9}{14}*\log_2\frac{9}{14}+\frac{5}{14}*\log_2\frac{5}{14})\\ &=0.9403 \end{aligned} H(Y)=yYp(y)logp(y)=(p(Y=Yes)logp(Y=Yes)+p(Y=No)logp(Y=No))=(149log2149+145log2145)=0.9403


(2) 条件熵

条件熵表示在条件 X X X Y Y Y 的信息熵。
公式如下:
H ( Y ∣ X ) = ∑ x ∈ X p ( x ) H ( Y ∣ X = x ) = − ∑ x ∈ X p ( x ) ∑ y ∈ Y p ( y ∣ x ) log ⁡ p ( y ∣ x ) = − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log ⁡ p ( y ∣ x ) \begin{array}{ll} H(Y|X)&=\sum\limits_{x\in X}\mathrm{p(x)}H(Y|X=\mathrm{x})\\ &=-\sum\limits_{x\in X}\mathrm{p(x)}\sum\limits_{y\in Y}\mathrm{p(y|x)}\log \mathrm{p(y|x)}\\ &=-\sum\limits_{x\in X}\sum\limits_{y\in Y}\mathrm{p(x,y)}\log \mathrm{p(y|x)} \end{array} H(YX)=xXp(x)H(YX=x)=xXp(x)yYp(y∣x)logp(y∣x)=xXyYp(x,y)logp(y∣x)

公式解释:是Y的分布的熵对X的期望,所以是 p ( X ) H ( Y ∣ x ) \mathrm{p(X)H(Y|x)} p(X)H(Y∣x)
另外,联合概率,独立概率(边缘概率)和条件概率的关系为:P(x,y)=P(y|x)*P(x)。意思就是 x , y x,y x,y同时发生的概率等于y在条件x下发生概率*x本身的概率。例如:某一天打雷又下雨的概率=打雷的概率×打雷时下雨的概率

在表1的例子中,设湿度(Humidity)为随机变量 X X X,则:
p ⁡ ( X ⁡ = High ⁡ ) = 7 14 = 1 2 p ⁡ ( X ⁡ = Normal ⁡ ) = 7 14 = 1 2 \begin{array}{c}\operatorname{p}(\operatorname{X}=\operatorname{High})=\dfrac{7}{14}=\dfrac{1}{2}\\\\ \operatorname{p}(\operatorname{X}=\operatorname{Normal})=\dfrac{7}{14}=\dfrac{1}{2}\end{array} p(X=High)=147=21p(X=Normal)=147=21
所以:
H ⁡ ( Y ∣ X ) = ∑ x ∈ X p ⁡ ( X ) H ⁡ ( Y ∣ X = x ) = p ⁡ ( X = High ⁡ ) ∗ H ⁡ ( Y ∣ X = High ⁡ ) + p ⁡ ( X = Normal ⁡ ) ∗ H ⁡ ( Y ∣ X = Normal ⁡ ) \begin{aligned}\operatorname{H}(Y|X)&=\sum_{x\in X}\operatorname{p}(X)\operatorname{H}(Y|X=\mathrm{x})\\ &=\operatorname{p}(X=\operatorname{High})*\operatorname{H}(Y|X=\operatorname{High})+\operatorname{p}(X=\operatorname{Normal})*\operatorname{H}(Y|X=\operatorname{Normal})\end{aligned} H(YX)=xXp(X)H(YX=x)=p(X=High)H(YX=High)+p(X=Normal)H(YX=Normal)
接下来计算 H ( Y ∣ X = High ⁡ ) 和 H ( Y ∣ X = Normal ⁡ ) H ( Y|X = \operatorname{High} ) 和H ( Y|X =\operatorname{Normal} ) H(YX=High)H(YX=Normal)
 
根据信息熵的计算方法可得:
H ( Y ∣ X = H i g h ) = − ∑ y ∈ Y p ( y ) log ⁡ p ( y ) = − ( p ( Y = Y e s ∣ X = H i g h ) ∗ log ⁡ p ( Y = Y e s ∣ X = H i g h ) + p ( Y = N o ∣ X = H i g h ) ∗ log ⁡ p ( Y = N o ∣ X = H i g h ) = − ( 3 7 ∗ log ⁡ 2 3 7 + 4 7 ∗ log ⁡ 2 4 7 ) = 0.9852 \begin{aligned}\mathrm{H}(\mathrm{Y|X=High})&=-\sum_{y\in Y}\mathrm{p(y)}\log\mathrm{p(y)}\\ &=-(\mathrm{p}(\mathrm{Y=Yes}|\mathrm{X}=\mathrm{High})*\log\mathrm{p}(\mathrm{Y=Yes}|\mathrm{X}=\mathrm{High})\\ &+\mathrm{p}(\mathrm{Y=No}|\mathrm{X}=\mathrm{High)}*\log\mathrm{p}(\mathrm{Y}=\mathrm{No}|\mathrm{X}=\mathrm{High})\\ &=-(\frac{3}{7}*\log_2\frac{3}{7}+\frac{4}{7}*\log_2\frac{4}{7})\\ &=0.9852\end{aligned} H(Y∣X=High)=yYp(y)logp(y)=(p(Y=YesX=High)logp(Y=YesX=High)+p(Y=NoX=High)logp(Y=NoX=High)=(73log273+74log274)=0.9852
H ( Y ∣ X = N o r m a l ) = − ∑ y ∈ Y p ( y ) log ⁡ p ( y ) = − ( p ( Y = Y e s ∣ X = N o r m a l ) ∗ log ⁡ p ( Y = Y e s ∣ X = N o r m a l ) + p ( Y = N o ∣ X = N o r m a l ) ∗ log ⁡ p ( Y = N o ∣ X = N o r m a l ) = − ( 6 7 ∗ log ⁡ 2 6 7 + 1 7 ∗ log ⁡ 2 1 7 ) = 0.5917 \begin{aligned}\mathrm{H}(\mathrm{Y|X=Normal})&=-\sum_{y\in Y}\mathrm{p(y)}\log\mathrm{p(y)}\\ &=-(\mathrm{p}(\mathrm{Y=Yes}|\mathrm{X}=\mathrm{Normal})*\log\mathrm{p}(\mathrm{Y=Yes}|\mathrm{X}=\mathrm{Normal})\\ &+\mathrm{p}(\mathrm{Y=No}|\mathrm{X}=\mathrm{Normal)}*\log\mathrm{p}(\mathrm{Y}=\mathrm{No}|\mathrm{X}=\mathrm{Normal})\\ &=-(\frac{6}{7}*\log_2\frac{6}{7}+\frac{1}{7}*\log_2\frac{1}{7})\\ &=0.5917\end{aligned} H(Y∣X=Normal)=yYp(y)logp(y)=(p(Y=YesX=Normal)logp(Y=YesX=Normal)+p(Y=NoX=Normal)logp(Y=NoX=Normal)=(76log276+71log271)=0.5917
因此,
H ( Y ∣ X ) = ∑ x ∈ X p ( x ) H ( Y ∣ X = x ) p ( X = H i g h ) ∗ ( H ( Y ∣ X = H i g h ) + p ( X = N o r m a l ) ∗ ( H ( Y ∣ X = N o r m a l ) = 1 2 ∗ 0.9852 + 1 2 ∗ 0.5917 = 0.7884 \begin{aligned} \mathrm{H}(Y|X)&=\sum_{x\in X}\mathrm{p(x)}\mathrm{H}(Y|X=\mathrm{x})\\ &\mathrm{p}(\mathrm{X=High})*\mathrm{(H(Y|X=High})+\mathrm{p}(\mathrm{X=Normal})*\mathrm{(H(Y|X=Normal})\\ &=\frac{1}{2}*0.9852+\frac{1}{2}*0.5917\\ &=0.7884 \end{aligned} H(YX)=xXp(x)H(YX=x)p(X=High)(H(Y∣X=High)+p(X=Normal)(H(Y∣X=Normal)=210.9852+210.5917=0.7884

(3)联合熵

公式如下:
H ( X , Y ) = − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log ⁡ p ( x , y ) \begin{array}{ll} H(X,Y)&=-\sum\limits_{x\in X}\sum\limits_{y\in Y}\mathrm{p(x,y)}\log \mathrm{p(x,y)} \end{array} H(X,Y)=xXyYp(x,y)logp(x,y)
先验熵、条件熵和联合熵的关系:
H ( X , Y ) = H ( X ) + H ( Y ∣ X ) H(X,Y)=H(X)+H(Y|X) H(X,Y)=H(X)+H(YX)

对比 P ( x , y ) = P ( x ) ∗ P ( y ∣ x ) P(x,y)=P(x)*P(y|x) P(x,y)=P(x)P(yx)

(4) 互信息(信息增益)

定义:互信息 I ( X , Y ) I(X,Y) I(X,Y)的含义:给定条件Y后,X的信息的不确定性减少的程度。
I ( X , Y ) = I ( Y , X ) = H ( X ) − H ( X ∣ Y ) = H ( Y ) − H ( Y ∣ X ) I(X,Y)=I(Y,X)=H(X)-H(X|Y)=H(Y)-H(Y|X) I(X,Y)=I(Y,X)=H(X)H(XY)=H(Y)H(YX)

如果X和Y相互独立,则 H ( X ) = H ( X ∣ Y ) H(X)=H(X|Y) H(X)=H(XY),即它们的互信息为0。

2.决策树

2.1 ID3算法

决策树是一种树形结构(可以是二叉树或者非二叉树),包含三种结构:内部节点、分支和叶片节点。其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果。
最终形成一颗树,最末端都是树叶子(分类结果),这是一种有监督学习。当决策树构建完成后,使用时根据输入条件,可带入相应的枝丫路径,最终导向某一个叶片结果,完成新输入的分类预测。
构建原则是: 随着树的深度的增加,节点的熵迅速的降低。熵降低的速度越快越好,这样就能得到一颗较矮的决策树(能 3 步判断出来就不用 5 步判断)。
以上面表格为例,构建决策树示例如下:
在这里插入图片描述
或者:
在这里插入图片描述
按照这种形式可以构建很多颗树,但是哪一种构建方式最合理呢,请往下看。
构建决策树第一个问题就是该把哪个属性当作根节点?outlook?temperature?windy?首先,把这四个属性当作根节点分别构建四棵树,结果如下:
在这里插入图片描述
以上四种选取哪种?依据就是哪种的熵下降得最快!
计算如下:
(1)边缘熵
上面 14 条数据,我们可知新的一天打球的概率是 9/14 ,不打的概率是 5/14。此时的熵为(前面已计算):
H ( Y ) = − 9 14 l o g 2 9 14 − 5 14 l o g 2 5 14 = 0.9403 H(Y)=-\dfrac{9}{14}log_2\dfrac{9}{14}-\dfrac{5}{14}log_2\dfrac{5}{14}=0.9403 H(Y)=149log2149145log2145=0.9403
(2)条件熵
由上面算例,“3.基于湿度的划分”,条件熵为0.7884
这样的话,如果选择 humidity 当作根节点,熵就原始的 0.940 下降到了 0.7884,信息熵增益(互信息) I ( Y , X = ( h u m i d i t y ) ) I(Y,X= (humidity)) I(Y,X=(humidity))为:0.9403-0.7884=0.1519。

下面再计算一下“1.基于天气的划分”

outlook有三个分支,需要分别计算三个分支的熵
① 第一个分支: sunny 的熵为:
H s u n n y = − ( 2 5 l o g 2 2 5 + 3 5 l o g 2 3 5 ) = 0.971 H_{sunny}=-(\dfrac{2}{5}log_2\dfrac{2}{5}+\dfrac{3}{5}log_2\dfrac{3}{5})=0.971 Hsunny=(52log252+53log253)=0.971
③第二个分支: overcast 的熵为:
H o v e r c a s t = − ( 4 4 l o g 2 4 4 + 0 4 l o g 2 0 4 ) = 0 H_{overcast}=-(\dfrac{4}{4}log_2\dfrac{4}{4}+\dfrac{0}{4}log_2\dfrac{0}{4})=0 Hovercast=(44log244+40log240)=0
③第三个分支: rainy 的熵为:
H r a i n = − ( 3 5 l o g 2 3 5 + 2 5 l o g 2 2 5 ) = 0.971 H_{rain}=-(\dfrac{3}{5}log_2\dfrac{3}{5}+\dfrac{2}{5}log_2\dfrac{2}{5})=0.971 Hrain=(53log253+52log252)=0.971

④总体计算: outlook 当作根节点时,14 条数据显示 5/14 的情况下是 sunny, 4/14 情况下是 overcast,5/15 的情况下为 rain。outlook 当作根节点时,熵的值为:
H ( Y ∣ X ) = 5 15 ∗ 0.971 + 4 14 ∗ 0 + 5 14 ∗ 0.971 = 0.693 H(Y|X)=\dfrac{5}{15}*0.971+\dfrac{4}{14}*0+\dfrac{5}{14}*0.971=0.693 H(YX)=1550.971+1440+1450.971=0.693
这样的话,如果选择 outlook 当作根节点,熵就原始的 0.9403 下降到了 0.693,信息熵增益 I ( Y , X = ( o u t l o o k ) ) I(Y,X= (outlook)) I(Y,X=(outlook))为:0.940-0.693=0.247。
⑤总结
I ( Y , X = ( o u t l o o k ) ) I(Y,X= (outlook)) I(Y,X=(outlook)) = 0.247 、 I ( Y , X = ( T e m p e r a t u r e ) ) I(Y,X= (Temperature)) I(Y,X=(Temperature))= 0.029 、
I ( Y , X = ( h u m i d i t y ) ) I(Y,X= (humidity)) I(Y,X=(humidity))=0.152、 I ( Y , X = ( w i n d y ) ) I(Y,X= (windy)) I(Y,X=(windy))=0.048。
简写为
I ( Y , X 1 ) I(Y,X_1) I(Y,X1) = 0.247 、 I ( Y , X 2 ) I(Y,X_2) I(Y,X2)= 0.029 、
I ( Y , X 3 ) I(Y,X_3) I(Y,X3)=0.152、 I ( Y , X 4 ) I(Y,X_4) I(Y,X4)=0.048。
其中 gain(outlook) 最大,说明熵下降的最快,该属性当作根节点能够分的更好。所以根节点就选取 outlook。

ID3算法中还存在着一些不足之处:
1.ID3没有考虑连续特征,比如长度,密度都是连续值,无法在ID3运用。这大大限制了ID3的用途。
2.ID3采用信息增益大的特征优先建立决策树的节点。很快就被人发现,在相同条件下,取值比较多的特征比取值少的特征信息增益大。比如一个变量有2个值,各为1/2,另一个变量为3个值,各为1/3,其实他们都是完全不确定的变量,但是取3个值的比取2个值的信息增益大。(信息增益反映的给定一个条件以后不确定性减少的程度,必然是分得越细的数据集确定性更高,也就是条件熵越小,信息增益越大)如河校正这个问题呢?为了解决这些问题我们有了C4.5算法。

2.2 C4.5算法

对于第一个问题,不能处理连续特征, C4.5的思路是将连续的特征离散化。比如m个样本的连续特征A有m个,从小到大排列为 a 1 , a 2 , … , a m a_1,a_2,\ldots,a_m a1,a2,,am。则C4.5取相邻两样本值的平均数,一共取得 m − 1 m-1 m1个划分点,其中第 i i i 个划分点表示为 T i = a i + a i + 1 2 T_i=\dfrac{a_i+a_{i+1}}{2} Ti=2ai+ai+1:。对于这 m − 1 m-1 m1个点,分别计算以该点作为二元分类点时的信息增益。选择信息增益最大的点作为该连续特征的二元离散分类点。比如取到的增益最大的点为,取大于为类别1,小于为类别2。这样我们就做到了连续特征的离散化。示例参考:通俗易懂的讲解决策树。
对于第二个问题,信息增益作为标准容易偏向于取值较多的特征。C4.5中提出了信息增益比:
I R ( Y , X ) = I ( Y , X ) H ( X ) I_R(Y,X)=\dfrac{I(Y,X)}{H(X)} IR(Y,X)=H(X)I(Y,X)
同样对于上面例子,已经计算出了 I ( Y , X 1 ) = 0.247 , I ( Y , X 2 ) = 0.029 , I ( Y , X 3 ) = 0.152 , I ( Y , X 4 ) = 0.048 I(Y,X_1)= 0.247 ,I(Y,X_2)= 0.029 ,I(Y,X_3)=0.152,I(Y,X_4)=0.048 I(Y,X1)=0.247I(Y,X2)=0.029I(Y,X3)=0.152I(Y,X4)=0.048
再分别计算出 H ( X 1 ) = 1.575 , H ( X 2 ) = 1.557 , H ( X 3 ) = 1 , H ( X 4 ) = 0.985 H(X_1)=1.575,H(X_2)=1.557,H(X_3)=1,H(X_4)=0.985 H(X1)=1.575H(X2)=1.557H(X3)=1H(X4)=0.985
按上述公式得到 I R ( Y , X 1 ) = 15.68 I_R(Y,X_1)= 15.68%,I_R(Y,X_2)= 1.86%,I_R(Y,X_3)=15.20%,I_R(Y,X_4)=4.87% IR(Y,X1)=15.68
所以 X 1 X_1 X1具有具有最大的信息增益比,所以第一次分裂选择outlook为分裂属性

2.3 CART模型

看完上述材料,我们知道在ID3算法中我们使用了信息增益来选择特征,信息增益大的优先选择。在C4.5算法中,采用了信息增益比来选择特征,以减少信息增益容易选择特征值种类多的特征的问题。但是无论是ID3还是C4.5,都是基于信息论的熵模型的,这里面会涉及大量的对数运算。能不能简化模型同时也不至于完全丢失熵模型的优点呢?有!CART分类树算法使用基尼系数来代替信息增益比,基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好。这和信息增益(比)是相反的。
在分类问题中,假设有 K K K个类别,第 k k k 个类别的概率为 p k p_{k} pk ,则基尼系数为:
G i n i ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 Gini(p)=\sum_{k=1}^{K}p_k(1-p_k)=1-\sum_{k=1}^{K}p_k^2 Gini(p)=k=1Kpk(1pk)=1k=1Kpk2
以上文的例子计算:
G i n i ( Y ) = 1 − ( 9 14 ) 2 − ( 5 14 ) 2 = 0.4592 Gini(Y)=1-(\dfrac {9}{14})^2-(\dfrac {5}{14})^2=0.4592 Gini(Y)=1(149)2(145)2=0.4592
类似条件概率计算,X特征条件下的Y的基尼系数公式为:
G ( Y ∣ X ) = ∑ x ∈ X p ( x ) G ( Y ∣ X = x ) G(Y|X)=\sum\limits_{x\in X}\mathrm{p(x)}G(Y|X=\mathrm{x}) G(YX)=xXp(x)G(YX=x)

以上面outlook分支为例:
① 第一个分支: sunny 的基尼为:
G s u n n y = 1 − ( 2 5 ) 2 − ( 3 5 ) 2 = 0.4800 G_{sunny}=1-(\dfrac {2}{5})^2-(\dfrac {3}{5})^2=0.4800 Gsunny=1(52)2(53)2=0.4800
③第二个分支: overcast 的熵为:
G o v e r c a s t = 1 − ( 4 4 ) 2 − ( 0 4 ) 2 = 0 G_{overcast}=1-(\dfrac {4}{4})^2-(\dfrac {0}{4})^2=0 Govercast=1(44)2(40)2=0
③第三个分支: rainy 的熵为:
G r a i n = − 1 − ( 2 5 ) 2 − ( 3 5 ) 2 = 0.4800 G_{rain}=-1-(\dfrac {2}{5})^2-(\dfrac {3}{5})^2=0.4800 Grain=1(52)2(53)2=0.4800

④总体计算: outlook 当作根节点时,14 条数据显示 5/14 的情况下是 sunny, 4/14 情况下是 overcast,5/15 的情况下为 rainy。outlook 当作根节点时,基尼系数为:
G ( Y ∣ X ) = 5 15 ∗ 0.4800 + 4 14 ∗ 0 + 5 14 ∗ 0.4800 = 0.3314 G(Y|X)=\dfrac{5}{15}*0.4800+\dfrac{4}{14}*0+\dfrac{5}{14}*0.4800=0.3314 G(YX)=1550.4800+1440+1450.4800=0.3314
⑤总结
G ( Y , X = ( o u t l o o k ) ) G(Y,X= (outlook)) G(Y,X=(outlook)) = 0.3314 、 G ( Y , X = ( T e m p e r a t u r e ) ) G(Y,X= (Temperature)) G(Y,X=(Temperature))= 0.4405 、
I ( Y , X = ( h u m i d i t y ) ) I(Y,X= (humidity)) I(Y,X=(humidity))=0.3674、 I ( Y , X = ( w i n d y ) ) I(Y,X= (windy)) I(Y,X=(windy))=0.4286。

outlook的基尼系数最小,所以第一根节点就选它。

3. 程序实现

scikit-learn决策树分类实现

from sklearn import tree

# 决策树分类
clf = tree.DecisionTreeClassifier()
# 拟合数据
clf = clf.fit(X, y)

scikit-learn决策树回归实现

from sklearn import tree

# 决策树回归
clf = tree.DecisionTreeRegressor()
# 拟合数据
clf = clf.fit(X, y)

更进一步请参考机器学习算法系列(十七)-决策树学习算法(Decision Tree Learning Algorithm)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值