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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

监督学习 | ID3 C4.5 决策树原理

發(fā)布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 监督学习 | ID3 C4.5 决策树原理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 決策樹
  • 1. 特征選擇
    • 1.1 熵
    • 1.2 條件熵
    • 1.3 信息增益
    • 1.4 信息增益率
  • 2. 決策樹生成
    • 算法1 信息增益及信息增益率的算法
    • 2.1 ID3 算法
    • 2.2 C4.5 算法
  • 3. 決策樹剪枝
    • 3.1 預(yù)剪枝
    • 3.2 后剪枝
      • 算法2 樹的剪枝算法
  • 參考文獻

相關(guān)文章:

機器學(xué)習(xí) | 目錄

監(jiān)督學(xué)習(xí) | ID3 決策樹原理及Python實現(xiàn)

監(jiān)督學(xué)習(xí) | CART 分類回歸樹原理

監(jiān)督學(xué)習(xí) | 決策樹之Sklearn實現(xiàn)

監(jiān)督學(xué)習(xí) | 決策樹之網(wǎng)絡(luò)搜索

本文大部分內(nèi)容搬運自李航老師的《統(tǒng)計學(xué)習(xí)方法》[1],以給出決策樹算法較為完整的定義,關(guān)于 ID3 算法的更多推到過程以及例子、Python實現(xiàn),可以參考這篇文章,關(guān)于決策樹算法的 Sklearn 實現(xiàn),可以參考這篇文章。

決策樹

決策樹是一種基本的分類與回歸方法。在分類問題中,表示基于特征對實例進行分類的過程。它可以認為是 if-then 規(guī)則的集合,也可以認為是定義在特征空間與類空間上的條件概率分布。

決策樹學(xué)習(xí)通常包括 3 個步驟:特征選擇、決策樹的生成和決策樹的修剪。這些決策樹學(xué)習(xí)的思想主要來源于由 Quinlan 在 1986 年提出的 ID3 算法和 1993 年提出的 C4.5 算法,以及由 Breiman 等人在 1984 年提出的 CART 算法。這三個算法最大的不同在于特征選擇的指標上,三者分別使用:信息增益、信息增益率以及基尼指數(shù)作為特征選擇指標。本文將介紹 ID3 以及 C4.5 算法,并在下一篇文章中介紹 CART 算法。

1. 特征選擇

特征選擇在于選取對訓(xùn)練數(shù)據(jù)具有分類能力的特征,這樣可以提高決策樹學(xué)習(xí)的效率。如果利用一個特征進行分類的結(jié)果與隨機分類的結(jié)果沒有很大差別,則稱這個特征是沒有分類能力的。

通常特征選擇的準則是信息增益或信息增益率。

1.1 熵

熵(entropy)是表示隨機變量不確定性的度量。設(shè) XXX 是一個取有限個值的離散隨機變量,其概率分布為:

P(X=xi)=pi,i=1,2,...,nP(X=x_i)=p_i, \quad i=1,2,...,nP(X=xi?)=pi?,i=1,2,...,n

則隨機變量 XXX 的熵定義為:

H(X)=?∑i=1npilog?pi(1)H(X)=-\sum_{i=1}^np_i\log p_i \tag{1}H(X)=?i=1n?pi?logpi?(1)

pi=0p_i=0pi?=0,則定義 0?log?0=00*\log0=00?log0=0,通常式 (1) 中的對數(shù)以 2 或 e 為底,單位為比特(bit)或納特(nat)。由此可知,熵只依賴于 XXX 的分布,而與 XXX 的取值無關(guān),所以也可以將 XXX 的熵記做 H(p)H(p)H(p),即:

H(p)=?∑i=1npilog?pi(2)H(p)=-\sum_{i=1}^np_i\log p_i \tag{2}H(p)=?i=1n?pi?logpi?(2)

熵越大,隨機變量的不確定性就越大,由此可以驗證:

0≤H(p)≤log?n(3)0\leq H(p)\leq \log n \tag{3}0H(p)logn(3)

1.2 條件熵

