日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【机器学习】深刻理解决策树-动手计算ID3算法

發(fā)布時間:2025/3/12 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【机器学习】深刻理解决策树-动手计算ID3算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?一、決策樹概述

決策樹算法易于理解、可解釋性強,是一個非常常見并且優(yōu)秀的機器學(xué)習算法,可分類,也可回歸。現(xiàn)在許多最優(yōu)秀的集成模型,基礎(chǔ)也是決策樹。因此,決策樹系列算法是機器學(xué)習繞不過的大山。需要進行非常系統(tǒng)化、深刻化的學(xué)習和理解。

在信息論中一個屬性的信息增益越大,表明該屬性對樣本的熵減少能力越強,也就是說確定這個屬性會使系統(tǒng)越穩(wěn)定有序(熵越小系統(tǒng)越穩(wěn)定),那么該分區(qū)的純度也就越高。

不論一個數(shù)據(jù)集有多少特征,每次劃分數(shù)據(jù)集時只能選一個特征,那么第一次選擇哪個特征作為劃分的參考屬性才能將數(shù)據(jù)更快的分類呢?

答案一定是分類能力最好的那個特征,但問題來了,如何判斷哪一個特征分類能力最好呢?可以引入一個比較感性的概念,就是純度,分裂后越純越好,衡量純度有三種常見的方法,不同的衡量方法可能會導(dǎo)致不同的分裂。

1) ID3 ?算 法:Iterative Dichotomiser3,迭代二叉樹三代,是最早提出的決策樹算法,用信息增益作為分裂準則。

2) C4.5 算 法:C4.5由J.Ross Quinlan在ID3的基礎(chǔ)上提出的,他是 ID3 的改進版,用信息增益率作為分類準則。

3) CART算法:Classification and Regression Tree,分類回歸樹,用基尼指數(shù)作為分裂準則,這種算法即可以用于分類,也可以用于回歸問題。

今天我們要講的就是第一個算法:ID3 ?算 法,其余兩種算法將會后續(xù)推出詳細的講解,在下面的文章中,我會帶著大家一步步的計算信息增益,讓大家徹底理解ID3算法的原理。如果有不懂的,也可以加我交流:wuzhx2014

二、數(shù)據(jù)集介紹

下面是本例采用的數(shù)據(jù)集,包含了過去 14 天的天氣因素 Outlook(天氣)Temp.(溫度),Humidity(濕度)、Wind(風力) 4 個特征、14 個樣本,來學(xué)習一個是否去室外打球的決策樹。

Day

Outlook

Temp.

Humidity

Wind

Decision

1

Sunny

Hot

High

Weak

No

2

Sunny

Hot

High

Strong

No

3

Overcast

Hot

High

Weak

Yes

4

Rain

Mild

High

Weak

Yes

5

Rain

Cool

Normal

Weak

Yes

6

Rain

Cool

Normal

Strong

No

7

Overcast

Cool

Normal

Strong

Yes

8

Sunny

Mild

High

Weak

No

9

Sunny

Cool

Normal

Weak

Yes

10

Rain

Mild

Normal

Weak

Yes

11

Sunny

Mild

Normal

Strong

Yes

12

Overcast

Mild

High

Strong

Yes

13

Overcast

Hot

Normal

Weak

Yes

14

Rain

Mild

High

Strong

No

對于決策樹ID3算法,只有兩個核心公式,計算經(jīng)驗熵和條件熵,我們簡單回顧下:

經(jīng) 驗 ?熵:Entropy(S) ? ?= -∑ p(i) * log2p(i)

條 件 ?熵:Entropy(S|A) = ∑ [ p(S|A) * Entropy(S|A) ]

信息增益:Gain(S, A) ? ? =?Entropy(S) -∑ [ p(S|A)* Entropy(S|A) ]

這些公式看起來可能會讓人迷惑,我們從實際計算中,一步步來理解這些公式,理解了上面的三個公式,基本上也就理解了決策樹這個算法。

三、經(jīng)驗熵計算

