數(shù)據(jù)分析教程決策樹(shù)原理

| 2022-09-14 admin

決策樹(shù)原理

決策樹(shù)是通過(guò)一系列規(guī)則對(duì)數(shù)據(jù)進(jìn)行分類(lèi)的過(guò)程。它提供一種在什么條件下會(huì)得到什么值的類(lèi)似規(guī)則的方法。決策樹(shù)分為分類(lèi)樹(shù)和回歸樹(shù)兩種,分類(lèi)樹(shù)對(duì)離散變量做決策樹(shù),回歸樹(shù)對(duì)連續(xù)變量做決策樹(shù)。也就是說(shuō),決策樹(shù)既可以用來(lái)解決分類(lèi)問(wèn)題,也可以解決回歸問(wèn)題。

 

數(shù)據(jù)分析入門(mén)系列教程-決策樹(shù)原理_決策樹(shù)

 

決策樹(shù)其實(shí)是一棵倒樹(shù),它的根在最上面,葉子在下面。

決策樹(shù)由節(jié)點(diǎn)(node)和有向邊(directed edge)組成。節(jié)點(diǎn)有兩種類(lèi)型:內(nèi)部節(jié)點(diǎn)(internal node)和葉節(jié)點(diǎn)(leaf node)。內(nèi)部節(jié)點(diǎn)表示一個(gè)特征或?qū)傩?,葉節(jié)點(diǎn)表示一個(gè)類(lèi)。

下面我們通過(guò)一個(gè)小例子來(lái)看下,這棵樹(shù)到底怎么用

 

數(shù)據(jù)分析入門(mén)系列教程-決策樹(shù)原理_決策樹(shù)_02

 

決定我們是否打籃球的因素有三個(gè),是否下雨,溫度是否適合,是否是室內(nèi)。我們一步一步,通過(guò)判斷不同的條件,最后得出不同的結(jié)論。

我們首先選取了決定是否打籃球的條件,并且以是否下雨為根節(jié)點(diǎn)開(kāi)始分裂,然后根據(jù)不同情況構(gòu)造了一棵樹(shù),最后根據(jù)該樹(shù)的分枝,來(lái)決定是否打籃球。

概括來(lái)說(shuō),就是根據(jù)特征的值做判斷,最后得出不同的分類(lèi)。

決策樹(shù)學(xué)習(xí)過(guò)程

那么決策樹(shù)要如何構(gòu)建呢?通常,這一過(guò)程可以概括為3個(gè)步驟:特征選擇、決策樹(shù)生成和修剪。

特征選擇:特征選擇是指從訓(xùn)練數(shù)據(jù)中眾多的特征中選擇一個(gè)特征作為當(dāng)前節(jié)點(diǎn)的分裂標(biāo)準(zhǔn),如何選擇特征有著很多不同量化評(píng)估標(biāo)準(zhǔn)標(biāo)準(zhǔn),從而衍生出不同的決策樹(shù)算法。

決策樹(shù)生成:根據(jù)選擇的特征評(píng)估標(biāo)準(zhǔn),從上至下遞歸地生成子節(jié)點(diǎn),直到數(shù)據(jù)集不可分則停止決策樹(shù)生長(zhǎng)。

剪枝:決策樹(shù)容易過(guò)擬合,一般來(lái)需要剪枝,縮小樹(shù)結(jié)構(gòu)規(guī)模、緩解過(guò)擬合。剪枝技術(shù)有預(yù)剪枝和后剪枝兩種。

特征選擇

特征選擇是為了選擇出對(duì)于訓(xùn)練數(shù)據(jù)具有分類(lèi)能力的特征。比如說(shuō),使用某一個(gè)特征進(jìn)行決策樹(shù)分類(lèi)的結(jié)果與隨機(jī)分類(lèi)的結(jié)果沒(méi)有任何區(qū)別,那么該特征就不具備分類(lèi)能力,可以直接丟棄掉該特征。當(dāng)然我們要選擇能夠分類(lèi)出更好的類(lèi)別的特征,作為根節(jié)點(diǎn)。

那么一般情況下該如何選擇特征呢,業(yè)界通常會(huì)使用信息增益的方式來(lái)選擇。

先來(lái)看幾個(gè)概念:

信息熵

條件熵

信息增益

信息熵

信息熵是信息的期望值,是用來(lái)衡量信息不確定性的指標(biāo)。信息的不確定性越大,熵越大。

比如說(shuō)對(duì)于拋硬幣事件,每次拋硬幣的結(jié)果就是一個(gè)不確定的信息。

如果根據(jù)我們的經(jīng)驗(yàn),一個(gè)均勻的硬幣正面和反面出現(xiàn)的概率是相等的,都是50%。所以我們很難判斷下一次是出現(xiàn)正面還是反面,所以這個(gè)事件的信息熵值很高。