設(shè)由隨機變量 (X,Y)(X,Y)(X,Y),其聯(lián)合概率分布為:

P(X=xi,Y=yj)=pij,i=1,2,...,n;j=1,2,...,mP(X=x_i,Y=y_j)=p_{ij},\quad i=1,2,...,n;j=1,2,...,mP(X=xi?,Y=yj?)=pij?,i=1,2,...,n;j=1,2,...,m

條件熵 H(Y∣X)H(Y|X)H(YX) 表示在已知隨機變量 XXX 的條件下隨機變量 YYY 的不確定性,其定義為 XXX 給定條件下 YYY 的條件概率分布的熵的 XXX 的數(shù)學(xué)期望:

H(Y∣X)=∑i=1npiH(Y∣X=xi)(4)H(Y|X)=\sum_{i=1}^n p_iH(Y|X=x_i)\tag{4}H(YX)=i=1n?pi?H(YX=xi?)(4)

其中 pi=P(X=xi),i=1,2,...,np_i=P(X=x_i), \quad i=1,2,...,npi?=P(X=xi?),i=1,2,...,n

當熵和條件熵中的概率由數(shù)據(jù)估計得到時,所對應(yīng)的熵與條件熵分別稱為經(jīng)驗熵(emprical entropy)和經(jīng)驗條件熵(empirical conditional emtropy)。

1.3 信息增益

信息增益(information gain)表示得知特征 XXX 的信息而使類 YYY 的信息不確定性減少的程度。

特征 AAA 對訓(xùn)練數(shù)據(jù)集 DDD 的信息增益 g(D,A)g(D,A)g(D,A),定義為集合 DDD 的經(jīng)驗熵 H(D)H(D)H(D) 與特征 AAA 給定條件下 DDD 的經(jīng)驗條件熵 H(D∣A)H(D|A)H(DA) 之差,即:

g(D,A)=H(D)?H(D∣A)(5)g(D,A)=H(D)-H(D|A) \tag{5}g(D,A)=H(D)?H(DA)(5)

一般地,熵 H(Y)H(Y)H(Y) 與條件熵 H(D∣A)H(D|A)H(DA) 之差稱為 互信息(mutual information)。決策樹學(xué)習(xí)中的信息增益等價于訓(xùn)練數(shù)據(jù)集中類與特征的互信息。

1.4 信息增益率

信息增益率的大小時相對于訓(xùn)練數(shù)據(jù)集而言的,在分類問題困難時,也就是說在訓(xùn)練數(shù)據(jù)集的經(jīng)驗熵大的時候,信息增益值會偏大,信息增益值會偏大。反之,信息增益值會偏小。使用信息增益比(information gain ratio)可以對這一問題進行校正,這是特征選擇的另一準則。

特征 AAA 對訓(xùn)練數(shù)據(jù)集 DDD 的信息增益率 gR(D,A)g_R(D,A)gR?(D,A) 定義為其信息增益 g(D,A)g(D,A)g(D,A) 與訓(xùn)練數(shù)據(jù)集 DDD 的經(jīng)驗熵 H(D)H(D)H(D) 之比:

gR(D,A)=g(D,A)H(D)(6)g_R(D,A)=\frac{g(D,A)}{H(D)} \tag{6}gR?(D,A)=H(D)g(D,A)?(6)

2. 決策樹生成


設(shè)訓(xùn)練集數(shù)據(jù)為 DDD∣D∣|D|D 表示其樣本容量,即樣本個數(shù)。

設(shè)有 KKK 個類 Ck,k=1,2,...,KC_k ,k=1,2,...,KCk?,k=1,2,...,K∣Ck∣|C_k|Ck? 為屬于類 CkC_kCk? 的樣本個數(shù),因此 ∑k=1K∣Ck∣=∣D∣\sum_{k=1}^K|C_k|=|D|k=1K?Ck?=D

