決策樹的原理與構建,圍繞一個例項展開

YONGMING0915發表於2016-04-11

1. 什麼是決策樹:

決策樹是一種預測模型,用來進行分類,是一種有監督學習。樹中每個節點表示某個物件,而每個分叉路徑則代表的某個可能的屬性值,而每個葉結點則對應從根節點到該葉節點所經歷的路徑所表示的物件的值

2 決策樹例項(圍繞一個例子)

問題1. 基於表1中給出的訓練集,給出分別使用極小熵和極大熵選擇擴充套件屬性所生成的兩棵決策樹。然後給出你對樹的“大小”的理解,並按你的理解比較兩種方法生成的決策樹大小。

問題1. 基於表1中給出的訓練集,給出分別使用極小熵和極大熵選擇擴充套件屬性所生成的兩棵決策樹。然後給出你對樹的“大小”的理解,並按你的理解比較兩種方法生成的決策樹大小。

(1) 極小熵生成決策樹,設表1給的資料集為D,根據最大資訊增益選擇最優特徵生成極小熵決策樹,計算各特徵A1、A2、A3、A4、A5對資料D的資訊增益,統計結果為

class=1 class=2
D 8 7 H(D)= 0.9968
A1 D1 8 2 6 g(D,A1)=0.2880
D2 7 6 1
A2 D1 5 4 1 g(D,A2)=0.1398
D2 4 1 3
D3 6 3 3
A3 D1 3 1 2 g(D,A3)=0.0292
D2 12 7 5
A4 D1 7 6 1 g(D,A4)=0.2880
D2 8 2 6
A5 D1 6 5 1 g(D,A5)=0.4131
D2 4 0 4
D3 5 3 2

上表中的D1和D2,D3分別表示在各個特徵中取值為1、2和3的樣本子集,根據計算後統計在表格中的資料可得:

H(D)=-8/15*log2(8/15)—7/15*log2(7/15)=0.9968

g(D,A1)=H(D)-[8/15*H(D1)+7/15*H(D2)]=0.2880

g(D,A2)=H(D)-[5/15*H(D1)+4/15*H(D2)+6/15*H(D3)]=0.1398

g(D,A3)=H(D)-[3/15*H(D1)+12/15*H(D2)]=0.0292

g(D,A4)=H(D)-[7/15*H(D1)+8/15*H(D2)]=0.2880

g(D,A5)=H(D)-[6/15*H(D1)+4/15*H(D2)+5/15*H(D3)]=0.4131

根據上面的計算結果,特徵A5的資訊增益最大,所以選擇A5為根節點。根據A5的取值將樣本分成3個結合,S1={2,3,6,8,12,13},S2={1,5,7,14},S3={4,9,10,11,15}其中集合S2已全部屬於同一個類,不需要再分,已成為葉子節點。對於集合S1,計算統計結果為:

class=1 class=2
D 5 1 H(D)=0.6500
A1 D1 1 1 0 G(D,A1)=0.0484
D2 5 4 1
A2 D1 3 2 1 G(D,A2)=0.1909
D2 1 1 0
D3 2 2 0
A3 D1 1 1 0 G(D,A3)=0.0484
D2 5 4 1
A4 D1 5 5 0 G(D,A4)=0.6500
D2 1 0 1

H(D)=0.6500 g(D,A1)= 0.0484 g(D,A2)= 0.1909 g(D,A3)= 0.0484 g(D,A4)=0.6500

     根據計算結果,集合S1選擇A4為根結點。根據A4的取值,將S1集合劃分為S11={3,6,8,12,13}  S12={2},集合S11和集合S12已成為葉節點。對於集合S3,計算統計結果為:

class 1 class 2
D 3 2 H(D)=0.9710
A1 D1 3 1 2 G(D,A1)=0.4200
D2 2 2 0
A2 D1 2 2 0 G(D,A2)=0.5710
D2 1 1 0
D3 2 1 1
A3 D1 0 0 0 G(D,A3)=0
D2 5 3 2
A4 D1 2 1 1 G(D,A4)=0.0200
D2 3 2 1

