【DW 11月-西瓜書學(xué)習(xí)筆記】Task03:第四章 決策樹

第四章? 決策樹

4.1 決策樹基本概念

顧名思義,決策樹是基于樹結(jié)構(gòu)來(lái)進(jìn)行決策的。

決策樹中,決策過(guò)程的每一次判定都是對(duì)某一屬性的“測(cè)試”,決策最終結(jié)論則對(duì)應(yīng)最終的判定結(jié)果。一般一顆決策樹包含:一個(gè)根節(jié)點(diǎn)、若干個(gè)內(nèi)部節(jié)點(diǎn)和若干個(gè)葉子節(jié)點(diǎn),易知:

* 每個(gè)非葉節(jié)點(diǎn)表示一個(gè)特征屬性測(cè)試。?

* 每個(gè)分支代表這個(gè)特征屬性在某個(gè)值域上的輸出。?

* 每個(gè)葉子節(jié)點(diǎn)存放一個(gè)類別。?

* 每個(gè)節(jié)點(diǎn)包含的樣本集合通過(guò)屬性測(cè)試被劃分到子節(jié)點(diǎn)中,根節(jié)點(diǎn)包含樣本全集。

決策樹的基本流程體現(xiàn)了簡(jiǎn)單且直觀的“分而治之”(divide-and-conquer)策略。

4.2 決策樹的構(gòu)造

決策樹的構(gòu)造是一個(gè)遞歸的過(guò)程,有三種情形會(huì)導(dǎo)致遞歸返回:(1) 當(dāng)前結(jié)點(diǎn)包含的樣本全屬于同一類別,這時(shí)直接將該節(jié)點(diǎn)標(biāo)記為葉節(jié)點(diǎn),并設(shè)為相應(yīng)的類別;(2) 當(dāng)前屬性集為空,或是所有樣本在所有屬性上取值相同,無(wú)法劃分,這時(shí)將該節(jié)點(diǎn)標(biāo)記為葉節(jié)點(diǎn),并將其類別設(shè)為該節(jié)點(diǎn)所含樣本最多的類別;(3) 當(dāng)前結(jié)點(diǎn)包含的樣本集合為空,不能劃分,這時(shí)也將該節(jié)點(diǎn)標(biāo)記為葉節(jié)點(diǎn),并將其類別設(shè)為父節(jié)點(diǎn)中所含樣本最多的類別。算法的基本流程如下圖所示:


可以看出:決策樹學(xué)習(xí)的關(guān)鍵在于如何選擇劃分屬性,不同的劃分屬性得出不同的分支結(jié)構(gòu),從而影響整棵決策樹的性能。屬性劃分的目標(biāo)是讓各個(gè)劃分出來(lái)的子節(jié)點(diǎn)盡可能地“純”,即屬于同一類別。因此下面便是介紹量化純度的具體方法,決策樹最常用的算法有三種:ID3,C4.5和CART。

4.2.1 ID3算法

ID3算法使用信息增益為準(zhǔn)則來(lái)選擇劃分屬性,“信息熵”(information entropy)是度量樣本結(jié)合純度的常用指標(biāo),假定當(dāng)前樣本集合D中第k類樣本所占比例為pk,則樣本集合D的信息熵定義為:


信息熵的定義

假定通過(guò)屬性劃分樣本集D,產(chǎn)生了V個(gè)分支節(jié)點(diǎn),v表示其中第v個(gè)分支節(jié)點(diǎn),易知:分支節(jié)點(diǎn)包含的樣本數(shù)越多,表示該分支節(jié)點(diǎn)的影響力越大。故可以計(jì)算出劃分后相比原始數(shù)據(jù)集D獲得的“信息增益”(information gain)。


信息增益越大,表示使用該屬性劃分樣本集D的效果越好,因此ID3算法在遞歸過(guò)程中,每次選擇最大信息增益的屬性作為當(dāng)前的劃分屬性。

4.2.2? C4.5算法

ID3算法存在一個(gè)問(wèn)題,就是偏向于取值數(shù)目較多的屬性,例如:如果存在一個(gè)唯一標(biāo)識(shí),這樣樣本集D將會(huì)被劃分為|D|個(gè)分支,每個(gè)分支只有一個(gè)樣本,這樣劃分后的信息熵為零,十分純凈,但是對(duì)分類毫無(wú)用處。因此C4.5算法使用了“增益率”(gain ratio)來(lái)選擇劃分屬性,來(lái)避免這個(gè)問(wèn)題帶來(lái)的困擾。首先使用ID3算法計(jì)算出信息增益高于平均水平的候選屬性,接著C4.5算法計(jì)算這些候選屬性的增益率,增益率定義為:



4.2.3 CART算法

CART決策樹使用“基尼指數(shù)”(Gini index)來(lái)選擇劃分屬性,基尼指數(shù)反映的是從樣本集D中隨機(jī)抽取兩個(gè)樣本,其類別標(biāo)記不一致的概率,因此Gini(D)越小越好,基尼指數(shù)定義如下:


進(jìn)而,使用屬性α劃分后的基尼指數(shù)為:


4.3 剪枝處理

從決策樹的構(gòu)造流程中我們可以直觀地看出:不管怎么樣的訓(xùn)練集,決策樹總是能很好地將各個(gè)類別分離開來(lái),這時(shí)就會(huì)遇到之前提到過(guò)的問(wèn)題:過(guò)擬合(overfitting),即太依賴于訓(xùn)練樣本。剪枝(pruning)則是決策樹算法對(duì)付過(guò)擬合的主要手段,剪枝的策略有兩種如下:

* 預(yù)剪枝(prepruning):在構(gòu)造的過(guò)程中先評(píng)估,再考慮是否分支。?

* 后剪枝(post-pruning):在構(gòu)造好一顆完整的決策樹后,自底向上,評(píng)估分支的必要性。?

評(píng)估指的是性能度量,即決策樹的泛化性能。之前提到:可以使用測(cè)試集作為學(xué)習(xí)器泛化性能的近似,因此可以將數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集。預(yù)剪枝表示在構(gòu)造樹的過(guò)程中,對(duì)一個(gè)節(jié)點(diǎn)考慮是否分支時(shí),首先計(jì)算決策樹不分支時(shí)在測(cè)試集上的性能,再計(jì)算分支之后的性能,若分支對(duì)性能沒(méi)有提升,則選擇不分支(即剪枝)。后剪枝則表示在構(gòu)造好一顆完整的決策樹后,從最下面的節(jié)點(diǎn)開始,考慮該節(jié)點(diǎn)分支對(duì)模型的性能是否有提升,若無(wú)則剪枝,即將該節(jié)點(diǎn)標(biāo)記為葉子節(jié)點(diǎn),類別標(biāo)記為其包含樣本最多的類別。



上圖分別表示不剪枝處理的決策樹、預(yù)剪枝決策樹和后剪枝決策樹。預(yù)剪枝處理使得決策樹的很多分支被剪掉,因此大大降低了訓(xùn)練時(shí)間開銷,同時(shí)降低了過(guò)擬合的風(fēng)險(xiǎn),但另一方面由于剪枝同時(shí)剪掉了當(dāng)前節(jié)點(diǎn)后續(xù)子節(jié)點(diǎn)的分支,因此預(yù)剪枝“貪心”的本質(zhì)阻止了分支的展開,在一定程度上帶來(lái)了欠擬合的風(fēng)險(xiǎn)。而后剪枝則通常保留了更多的分支,因此采用后剪枝策略的決策樹性能往往優(yōu)于預(yù)剪枝,但其自底向上遍歷了所有節(jié)點(diǎn),并計(jì)算性能,訓(xùn)練時(shí)間開銷相比預(yù)剪枝大大提升。


預(yù)剪枝VS后剪枝 總結(jié)如下:

(1)時(shí)間開銷

預(yù)剪枝:測(cè)試時(shí)間開銷降低,訓(xùn)練時(shí)間開銷降低

后剪枝:測(cè)試時(shí)間開銷降低,訓(xùn)練時(shí)間開銷增加

(2)過(guò)/欠擬合風(fēng)險(xiǎn):

預(yù)剪枝:過(guò)擬合風(fēng)險(xiǎn)降低,欠擬合風(fēng)險(xiǎn)增加

后剪枝:過(guò)擬合風(fēng)險(xiǎn)降低,欠擬合風(fēng)險(xiǎn)基本不變

(3)泛化性能:后剪枝通常優(yōu)于預(yù)剪枝

4.4 連續(xù)值與缺失值處理

對(duì)于連續(xù)值的屬性,若每個(gè)取值作為一個(gè)分支則顯得不可行,因此需要進(jìn)行離散化處理,常用的方法為二分法,基本思想為:給定樣本集D與連續(xù)屬性α,二分法試圖找到一個(gè)劃分點(diǎn)t將樣本集D在屬性α上分為≤t與>t。

* 首先將α的所有取值按升序排列,所有相鄰屬性的均值作為候選劃分點(diǎn)(n-1個(gè),n為α所有的取值數(shù)目)。?

* 計(jì)算每一個(gè)劃分點(diǎn)劃分集合D(即劃分為兩個(gè)分支)后的信息增益。?