設(shè)特征 AAAnnn 個不同的取值 {a1,a2,...,an}\{a_1,a_2,...,a_n\}{a1?,a2?,...,an?},根據(jù)特征 AAA 的取值將 DDD 劃分為 nnn 個子集 D1,D2,...,DnD_1,D_2,...,D_nD1?,D2?,...,Dn?∣Di∣|D_i|Di?DiD_iDi? 的樣本個數(shù),∑i=1n∣Di∣=D\sum_{i=1}^n|D_i|=Di=1n?Di?=D

記子集 DiD_iDi? 中屬于類 CkC_kCk? 的樣本的集合為 DikD_{ik}Dik?,即 Dik=D?CkD_{ik}=D \bigcap C_kDik?=D?Ck?∣Dik∣|D_{ik}|Dik?DikD_{ik}Dik? 的樣本個數(shù)。

因此,信息增益以及信息增益率計算如下:

算法1 信息增益及信息增益率的算法

輸入:訓(xùn)練數(shù)據(jù)集 DDD 和特征 AAA

輸出:特征 AAA 對訓(xùn)練數(shù)據(jù)集 DDD 的信息增益 g(D,A)g(D,A)g(D,A) 以及信息增益率 gR(D,A)g_R(D,A)gR?(D,A)

(1)計算數(shù)據(jù)集 DDD 的經(jīng)驗熵 H(D)H(D)H(D)

H(D)=?∑i=1n∣Ck∣∣D∣log2∣Dk∣∣D∣(7)H(D)=-\sum_{i=1}^n \frac{|C_k|}{|D|}log_2\frac{|D_k|}{|D|} \tag{7}H(D)=?i=1n?DCk??log2?DDk??(7)

(2)計算特征 AAA 對數(shù)據(jù)集 DDD 的經(jīng)驗條件熵 H(D∣A)H(D|A)H(DA)

H(D∣A)=∑i=1n∣Di∣∣D∣H(Di)=?∑i=1n∣Di∣∣D∣∑i=1n∣Dik∣∣Di∣log2∣Dik∣∣Di∣(8)\begin{aligned} H(D|A)& =\sum_{i=1}^n \frac{|D_i|}{|D|}H(D_i)\\ & = - \sum_{i=1}^n \frac{|D_i|}{|D|} \sum_{i=1}^n \frac{|D_{ik}|}{|D_i|}log_2\frac{|D_{ik}|}{|D_i|}\\ \end{aligned}\tag{8} H(DA)?=i=1n?DDi??H(Di?)=?i=1n?DDi??i=1n?Di?Dik??log2?Di?Dik???(8)

(3)計算信息增益:

g(D,A)=H(D)?H(D∣A)(9)g(D,A)=H(D)-H(D|A) \tag{9}g(D,A)=H(D)?H(DA)(9)

(4)計算信息增益率:

gR(D,A)=g(D,A)H(D)(10)g_R(D,A)=\frac{g(D,A)}{H(D)} \tag{10}gR?(D,A)=H(D)g(D,A)?(10)

2.1 ID3 算法

輸入:訓(xùn)練數(shù)據(jù)集 DDD,特征集 AAA,閾值 ε\varepsilonε

輸出:決策樹 TTT

(1)若 DDD 中所有實例屬于同一類 CkC_kCk?,則 TTT 為單節(jié)點樹,并將類 CkC_kCk? 作為該節(jié)點的類標記,返回 TTT

(2)若 A=?A=\oslashA=?,則 TTT 為單節(jié)點樹,并將 DDD 中實例數(shù)最大的類 CkC_kCk? 作為該節(jié)點的類標記,返回 TTT

(3)否則,按算法1(1-3)計算 AAA 中各特征對 DDD 的信息增益,選擇信息增益最大的特征 AgA_gAg?

(4)如果 AgA_gAg? 的信息增益小于閾值 ε\varepsilonε,則置 TTT 為單節(jié)點樹,并將 DDD 中實例數(shù)最大的類 CKC_KCK? 作為該節(jié)點的類標記,返回 TTT

(5)否則,對 AgA_gAg? 的每一可能值 aia_iai?,依 Ag=aiA_g=a_iAg?=ai?DDD 分隔為若干非空子集 DiD_iDi?,將 DiD_iDi? 中實例數(shù)最大的類作為標記,構(gòu)建子節(jié)點,由節(jié)點及其自己點構(gòu)造數(shù) TTT,返回 TTT