首先,我們需要計算整個數(shù)據(jù)集的經(jīng)驗熵,也就是固有的熵,數(shù)據(jù)集包含14個樣本和兩個類別:Yes and No,9個樣本是Yes,5個樣本是No。

標簽

Yes

No

匯總

樣本數(shù)

9

5

14

概率值

9/14

5/14

14/14

根據(jù)上述公式和統(tǒng)計數(shù)據(jù),我們可以計算出數(shù)據(jù)集的經(jīng)驗熵

from math import log2 Entropy(S) = -p(Yes)*log2p(Yes)-p(No)*log2p(No) = -(9/14)*log2(9/14)-(5/14)*log2(5/14) = 0.9402859586706311

經(jīng)驗熵計算完了,現(xiàn)在,我們要計算每個特征的條件熵,以及對應(yīng)的信息增益,并對信息增益進行排序,選擇增益最大的特征作為第一個分裂點進行分裂。

四、條件熵計算

完成了數(shù)據(jù)集經(jīng)驗熵的計算,就該計算每個特征分別的條件熵,以及對應(yīng)的信息增益。

第一層分裂決策

數(shù)據(jù)集有四個特征,需要分別計算每個特征的條件熵,Outlook(天氣),Temp.(溫度),Humidity(濕度)、Wind(風力) 。

1、Wind條件熵

wind這個特征包含兩個屬性,weak and strong

Gain(Decision, Wind) = Entropy(Decision)- ∑ [ p(Decision|Wind)* Entropy(Decision|Wind)] = Entropy(Decision)-[p(Decision|Wind=Weak)*Entropy(Decision|Wind=Weak)]-[p(Decision|Wind=Strong)*Entropy(Decision|Wind=Strong)]

我們需要分別計算 (Decision|Wind=Weak) ?和 (Decision|Wind=Strong)

Wind

Yes

No

樣本數(shù)

Weak

6

2

8

Strong

3

3

6

1)Weak 屬性熵計算

Day

Outlook

Temp.

Humidity

Wind

Decision

1

Sunny

Hot

High

Weak

No

3

Overcast

Hot

High

Weak

Yes

4

Rain

Mild

High

Weak

Yes

5

Rain

Cool

Normal

Weak

Yes

8

Sunny

Mild

High

Weak

No

9

Sunny

Cool

Normal

Weak

Yes

10

Rain

Mild

Normal

Weak

Yes

13

Overcast

Hot

Normal

Weak

Yes

Wind=Weak這個屬性的子集,共有8個樣本,其中2個No和8個Yes,計算該子集的熵如下:

Entropy(Decision|Wind=Weak) = –p(No)* log2p(No)–p(Yes) * log2p(Yes) = -(6/8)*log2(6/8)-(2/8)*log2(2/8) = 0.8112781244591328

注意:如果類的實例數(shù)為0,而實例總數(shù)為n,則需要計算-(0/n) .log2(0/n),定義0log20=0,熵只依賴于X的分布,與X的取值無關(guān)。這里,log(0)將等于-∞, 我們不能計算0次∞. 這是決策樹應(yīng)用程序中經(jīng)常出現(xiàn)的一種特殊情況。即使編譯器不能計算這個運算,我們也可以用微積分來計算,如果你想知道如何計算這個方程,請閱讀這篇文章。

https://sefiks.com/2018/08/25/indeterminate-forms-and-lhospitals-rule-in-decision-trees/

2)Strong 屬性熵計算

Day

Outlook

Temp.

Humidity

Wind

Decision

2

Sunny

Hot

High

Strong

No

6

Rain

Cool

Normal

Strong

No

7

Overcast

Cool

Normal

Strong

Yes

11

Sunny

Mild

Normal

Strong

Yes

12

Overcast

Mild

High

Strong

Yes

14

Rain

Mild

High

Strong

No

Wind = Strong 這個子集,一共有6個樣本,其中3個Yes,3個No,計算其熵如下