H(D)=0.9710 g(D,A1)=0.4200 g(D,A2)=0.5710  g(D,A3)=0 g(D,A4)=0.0200

根據計算結果,所以集合S3選擇A2作為根結點,根據A2的取值將S3分成集合S31={4,11}集合S32={9}集合S33={10,15} 集合S32和集合S32已為葉子節點。對於集合S33,計算統計結果為

class 1 class 2
D 1 1 H(D)=1
A1 D1 1 0 1 G(D,A1)=1
D2 1 1 0
A3 D1 0 0 0 G(D,A3)=0
D2 2 1 1
A4 D1 2 1 1 G(D,A4)=0
D2 0 0 0

H(D)=1  g(D,A1)=1 g(D,A3)=0  g(D,A4)=0

所以選擇A1作為集合S33的根節點。根據A1的取值劃分後的集合也都為葉子節點,至此極小熵決策樹就建立起來了,如下圖所示。

(2) 極大熵生成決策樹,同上面的極小熵建立決策樹類似,設表1中資料集為D。根據資訊增益最小選擇特徵建立決策樹。計算各特徵A1、A2、A3、A4、A5對資料D的資訊增益,統計結果為

class=1 class=2

D

8

7

H(D)= 0.9968

A1

D1

8

2

6

G(D,A1)= 0.2880

D2

7

6

1

A2

D1

5

4

1

G(D,A2)=0.1398

D2

4

1

3

D3

6

3

3

A3

D1

3

1

2

G(D,A3)= 0.0292

D2

12

7

5

A4

D1

7

6

1

G(D,A4)= 0.2880

D2

8

2

6

A5

D1

6

5

1

G(D,A5)=0.4131

D2

4

0

4

D3

5

3

2

  H(D)=0.9968g(D,A1)=0.2880 g(D,A2)=0.1398 g(D,A3)=0.0292 g(D,A4)=0.2880  g(D,A5)=0.4131

  根據上面計算結果,選擇最小增益A3作為根結果。根據A3的取值,將集合劃分S1={5,8,14},S2={1,2,3,4,6,7,9,10,11,12,13,15}.對於集合S1,計算統計結果為

class=1 class=2

D

1

2

H(D)=0.9183

A1

D1

2

0

2

G(D,A1)=0.9183

D2

1

1

0

A2

D1

1

1

0

G(D,A2)=0.9183

D2

1

0

1

D3

1

0

1

A4

D1

1

1

0

G(D,A4)= 0.9183

D2

2

0

2

A5

D1

1

1

0

G(D,A5)=0.9183

D2

2

0

2

D3

0

0

0

H(D)=0.9183 g(D,A1)=0.9183 g(D,A2)=0.9183 g(D,A4)=0.9183 g(D,A5)=0.9183

根據計算結果,選擇A1或A2或A4或A5都可以作為集合S1的根節點,這裡不妨選擇A1作為根節點,根據A1的取值將S1劃分成S11={5,14} ,S12={8},此時S11和S12已經為葉節點不需要在劃分。

對於集合S2,計算統計結果為

class=1 class=2

D

7

5

H(D)=0.9799

A1

D1

6

2

4

G(D,A1)= 0.1957

D2

6

5

1

A2

D1

4

3

1

G(D,A2)=0.0753

D2

3

1

2

D3

5

3

2

A4

D1

6

5

1

G(D,A4)=0.1957

D2

6

2

4

A5

D1

5

4

1

G(D,A5)= 0.2745

D2

2

0

2

D3

5

3

2

H(D)=0.9799 g(D,A1)=0.1957 g(D,A2)=0.0753 g(D,A4)=0.1957 g(D,A5)=0.2745

根據計算結果,選擇A2作為集合S2的根節點,根據A2的取值將集合S2劃分為S21={2,4,6,11},S22={7,9,12},S23={1,3,10,13,15},對於集合S21,計算統計結果為