(6)對第 iii 個子節(jié)點,以 DiD_iDi? 為訓(xùn)練集,以 A?{Ag}A-\{A_g\}A?{Ag?} 為特征集,遞歸地調(diào)用步(1)~步(5),得到子樹 TiT_iTi?,返回 TiT_iTi?

2.2 C4.5 算法

C4.5 與 ID3 相比,只是將 ID3 算法中的信息增益換成了信息增益率,因此有:

輸入:訓(xùn)練數(shù)據(jù)集 DDD,特征集 AAA,閾值 ε\varepsilonε

輸出:決策樹 TTT

(1)若 DDD 中所有實例屬于同一類 CkC_kCk?,則 TTT 為單節(jié)點樹,并將類 CkC_kCk? 作為該節(jié)點的類標記,返回 TTT

(2)若 A=?A=\oslashA=?,則 TTT 為單節(jié)點樹,并將 DDD 中實例數(shù)最大的類 CkC_kCk? 作為該節(jié)點的類標記,返回 TTT

(3)否則,按算法1(1-4)計算 AAA 中各特征對 DDD 的信息增益,選擇信息增益最大的特征 AgA_gAg?

(4)如果 AgA_gAg? 的信息增益小于閾值 ε\varepsilonε,則置 TTT 為單節(jié)點樹,并將 DDD 中實例數(shù)最大的類 CKC_KCK? 作為該節(jié)點的類標記,返回 TTT

(5)否則,對 AgA_gAg? 的每一可能值 aia_iai?,依 Ag=aiA_g=a_iAg?=ai?DDD 分隔為若干非空子集 DiD_iDi?,將 DiD_iDi? 中實例數(shù)最大的類作為標記,構(gòu)建子節(jié)點,由節(jié)點及其自己點構(gòu)造數(shù) TTT,返回 TTT

(6)對第 iii 個子節(jié)點,以 DiD_iDi? 為訓(xùn)練集,以 A?{Ag}A-\{A_g\}A?{Ag?} 為特征集,遞歸地調(diào)用步(1)~步(5),得到子樹 TiT_iTi?,返回 TiT_iTi?

3. 決策樹剪枝

3.1 預(yù)剪枝