Entropy(Decision|Wind=Strong) = –p(No)*log2p(No)-p(Yes)*log2p(Yes) = -(3/6)*log2(3/6)-(3/6)*log2(3/6) = 1.0

3)匯總計算

Wind

Yes

No

樣本數(shù)

Weak

6

2

8

Strong

3

3

6

根據(jù)上面的統(tǒng)計數(shù)據(jù),現(xiàn)在我們可以計算Wind特征的信息增益了

Gain(Decision,Wind) = Entropy(Decision)-[p(Decision|Wind=Weak)*Entropy(Decision|Wind=Weak)] -[p(Decision|Wind=Strong).Entropy(Decision|Wind=Strong)] = 0.940–[(8/14).0.811 ]–[(6/14). 1] = 0.940-(8/14)*0.811-(6/14)* 1 = 0.04799999999999999

Wind(風力)這個特征的信息增益計算結(jié)束了,現(xiàn)在,我們需要對其他特征應(yīng)用相同的計算方法,計算出剩余每個特征的風險增益。

2、Outlook 條件熵

Outlook 這個特征有Sunny、Overcast、Rain這三個屬性,分別計算每個屬性的熵,然后再進行加權(quán)得到條件熵。

Outlook

Yes

No

樣本數(shù)

Sunny

2

3

5

Overcast

4

0

4

Rain

3

2

5

1)Overcast

Day

Outlook

Temp.

Humidity

Wind

Decision

3

Overcast

Hot

High

Weak

Yes

7

Overcast

Cool

Normal

Strong

Yes

12

Overcast

Mild

High

Strong

Yes

13

Overcast

Hot

Normal

Weak

Yes

這個屬性全部只有一個標簽Yes,可以按下面的計算,但是會報錯,可以直接按上面的規(guī)則計算(0/4)*log2(0/4)=0,所以可以知道Entropy(Decision|Outlook=Overcast)=0

Entropy(Decision|Outlook=Overcast) =–p(No)*log2p(No)–p(Yes)*log2p(Yes) =-(0/4)*log2(0/4)-(4/4)*log2(4/4) ValueError: math domain error

2)Rain

Day

Outlook

Temp.

Humidity

Wind

Decision

4

Rain

Mild

High

Weak

Yes

5

Rain

Cool

Normal

Weak

Yes

6

Rain

Cool

Normal

Strong

No

10

Rain

Mild

Normal

Weak

Yes

14

Rain

Mild

High

Strong

No

Rain這個屬性有5個樣本,其中2個No,3個Yes,按下面的方法計算該子集的熵

Entropy(Decision|Outlook=Rain) = -p(No)*log2p(No)-p(Yes)*log2p(Yes) = -(2/5)*log2(2/5)-(3/5)*log2(3/5) = 0.9709505944546686

3)Sunny

Day

Outlook

Temp.

Humidity

Wind

Decision

1

Sunny

Hot

High

Weak

No

2

Sunny

Hot

High

Strong

No

8

Sunny

Mild

High

Weak

No

9

Sunny

Cool

Normal

Weak

Yes

11

Sunny

Mild

Normal

Strong

Yes

Sunny這個屬性也有有5個樣本,其中2個No,3個Yes,按下面的方法計算該子集的熵

Entropy(Decision|Outlook=Sunny) = -p(No) * log2p(No) - p(Yes) *log2p(Yes) = -(2/5) * log2(2/5) - (3/5) *log2(3/5) = 0.9709505944546686

現(xiàn)在我們可以計算Outlook特征的信息增益了

Gain(Decision, Outlook) = Entropy(Decision)–[p(Decision|Outlook=Overcast)*Entropy(Decision|Outlook=Overcast)]–[p(Decision|Outlook=Rain)*Entropy(Decision|Outlook=Rain) –[p(Decision|Outlook=Sunny)*Entropy(Decision|Outlook=Sunny)] = 0.940-(5/14)*0-(5/14)*0.9709-(5/14)*0.9709 = 0.24649999999999994

通過上面的計算,得到Outlook這個特征的信息增益為:Gain(Decision, Outlook)= 0.246,是不是非常簡單呢。

3、Temp 特征的條件熵

Temp

Yes

No

樣本數(shù)

Cool

3

1

4

Hot

2

2

4

Mild

4

2

6

1)Cool

