決策樹演算法

2021-07-15 05:42:53 字數 2226 閱讀 7858

本文主要介紹id3、c4.5和cart演算法

決策樹起源於概念學習系統(cls)

概念學習模型:

是乙個事先定義的範疇集合和一些有關例子是否落入給定範疇的判定

概念學習的主要任務:

是判斷所給定事物的屬性或特性, 並且正確地區分這些事物, 將其劃分到某乙個範疇

對於如下決策樹模型:

我們首先考慮他的屬性outlook,有三個**屬性sunny、overcast、rain,如果overcast,我們就play,如果sunny或者rain,無法判斷是否play,然後繼續將屬性**下去,直到落入指定範疇:play or don』t play。

這就是決策樹的思想,通過考慮影響決策的n個屬性值的組合來進行決策。比如屬性值集合、判定決策為play。

現在我們了解了決策樹的決策思想,接下來的任務就是如何構造決策樹。

首先遇到的問題是決策節點的選擇,即如何選擇決策節點能讓樹更快能好的生成。

關於節點擊擇,我們希望每一次決策之後,我們得到的分類越「純」,舉個極端的例子,我們甚至希望經過一次節點**,就能夠使得我們把類別分完。即在上述例子中,找到乙個節點,**完後直接分成了「純」的play or don』t play(這個例子不存在這樣的點)。

所謂純度,就是指**完後類別的混亂程度。比如第一次分類overcast分枝就是純的。

下面引入乙個描述純度的量,資訊熵:

資訊熵的概念來描述信源的不確定度。即信源所發出的訊號越是雜亂,我們接收到的資訊的不確定性越高。所以根據訊號種類和出現概率如下定義資訊熵 −∑

i=1n

pilo

gpi

一般log以2為底,pi

代表信源訊號i的出現概率。

n=2時,有

所以接下來我們就用資訊熵衡量「純度」,id3中用純度提公升的量即資訊增益來選擇**節點。

id3演算法利用不純的下降的量——資訊增益 來選擇**節點。

資訊增益:ig(t)=h(c)-h(c|t)

其中h(c)是集合c的資訊熵,h(c|t)是在t屬性**後的的資訊熵

接下來就遇到**截止的問題。

最容易想到的是當節點**到完全純的時候截止。在這種情況下,如果節點屬性都**完了,葉子節點還不是完全純的,就需要把該葉子節點賦給該葉子節點下類別頻數最大的類。但是這種截止方式存在過擬合問題。

其次就是但**到乙個可容忍的不純度的時候截止。比如某葉子節點上頻數佔最大分類類別頻率大於一定值(比如0.9),截止**,賦類別給該葉子節點。這就是所謂的先剪枝。

我們還可以通過交叉驗證等方式進行後剪枝。

上述就是id3演算法,因為id3演算法通過資訊增益選擇**節點,所以更傾向於選擇屬性值多的**節點,為了避免這個缺點,提出了使用資訊增益率來替代資訊增益進行選擇的c4.5演算法。

資訊增益率:ga

in−r

atio

=ig(

t)/i

(t)

其中i(t

)=−∑

ipil

ogpi

,pi 為t屬性第i個值在所有屬性值中的比例,定義方式類似資訊熵。

c4.5使用資訊增益率來取代資訊增益來選擇分類節點,避免了資訊增益傾向於選擇多屬性節點的缺點。

cart決策樹是通過構造二叉樹進行決策的,每次分割生成兩個子集。前面的id3和c4.5的**規則較好理解,因為每次都是從m個分量裡選擇乙個進行分割,然後分割成這個分量取值域大小(連續值轉化離散值)的分支數。但是cart不同,他每次只**成兩個分支,對於離散型屬性,他將取其所有二分的組合(比如屬性值abc 分為:ab c a bc ac b三種組合),對於連續值,取其所有的分割點,比如屬性age,有這麼幾個樣本 13、15、17,取14、16分割。對於**標準的衡量,cart採用的是gini函式而不是借助資訊熵。 gi

ni=∑

i1−p

2i其中pi

是第 i 類的比例,

在某個屬性**下的gini函式為: gi

nif(

s)=∑

v|sv

|sgi

ni(s

v)選擇gini函式值較小的作為**屬性。

決策樹演算法

決策樹是一種樹型結構,其中每個內部結點表示在乙個屬性上的測試,每個分支代表乙個測試輸出,每個葉結點代表一種類別。決策樹學習是以例項為基礎的歸納學習,採用的是自頂向下的遞迴方法,其基本思想是以資訊熵為度量構造一棵熵值下降最快的樹,到葉子結點處的熵值為零,此時每個葉節點中的例項都屬於同一類。決策樹學習演...

決策樹演算法

引 最近老師布置了課堂展示的作業,主題是決策樹,老師還舉了買西瓜的決策例子,感覺貼近生活也很有意思。在這之前沒有了解過這個概念,通過幾個禮拜的學習收穫不少。一 首先,什麼是決策樹?個人而言,決策樹就是將人在做決策時的思維脈絡以樹的形式展示出來的產物,即決策的過程模型。這是一棵去不去打高爾夫球的決策樹...

決策樹演算法

之前上機器學習課程時學過決策樹的一些演算法,今天簡單複習一下 這裡選擇屬性a作為分類屬性,values a 為屬性a的所有取值,sv為 取屬性s取值為v時對應的集合,也即對每個取值v,都計算其對應的子集合的資訊熵e sv 然後用其佔總集合的比例加權,求和即可得到將屬性a作為分類屬性後的資訊熵,用原來...