預(yù)剪枝是在決策樹生成之前通過限制條件,來防止樹過度生長而造成過擬合,常見的有:

  • 最大深度 max_depth

  • 每片葉子的最小樣本數(shù) min_samples_leaf

  • 每次分裂的最小樣本數(shù) min_samples_split

  • 最大特征數(shù) max_features

  • 關(guān)于這些參數(shù)的詳細介紹,可以參考這篇文章。

    3.2 后剪枝

    后剪枝先從訓(xùn)練集生成一顆完整決策樹,通過向損失函數(shù)中增加模型復(fù)雜度懲罰來對已生成的決策樹進行簡化。

    設(shè)樹 TTT 的葉節(jié)點個數(shù)為 ∣T∣|T|Tttt 是樹 TTT 的葉節(jié)點,該葉節(jié)點有 NtN_tNt? 個樣本點,其中 kkk 類的樣本點有 NtkN_{tk}Ntk? 個,k=1,2,...,Kk=1,2,...,Kk=1,2,...,KHt(T)H_t(T)Ht?(T) 為葉節(jié)點 ttt 上的經(jīng)驗熵,$\alpha \geq 0 $ 為參數(shù),則決策樹后剪枝的損失函數(shù)(Cost-Complexity Pruning)可以定義為:

    Cα(T)=∑t=1∣T∣NtHt(T)+α∣T∣(11)C_{\alpha}(T)=\sum_{t=1}^{|T|}N_tH_t(T)+\alpha |T|\tag{11}Cα?(T)=t=1T?Nt?Ht?(T)+αT(11)

    其中經(jīng)驗熵為:

    Ht(T)=?∑kNikNtlogNikNt(12)H_t(T)=-\sum_{k} \frac{N_{ik}}{N_t}log\frac{N_{ik}}{N_t} \tag{12}Ht?(T)=?k?Nt?Nik??logNt?Nik??(12)

    令 (11) 式右端第一項為 C(T)C(T)C(T)

    C(T)=∑t=1∣T∣NtHt(T)=?∑t=1∣T∣Nt∑kNikNtlogNikNt(13)\begin{aligned} C(T)& =\sum_{t=1}^{|T|}N_tH_t(T) \\ & = -\sum_{t=1}^{|T|}N_t\sum_{k} \frac{N_{ik}}{N_t}log\frac{N_{ik}}{N_t} \\ \end{aligned}\tag{13} C(T)?=t=1T?Nt?Ht?(T)=?t=1T?Nt?k?Nt?Nik??logNt?Nik???(13)

    因此式 (11) 可以寫作:

    Cα(T)=C(T)+α∣T∣(14)C_{\alpha}(T)=C(T)+\alpha |T| \tag{14}Cα?(T)=C(T)+αT(14)

    其中,C(T)C(T)C(T) 表示模型對訓(xùn)練數(shù)據(jù)的預(yù)測誤差,即模型與訓(xùn)練數(shù)據(jù)的擬合程度;

    ∣T∣|T|T 表示模型復(fù)雜度,參數(shù) α≥0\alpha \geq 0α0 控制兩者之間的影響。較大的 α\alphaα 促使選擇較簡單的模型,較小的 α\alphaα 促使選擇較復(fù)雜的模型, α=0\alpha=0α=0 意味者只考慮模型與訓(xùn)練數(shù)據(jù)的擬合程度,不考慮模型的復(fù)雜度。

    剪枝,就是當 α\alphaα 確定時,選擇損失函數(shù)最小的模型,即損失函數(shù)最小的子樹。

    α\alphaα 確定時,子樹越大,往往與訓(xùn)練數(shù)據(jù)的擬合越好,但是模型的復(fù)雜度越高;相反,子樹越小,模型復(fù)雜度就越低,但是往往與訓(xùn)練數(shù)據(jù)的擬合不好,損失函數(shù)正好表示了對兩者的平衡。

    可以看到,ID3 和 C4.5 決策樹生成只考慮了通過提高信息增益或信息增益率來對訓(xùn)練數(shù)據(jù)進行更好的擬合。而決策樹剪枝通過優(yōu)化損失函數(shù)還考慮了減小模型復(fù)雜度。

    決策樹生成學(xué)習(xí)局部的模型,而決策樹剪枝學(xué)習(xí)整體的模型。

    算法2 樹的剪枝算法

    輸入:生成算法產(chǎn)生的整個樹 TTT,參數(shù) α\alphaα

    輸出:修剪后的子樹 TαT_{\alpha}Tα?

    (1)計算每個節(jié)點的經(jīng)驗熵;

    (2)遞歸地從樹的葉節(jié)點向上回縮:

    \quad \quad設(shè)一組葉節(jié)點回縮到其父節(jié)點之前與之后的整體樹分別為 TBT_BTB?TAT_ATA?,其對應(yīng)的損失函數(shù)值分別是 Cα(TB)C_{\alpha}(T_B)Cα?(TB?)Cα(TA)C_{\alpha}(T_A)Cα?(TA?),如果:

    Cα(TA)≤Cα(TB)(15)C_{\alpha}(T_A)\leq C_{\alpha}(T_B) \tag{15}Cα?(TA?)Cα?(TB?)(15)

    \quad \quad 則進行剪枝,即將父節(jié)點變?yōu)樾碌娜~節(jié)點。

    (3)返回 (2) ,直到不能繼續(xù)為止,得到損失函數(shù)最小的子樹 TαT_{\alpha}Tα?

    參考文獻

    [1] 李航. 統(tǒng)計學(xué)習(xí)方法[M]. 北京: 清華大學(xué)出版社, 2012: 55-66.

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

    總結(jié)

    以上是生活随笔為你收集整理的监督学习 | ID3 C4.5 决策树原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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