Day

Outlook

Temp.

Humidity

Wind

Decision

5

Rain

Cool

Normal

Weak

Yes

7

Overcast

Cool

Normal

Strong

Yes

9

Sunny

Cool

Normal

Weak

Yes

6

Rain

Cool

Normal

Strong

No

Temp=Cool這個屬性,一共有4個樣本,3個Yes,1個No,計算熵如下:

Entropy(Decision|Temp=Cool) = -p(No)*log2p(No)-p(Yes)*log2p(Yes) = -(3/4)*log2(3/4)-(1/4)*log2(1/4) = 0.8112781244591328

2)Hot

Day

Outlook

Temp.

Humidity

Wind

Decision

3

Overcast

Hot

High

Weak

Yes

13

Overcast

Hot

Normal

Weak

Yes

1

Sunny

Hot

High

Weak

No

2

Sunny

Hot

High

Strong

No

Temp=Hot這個屬性,一共有4個樣本,2個Yes,2個No,計算熵如下:

Entropy(Decision|Temp=Hot) = -p(No)*log2p(No)-p(Yes)*log2p(Yes) = -(2/4)*log2(2/4)-(2/4) *log2(2/4) = 1.0

3)Mild

Day

Outlook

Temp.

Humidity

Wind

Decision

4

Rain

Mild

High

Weak

Yes

10

Rain

Mild

Normal

Weak

Yes

11

Sunny

Mild

Normal

Strong

Yes

12

Overcast

Mild

High

Strong

Yes

8

Sunny

Mild

High

Weak

No

14

Rain

Mild

High

Strong

No

Temp=Mild這個屬性,一共有6個樣本,4個Yes,2個No,計算熵如下:

Entropy(Decision|Temp=Mild) = -p(No)*log2p(No)-p(Yes)*log2p(Yes) = -(4/6)*log2(4/6)-(2/6)*log2(2/6) = 0.9182958340544896

4)匯總計算

Temp

Yes

No

樣本數(shù)

Cool

3

1

4

Hot

2

2

4

Mild

4

2

6

通過統(tǒng)計數(shù)據(jù)可以看到,Cool占比4/14,Hot占比4/14,Mild占比6/14,加權(quán)上面的熵,得到下面的計算:

Gain(Decision,Temp.) = Entropy(Decision)–[p(Decision|Temp.=Cool)*Entropy(Decision|Temp.=Cool)]–[p(Decision|Temp.=Hot)*Entropy(Decision|Temp.=Hot) –[p(Decision|Temp.=Mild)*Entropy(Decision|Temp.=Mild)] = 0.940-(4/14)*0.8112-(4/14)*1.0-(6/14)*0.9182 = 0.029000000000000026

通過上面的計算,得到Outlook這個特征的信息增益為:Gain(Decision, Temp) = 0.029,又完成了一個,我們接著算下面一個一個特征Humidity 的條件熵。

4、Humidity 特征條件熵

Humidity

Yes

No

樣本數(shù)

High

3

4

7

Normal

6

1

7

1)High屬性的熵

Day

Outlook

Temp.

Humidity

Wind

Decision

3

Overcast

Hot

High

Weak

Yes

12

Overcast

Mild

High

Strong

Yes

4

Rain

Mild

High

Weak

Yes

1

Sunny

Hot

High

Weak

No

2

Sunny

Hot

High

Strong

No

14

Rain

Mild

High

Strong

No

8

Sunny

Mild

High

Weak

No

Humidity=High這個屬性,一共有7個樣本,3個Yes,4個No,計算熵如下:

Entropy(Decision|Humidity=High) = -p(No)*log2p(No)-p(Yes)*log2p(Yes) = -(4/7)*log2(4/7)-(3/7)*log2(3/7) = 0.9852281360342516