* 選擇最大信息增益的劃分點(diǎn)作為最優(yōu)劃分點(diǎn)。?


現(xiàn)實(shí)中常會(huì)遇到不完整的樣本,即某些屬性值缺失。有時(shí)若簡(jiǎn)單采取剔除,則會(huì)造成大量的信息浪費(fèi),因此在屬性值缺失的情況下需要解決兩個(gè)問(wèn)題:(1)如何選擇劃分屬性。(2)給定劃分屬性,若某樣本在該屬性上缺失值,如何劃分到具體的分支上。假定為樣本集中的每一個(gè)樣本都賦予一個(gè)權(quán)重,根節(jié)點(diǎn)中的權(quán)重初始化為1,則定義:


對(duì)于(1):通過(guò)在樣本集D中選取在屬性α上沒(méi)有缺失值的樣本子集,計(jì)算在該樣本子集上的信息增益,最終的信息增益等于該樣本子集劃分后信息增益乘以樣本子集占樣本集的比重。即:


對(duì)于(2):若該樣本子集在屬性α上的值缺失,則將該樣本以不同的權(quán)重(即每個(gè)分支所含樣本比例)劃入到所有分支節(jié)點(diǎn)中。該樣本在分支節(jié)點(diǎn)中的權(quán)重變?yōu)椋?/p>

4.5 多變量決策樹

單變量決策樹

(在每個(gè)非葉結(jié)點(diǎn))每次只針對(duì)一個(gè)屬性進(jìn)行劃分,其他屬性保持不變,會(huì)出現(xiàn)“軸平行”平面,每個(gè)空間的劃分區(qū)域都對(duì)應(yīng)著一個(gè)葉節(jié)點(diǎn)(分類)。

單變量決策樹的分類邊界

多變量決策樹

當(dāng)學(xué)習(xí)任務(wù)多對(duì)應(yīng)的分類邊界很復(fù)雜時(shí),需要非常多段劃分能得到較好的近似,于是想用非軸平行的直線進(jìn)行劃分。多變量決策樹:每個(gè)非葉結(jié)點(diǎn)不僅考慮一個(gè)屬性,考慮多個(gè)屬性的組合。如“斜決策樹”(oblique decision tree)不是為每一個(gè)非葉結(jié)點(diǎn)尋找最優(yōu)劃分屬性,而是建立一個(gè)線性分類器,可以同時(shí)看多個(gè)變量。

多變量決策樹的分類邊界

混合決策樹

多變量決策樹相當(dāng)于是對(duì)單變量決策樹的拓展,每次劃分可以看多個(gè)屬性,多個(gè)屬性可以進(jìn)行線性組合,也可以進(jìn)行更復(fù)雜的模型,甚至神經(jīng)網(wǎng)絡(luò)或其他非線性模型。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 這一章主要介紹了決策樹是什么,如何構(gòu)建決策樹;前三節(jié)針對(duì)離散值來(lái)對(duì)決策樹的構(gòu)建進(jìn)行說(shuō)明,而第四小節(jié)針對(duì)連續(xù)值如何處...
    起個(gè)名字好難阿閱讀 623評(píng)論 0 1
  • (圖片來(lái)源網(wǎng)絡(luò)) 1. 章節(jié)主要內(nèi)容 決策樹是機(jī)器學(xué)習(xí)的一類常見算法,其核心思想是通過(guò)構(gòu)建一個(gè)樹狀模型來(lái)對(duì)新樣本進(jìn)...
    閃電隨筆閱讀 5,284評(píng)論 3 14
  • 簡(jiǎn)述 決策樹是機(jī)器學(xué)習(xí)的一類常見算法,其核心思想是通過(guò)構(gòu)建一個(gè)樹狀模型來(lái)對(duì)新樣本進(jìn)行預(yù)測(cè)。樹的葉結(jié)點(diǎn)是預(yù)測(cè)結(jié)果,而...
    澤平阿閱讀 994評(píng)論 0 0
  • 4.1 基本流程 1.決策樹的基本結(jié)構(gòu) 1)根結(jié)點(diǎn):相當(dāng)于樹的根2)內(nèi)部結(jié)點(diǎn)(決策結(jié)點(diǎn)):相當(dāng)于樹的枝干3)葉結(jié)點(diǎn)...
    D系鼎溜閱讀 1,919評(píng)論 3 1
  • 4.1 基本流程 決策樹(decision tree)是一類常見的機(jī)器學(xué)習(xí)方法,它是基于樹結(jié)構(gòu)來(lái)進(jìn)行決策的,這是人...
    lammmya閱讀 1,053評(píng)論 0 0