但是如果該硬幣不是均勻的,并且根據(jù)歷史數(shù)據(jù)顯示,100次試驗(yàn)中,出現(xiàn)正面的次數(shù)有98次,那么下一次拋硬幣,我們就很容易判斷結(jié)果了,故而該事件的信息熵很低。

其計(jì)算公式為:

 

數(shù)據(jù)分析入門(mén)系列教程-決策樹(shù)原理_信息增益_03

 

其中:

P(X=i)為隨機(jī)變量 X 取值為 i 的概率

n 代表事件的 n 種情況

我們還是以上面拋硬幣的例子來(lái)求解下兩種情況下的信息熵各為多少

注意,由于編輯器的原因,以下所有 log(2) 均表示以2為底的對(duì)數(shù)

均勻硬幣

硬幣

P

正面

0.5

反面

0.5

信息熵 = -0.5 * log(2)0.5 - 0.5 * log(2)0.5 = 1

非均勻硬幣

硬幣

P

正面

0.98

反面

0.02

信息熵 = -0.98 * log(2)0.98 - 0.02 * log(2)0.02 = 0.14

思考:如果正面的概率是100%,那么此時(shí)的信息熵是多少呢

答:此時(shí)信息熵是0,也可以說(shuō)明,信息熵是0到1之間的數(shù)值。

條件熵

條件熵是通過(guò)獲得更多的信息來(lái)減小不確定性。當(dāng)我們知道的信息越多時(shí),信息的不確定性越小。

比如說(shuō)某個(gè)用戶曾經(jīng)購(gòu)買(mǎi)了一種商品,但是我們沒(méi)有辦法僅僅根據(jù)這個(gè)信息來(lái)判斷,該用戶是否會(huì)再次購(gòu)買(mǎi)該商品。但是如果我們?cè)黾右恍l件,比如雙十一促銷(xiāo)活動(dòng)信息之后,我們就能夠更加容易的發(fā)現(xiàn)用戶購(gòu)買(mǎi)商品與促銷(xiāo)活動(dòng)之間的聯(lián)系,并通過(guò)不同促銷(xiāo)力度時(shí)用戶購(gòu)買(mǎi)的概率來(lái)降低不確定性。

其計(jì)算公式為:

 

數(shù)據(jù)分析入門(mén)系列教程-決策樹(shù)原理_信息熵_04

 

其中:

Y 為條件

P(Y = v)表示 Y 有多種情況,當(dāng) Y 處于 v 的概率

H(X|Y = v)表示 Y 處于 v 條件時(shí)的信息熵

信息增儀

信息增益的定義就是信息熵減去條件熵

 

數(shù)據(jù)分析入門(mén)系列教程-決策樹(shù)原理_信息增益_05

 

這里只是數(shù)學(xué)上的定義,那么該如何使用信息增益來(lái)創(chuàng)建決策樹(shù)呢,還是舉例來(lái)看。

 

數(shù)據(jù)分析入門(mén)系列教程-決策樹(shù)原理_信息增益_06

 

在上圖中,我先按照某種條件,把紅點(diǎn)和黃框分成了如圖所示的兩類(lèi),接下來(lái)我們計(jì)算下熵值

父節(jié)點(diǎn)信息熵 = -(6/10log(2)6/10)-(4/10log(2)4/10) = 0.97

上面子節(jié)點(diǎn)信息熵 = -(2/6log(2)2/6)-(4/6log(2)4/6) = 0.91

下面子節(jié)點(diǎn)信息熵 = -(2/4log(2)2/4)-(2/4log(2)2/4) = 1

此處兩個(gè)子節(jié)點(diǎn)其實(shí)就是某種條件下的信息熵,因?yàn)樵诜诸?lèi)的時(shí)候,是隱含了某種分類(lèi)條件的。

下面根據(jù)條件熵的定義,可以得到條件熵

條件熵 = 上面子節(jié)點(diǎn)出現(xiàn)的概率 * 該條件下的信息熵 + 下面子節(jié)點(diǎn)出現(xiàn)的概率 * 該條件下的信息熵

= 6/10 * 0.91 + 4/10 * 1

= 0.946

再根據(jù)信息增益的定義,可以得到信息增益

信息增益 = 父節(jié)點(diǎn)信息熵 - 條件熵

= 0.97 - 0.946

= 0.024

再來(lái)看另一種分類(lèi)方式

 

數(shù)據(jù)分析入門(mén)系列教程-決策樹(shù)原理_決策樹(shù)_07

 

父節(jié)點(diǎn)信息熵 = -(6/10log(2)6/10)-(4/10log(2)4/10) = 0.442

上面子節(jié)點(diǎn)信息熵 = -(6/6log(2)6/6)-(0/6log(2)0/6) = 0

下面子節(jié)點(diǎn)信息熵 = -(4/4log(2)4/4)-(0/4log(2)0/4) = 0

條件熵 = 0

信息增益 = 0.442