2)Normal屬性的熵

Day

Outlook

Temp.

Humidity

Wind

Decision

7

Overcast

Cool

Normal

Strong

Yes

5

Rain

Cool

Normal

Weak

Yes

9

Sunny

Cool

Normal

Weak

Yes

13

Overcast

Hot

Normal

Weak

Yes

10

Rain

Mild

Normal

Weak

Yes

11

Sunny

Mild

Normal

Strong

Yes

6

Rain

Cool

Normal

Strong

No

Humidity=High這個屬性,一共有7個樣本,6個Yes,1個No,計算熵如下:

Entropy(Decision|Humidity=High) = -p(No)*log2p(No)-p(Yes)*log2p(Yes) = -(1/7)*log2(1/7)-(6/7)*log2(6/7) = 0.5916727785823275

5、匯總計算

Humidity

Yes

No

樣本數(shù)

High

3

4

7

Normal

6

1

7

Gain(Decision,Humidity) = Entropy(Decision)–[p(Decision|Humidity=High)*Entropy(Decision|Humidity=High)]–[p(Decision|Humidity=Normal)*Entropy(Decision|Humidity=Normal) = 0.940-(7/14)*0.98522-(7/14)*0.5916 = 0.15158999999999995

通過上面的計算,得到Humidity這個特征的信息增益為:Gain(Decision, Humidity) = 0.151 ,又完成了一個,我們接著算下面一個一個特征Humidity 的條件熵。

到此我們完成了所有特征的信息增益的計算,對所有特征進行排序,找增益最大的進行分列

排序后分裂

Feature

Gain

排名

Outlook

0.246

1

Temperature

0.029

4

Humidity

0.151

2

Wind

0.048

3

所以我們選擇 outlook ?這個特征作為第一次分裂特征,也是就決策樹的根

Root decision on the tree

現(xiàn)在,我們需要進一步計算第二層的分裂特征的選擇,在outlook分裂后的子集中計算。

第二層分裂決策

第一層分裂的特征決定了,那就要根據(jù)分裂的結(jié)果,進行第二層的分裂,同第一層,也是需要計算每個子集的經(jīng)驗熵 + 條件熵。

數(shù)據(jù)集第一步被Outlook 這個特征分裂成三個節(jié)點,現(xiàn)在需要對每個節(jié)點計算下一步的分裂特征。

1、Outlook -Overcast 節(jié)點

在overcast這個分支上,標簽全部是yes,也就是已經(jīng)徹底的完成了分裂了,這個就可以作為葉子節(jié)點,無需繼續(xù)分裂。

Day

Outlook

Temp.

Humidity

Wind

Decision

3

Overcast

Hot

High

Weak

Yes

7

Overcast

Cool

Normal

Strong

Yes

12

Overcast

Mild

High

Strong

Yes

13

Overcast

Hot

Normal

Weak

Yes

無需繼續(xù)分裂!!

2、Outlook-Sunny節(jié)點

在sunny 這個屬性下面,還存在5個樣本,包含3/5 的No, 2/5 的Yes,還需要繼續(xù)分裂,所以這一層,我們重復(fù)上述的步驟,先計算這個子集的經(jīng)驗熵,然后計算每個特征的信息增益,找到最佳的分割特征。

Day

Outlook

Temp.

Humidity

Wind

Decision

1

Sunny

Hot

High

Weak

No

2

Sunny

Hot

High

Strong

No

8

Sunny

Mild

High

Weak

No

9

Sunny

Cool

Normal

Weak

Yes

11

Sunny

Mild

Normal

Strong

Yes

1)計算子集經(jīng)驗熵

首先我們計算Outlook=Sunny子集的經(jīng)驗熵

Entropy(Outlook=Sunny ) = -p(No)*log2p(No)-p(Yes)*log2p(Yes) = -(3/5)*log2(3/5)-(2/5) *log2(2/5) = 0.97095

下面計算每個特征的經(jīng)驗熵和信息增益。