class=1 class=2

D

3

1

H(D)=0.8113

A1

D1

1

1

0

G(D,A1)=0.1226

D2

3

2

1

A4

D1

1

1

0

G(D,A4)=0.1226

D2

3

2

1

A5

D1

2

1

1

G(D,A5)=0.3113

D2

0

0

0

D3

2

2

0

H(D)=0.8113  g(D,A1)=0.1226  g(D,A4)=0.1226  g(D,A5)=0.3113

根據計算結果,選擇A1和A4作為S21的根節點都可以,這裡不妨選A1為S21的根節點。根據A1的取值將S21劃分為S211={11},S212={2,4,6},其中S211已為葉節點。對於集合S212,計算統計結果為

class=1 class=2

D

2

1

H(D)=0.9183

A4

D1

1

1

0

G(D,A4)=0.2516

D2

2

1

1

A5

D1

2

1

1

G(D,A5)=0.2516

D2

0

0

0

D3

1

1

0

H(D)=0.9183  g(D,A4)=0.2516  g(D,A5)=0.2516

根據計算結果,選擇A4和A5作為S212的根節點都可以,這裡不妨選A4作為根節點。根據A4的取值將集合S212劃分為S2121={6}  S2122={2,4};對於集合S2122選擇A5作為根節點,根據A5的取值將集合S2122劃分為S21221={2}  S21223={4};此時集合S2121和集合S21221,S21223都為葉節點,對於集合S22,計算統計結果為

class=1 class=2

D

1

2

H(D)= 0.9183

A1

D1

2

0

2

G(D,A1)=0.9183

D2

1

1

0

A4

D1

1

1

0

G(D,A4)=0.9183

D2

2

0

2

A5

D1

1

1

0

G(D,A5)=0.9183

D2

1

0

1

D3

1

0

1

H(D)=0.9183  g(D,A1)=0.9183  g(D,A4)=0.9183  g(D,A5)=0.9183

根據計算結果,選擇A1或A4或A5作為根節點都可以,這裡選擇A1作為根節點。根據A1的取值將集合S22劃分為S221={12},S222={7,9} 此時,S221和S222已為葉節點。對於集合S23,計算統計結果為

class=1 class=2

D

3

2

H(D)=0.9710

A1

D1

3

1

2

G(D,A1)=0.4200

D2

2

2

0

A4

D1

4

3

1

G(D,A4)=0.3220

D2

1

0

1

A5

D1

2

2

0

G(D,A5)=0.5710

D2

1

0

1

D3

2

1

1

H(D)=0.9710  g(D,A1)=0.4200  g(D,A4)=0.3220  g(D,A5)=0.5710

根據計算結果,選擇A4作為根節點。根據A4的取值將S23劃分為S231={3,10,13,15},S232={1}.對集合S231,計算統計結果為

class=1 class=2

D

3

1

H(D)=0.8113

A1

D1

2

1

1

G(D,A1)= 0.3113

D2

2

2

0

A5

D1

2

2

0

G(D,A5)= 0.3113

D2

0

0

0

D3

2

1

1

H(D)=0.8113  g(D,A1)=0.3113  g(D,A5)=0.3113

根據計算結果,選擇A1或A5作為S231的根節點都可以,這裡選擇A1作為其根節點,根據A1的取值將集合S231劃分為S2311={3,10},S2312={13,15}。集合S2311選擇A5作為根節點,將集合S2311劃分為S23111={3} , S23113={10}。至此極大熵決策樹就可以建立起來了,如下圖所示

3.  擴充

利用極小熵生成的決策樹不一定是“最小決策樹”。因為用極小熵生成的決策樹可能存在過擬合,對訓練資料分類很好,但對測試資料不一定好。一般需要對生成的決策樹做剪枝處理,減掉過於細分的葉節點。使其退回到父節點,然後將父節點改為新的葉節點。

相關文章