從圖中明顯可以看出,第二種分類(lèi)是好于第一種的,而此時(shí)第二種的信息增益是較大的,由此可以得到,在通過(guò)信息增益來(lái)確定節(jié)點(diǎn)時(shí),需要使用信息增益最大的那個(gè)特征。   也就是說(shuō),信息增益是相對(duì)于特征而言的,信息增益越大,特征對(duì)最終的分類(lèi)結(jié)果影響也就越大,我們就應(yīng)該選擇對(duì)最終分類(lèi)結(jié)果影響最大的那個(gè)特征作為我們的分類(lèi)特征。

決策樹(shù)生成

構(gòu)建決策樹(shù)的工作原理:

拿到原始數(shù)據(jù)集,然后基于最好的屬性值劃分?jǐn)?shù)據(jù)集,由于特征值可能多于兩個(gè),因此此時(shí)可能存在大于兩個(gè)分支的數(shù)據(jù)集劃分。第一次劃分之后,數(shù)據(jù)集被向下傳遞到樹(shù)的分支的下一個(gè)結(jié)點(diǎn)。在這個(gè)結(jié)點(diǎn)上,我們可以再次劃分?jǐn)?shù)據(jù)。因此我們可以采用遞歸的原則處理數(shù)據(jù)集。

構(gòu)建決策樹(shù)的算法有很多,比如 C4.5、ID3 和 CART,這些算法在運(yùn)行時(shí)并不總是在每次劃分?jǐn)?shù)據(jù)分組時(shí)都會(huì)消耗特征。ID3 和 C4.5 算法可以生成二叉樹(shù)或多叉樹(shù),而 CART 只支持二叉樹(shù)。

基于 ID3 算法

ID3 算法其實(shí)就是計(jì)算信息增益,在決策樹(shù)各個(gè)結(jié)點(diǎn)上對(duì)應(yīng)信息增益準(zhǔn)則(選取信息增益最大的)選擇特征,遞歸地構(gòu)建決策樹(shù)。

具體方法是:從根結(jié)點(diǎn)(root node)開(kāi)始,對(duì)結(jié)點(diǎn)計(jì)算所有可能的特征的信息增益,選擇信息增益最大的特征作為結(jié)點(diǎn)的特征,由該特征的不同取值建立子節(jié)點(diǎn);再對(duì)子結(jié)點(diǎn)遞歸地調(diào)用以上方法,構(gòu)建決策樹(shù);直到所有特征的信息增益均很小或沒(méi)有特征可以選擇為止,最后得到一個(gè)決策樹(shù)。

我們使用如下的數(shù)據(jù)集來(lái)演示下該如何通過(guò) ID3 算法構(gòu)建決策樹(shù),該數(shù)據(jù)集記錄的是某位客戶,在不同天氣下打高爾夫的情況。

weather

temp

wind

play golf

rainy

hot

false

no

rainy

hot

ture

no

overcast

hot

false

yes

sunny

mild

false

yes

sunny

cool

false

yes

sunny

cool

ture

no

overcast

cool

ture

yes

rainy

mild

false

no

rainy

cool

false

yes

sunny

mild

false

yes

rainy

mild

ture

yes

overcast

mild

ture

yes

overcast

hot

false

yes

sunny

mild

ture

no

計(jì)算根節(jié)點(diǎn)

我們首先來(lái)計(jì)算是否打高爾夫球的信息熵

是否打高爾夫

頻度

概率

信息熵

No

5

5/14 = 0.36

-0.531

Yes

9

9/14 = 0.64

-0.410

根據(jù)信息熵的計(jì)算公式可以得出,Play Golf 的信息熵為

H(play golf) = -[-0.531 + (-0.410) ] = 0.940

下面計(jì)算3種天氣狀況下的條件熵

以天氣狀況為節(jié)點(diǎn)

各種天氣狀況出現(xiàn)的概率

weather

Yes

No

天氣狀況各情況出現(xiàn)頻度

概率

rainy

2

3

5

5/14 = 0.36

overcast

4

0

4

4/14 = 0.29

sunny

3

2

5

5/14 = 0.36

各種天氣狀況下的條件熵

weather

Yes(打高爾夫的概率)

No(不打高爾夫的概率)

信息熵

rainy

2/5 = 0.4

3/5 = 0.6

0.971

overcast

4/4 = 1

0/4 = 0

0

sunny

3/5 = 0.6

2/5 = 0.4

0.971

以 weather 為節(jié)點(diǎn)的條件熵 0.36 * 0.971 + 0.29 * 0 + 0.36 * 0.971 = 0.69

此時(shí)的信息增益為 0.94 - 0.69 = 0.25

以溫度為節(jié)點(diǎn)

各種溫度出現(xiàn)的概率

temp

Yes

No

溫度個(gè)情況出現(xiàn)頻度

概率

hot

2

2

4

4/14 = 0.29

mild

4

2

6

6/14 = 0.43

cool

3

1

4