2)Gain(Outlook=Sunny|Temp.)

Temp.

Yes

No

樣本數(shù)

Hot

0

2

2

Cool

1

0

1

Mild

1

1

2

根據(jù)上面的統(tǒng)計數(shù)據(jù),計算特征Temp.的條件熵

Entropy(Outlook=Sunny|Temp.) = 2/5*(-(0/2)*log2(0/2)-(2/2)*log2(2/2))+ 1/5*(-(1/1)*log2(1/1)-(0/1)*log2(0/1))+ 2/5*(-(1/2)*log2(1/2)-(1/2)*log2(1/2)) = 0.4

計算得到Temp.特征的信息增益

Gain(Outlook=Sunny|Temp.) = Entropy(Outlook=Sunny)-Entropy(Outlook=Sunny|Temp.) = 0.97095-0.4 = 0.57095

根據(jù)上面的計算,可以得到最終的信息增益為:Gain(Outlook=Sunny|Temp.)=0.570

3)Gain(Outlook=Sunny|Humidity)

Humidity

Yes

No

樣本數(shù)

High

0

3

3

Normal

2

0

2

根據(jù)上面的統(tǒng)計數(shù)據(jù),計算特征Humidity條件熵

Entropy(Outlook=Sunny|Humidity) = 3/5*(-(0/3)*log2(0/3)-(3/3)*log2(3/3))+ 2/5*(-(2/2)*log2(2/2)-(0/2)*log2(0/2))+ = 0

計算得到Temp.特征的信息增益

Gain(Outlook=Sunny|Humidity) = Entropy(Outlook=Sunny)-Entropy(Outlook=Sunny|Humidity) = 0.97095-0 = 0.97095

4)Gain(Outlook=Sunny|Wind)

Wind

Yes

No

樣本數(shù)

Weak

1

2

3

Strong

1

1

2

根據(jù)上面的統(tǒng)計數(shù)據(jù),計算特征Temp.的條件熵

Entropy(Outlook=Sunny|Humidity) = 3/5*(-(1/3)*log2(1/3)-(2/3)*log2(2/3))+ 2/5*(-(1/2)*log2(1/2)-(1/2)*log2(1/2))+ = 0.9509775004326937

計算得到Temp.特征的信息增益

Gain(Outlook=Sunny|Humidity) = Entropy(Outlook=Sunny)-Entropy(Outlook=Sunny|Humidity) = 0.97095-0.9509775004326937 = 0.01997249956730629

5)增益排序

Gain(Outlook=Sunny|Temp.) = 0.570 Gain(Outlook=Sunny|Humidity)????=?0.970 Gain(Outlook=Sunny|Wind) = 0.019

可以看到,humidity 是增益最高的,我們就按這個特征進行分裂,分裂結(jié)果如下,兩個分支都是純度百分百了

Day

Outlook

Temp.

Humidity

Wind

Decision

1

Sunny

Hot

High

Weak

No

2

Sunny

Hot

High

Strong

No

8

Sunny

Mild

High

Weak

No

On the other hand, decision will always be yes if humidity were normal

Day

Outlook

Temp.

Humidity

Wind

Decision

9

Sunny

Cool

Normal

Weak

Yes

11

Sunny

Mild

Normal

Strong

Yes

3、Outlook -Rain 節(jié)點

Day

Outlook

Temp.

Humidity

Wind

Decision

4

Rain

Mild

High

Weak

Yes

5

Rain

Cool

Normal

Weak

Yes

6

Rain

Cool

Normal

Strong

No

10

Rain

Mild

Normal

Weak

Yes

14

Rain

Mild

High

Strong

No

1)計算子集經(jīng)驗熵

我們計算Outlook=Rain子集的經(jīng)驗熵,在Outlook=Rain這個節(jié)點下,一共有5個樣本,3個Yes,2個No,我們可以算出這個子集的經(jīng)驗熵。

Entropy(Outlook=Rain) = – p(No)*log2p(No)–p(Yes)*log2p(Yes) = - (2/5)*log2(2/5)-(3/5)*log2(3/5) = 0.97095

2)Gain(Outlook=Rain | Temp)

Temp.

Yes

No

樣本數(shù)

Cool

1

1

2

Mild

2

1

3

根據(jù)上面的統(tǒng)計數(shù)據(jù),可以計算出子集的熵

Entropy(Outlook=Rain|Temp) = 2/5*(-(1/2)*log2(1/2)-(1/2)*log2(1/2))+3/5*(-(2/3)*log2(2/3)-(1/3)*log2(1/3)) = 0.9509775Gain(Outlook=Rain|Temp) = Entropy(Outlook=Rain)-Entropy(Outlook=Rain|Temperature) = 0.97095-0.9509775 = 0.01997

計算得到Temp特征的信息增益為:Gain(Outlook=Rain | Temp)=0.01997

3)Gain(Outlook=Rain | Humidity)

Humidity

Yes

No

樣本數(shù)

High

1

1

2

Normal

2

1

3

根據(jù)上面的統(tǒng)計數(shù)據(jù),可以計算出子集的熵

Entropy(Outlook=Rain|Humidity) = 2/5*(-(1/2)*log2(1/2)-(1/2)*log2(1/2))+\3/5*(-(2/3)*log2(2/3) - (1/3) * log2(1/3)) = 0.9509775Gain(Outlook=Rain | Humidity) = Entropy(Outlook=Rain)-Entropy(Outlook=Rain|Temperature) = 0.97095-0.9509775 = 0.01997

計算得到Humidity特征的信息增益為:Gain(Outlook=Rain | Humidity)=0.01997,與上面的Temperature特征一樣

4)Gain(Outlook=Rain | Wind)

Wind

Yes

No

樣本數(shù)

Weak

3

0

3

Strong

0

2

2

根據(jù)上面的統(tǒng)計數(shù)據(jù),可以計算出子集的熵

Entropy(Outlook=Rain|Wind) = 3/5*(-(0/3)*log2(0/3)-(3/3)*log2(3/3))+2/5*(-(0/2)*log2(0/2)-(2/2) * log2(2/2)) = 0Gain(Outlook=Rain | Humidity) = Entropy(Outlook=Rain)-Entropy(Outlook=Rain|Wind) = 0.97095-0 = 0.97095

計算得到Wind特征的信息增益為:Gain(Outlook=Rain | Wind) =0.97095

綜上,可以得到下面的結(jié)論,因此Wind的信息增益最大,選做本節(jié)點的分列特征

Gain(Outlook=Rain | Temperature) = 0.0199730940219748 Gain(Outlook=Rain?|?Humidity)?? ?=?0.0199730940219748 Gain(Outlook=Rain | Wind) = 0.9709505944546686

分列后得到下面兩個葉子節(jié)點,葉子節(jié)點的純度都為100%,也就是只有一個標簽類型,因此無需繼續(xù)分列。

Wind = Weak

Day

Outlook

Temp.

Humidity

Wind

Decision

4

Rain

Mild

High

Weak

Yes

5

Rain

Cool

Normal

Weak

Yes

10

Rain

Mild

Normal

Weak

Yes

Wind = Strong

Day

Outlook

Temp.

Humidity

Wind

Decision

6

Rain

Cool

Normal

Strong

No

14

Rain

Mild

High

Strong

No

五、決策樹生成

綜合第一、第二層的計算,我們得到了最終的決策樹如下:

Final version of decision tree

往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機器學(xué)習及深度學(xué)習筆記等資料打印機器學(xué)習在線手冊深度學(xué)習筆記專輯《統(tǒng)計學(xué)習方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載黃海廣老師《機器學(xué)習課程》視頻課黃海廣老師《機器學(xué)習課程》711頁完整版課件

本站qq群955171419,加入微信群請掃碼:

總結(jié)

以上是生活随笔為你收集整理的【机器学习】深刻理解决策树-动手计算ID3算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。