決策樹演算法

2021-07-22 04:32:59 字數 2666 閱讀 6382

引、

最近老師布置了課堂展示的作業,主題是決策樹,老師還舉了買西瓜的決策例子,感覺貼近生活也很有意思。在這之前沒有了解過這個概念,通過幾個禮拜的學習收穫不少。

一、首先,什麼是決策樹?

個人而言,決策樹就是將人在做決策時的思維脈絡以樹的形式展示出來的產物,即決策的過程模型。

這是一棵去不去打高爾夫球的決策樹:

有outlool、humidity、windy三個屬性,每條路徑代表不同的情況。outlook下面的sunny、overcast和rainy就是outlook的三個分支。

在這棵決策樹裡,我們首先考慮天氣,如果是overcast,就選擇yes。如果是sunny,就在看看humidity然後根據其是否<=75決定yes or no。是rainy的話就考慮windy。

最後就得到了,打不打高爾夫球的決策結果。

這時就要先說明一下,其實上面的決策樹是通過乙個資料集生成的,給出資料集:

二、那麼問題來了,為什麼我們要首先考慮天氣情況而不是考慮濕度或者風力情況呢?

接下來就引入乙個概念,屬性選擇度量---意思是說如何選擇哪個屬性做為首先考慮。目前比較流行的三個指標是資訊增益,資訊增益比還有gini

指數。他們分別對應了三種演算法。

資訊增益對應了id3演算法,是j.ross.quinlan提出的。

(1)資訊增益:

計算對結果中分類的期望,也稱為熵。對「play golf?」這一欄的計算。

然後是按某個屬性分類所需要的資訊量:分別計算outlook、humidity和windy三列。

兩個相減就是資訊增益:

選擇資訊增益最高的乙個屬性進行**。

下面我們用sns社群中不真實賬號檢測的例子(例子**ericzhang's tech blog)說明如何使用id3演算法構造決策樹。為了簡單起見,我們假設訓練集合包含10個元素:

設l、f、h和r表示日誌密度、好友密度、是否使用真實頭像和賬號是否真實,下面計算各屬性的資訊增益。

info(d)=-0.7log0.7-0.3log0.3=0.879

infol(d)=0.3(-0/3log0/3-3/3log3/3)+0.4*(-1/4log1/4-3/4log3/4)+0.3*(-1/3log1/3-2/3log2/3)=0.603

gain(l)=info(d)-infol(d)=0.276u因此日誌密度的資訊增益是0.276。

用同樣方法得到h和f的資訊增益分別為0.033和0.553。

在上圖的基礎上,再遞迴使用這個方法計算子節點的**屬性,最終就可以得到整個決策樹。上面為了簡便,將特徵屬性離散化了,其實日誌密度和好友密度都是連續的屬性。

但是id3演算法有缺陷,就是對演算法傾向於選擇分支情況多的屬性作為**,但是這樣的分類可能毫無意義。比如增加乙個id欄,值從1到10,那麼計算結果資訊增益是最高的,但是這樣的分類毫無實際用處。   

為此,quinlan提出了公升級版演算法c4.5。對應的屬性選擇度量是資訊增益比。

(2)資訊增益比:

資訊增益率使用「**資訊」值將資訊增益規範化。分類資訊類似於info(d):

這個值表示通過將訓練資料集d劃分成對應於屬性a測試的v個輸出的v個劃分產生的資訊。

資訊增益率定義:

選擇資訊增益比最大的屬性作為**。

上面去不去打高爾夫的決策樹,就是通過c4.5演算法來生成的。

(3)由於作者比較懶,就不寫上gini指標的相關資料了。但是原理是一樣的,只是計算的指標不同。

三、提到決策樹,就不得不提到剪枝。

簡單介紹一下:

當我們生成一棵決策樹時,我們是通過給定的訓練集來生成的,但是生成之後給了新的資料集之後,這棵決策樹可能就會犯錯。為什麼呢,因為我們給的訓練集不能完全包括所有情況,是片面的。而演算法對每個屬性都進行了計算,那麼就會導致決策樹考慮了一下沒那麼重要的屬性,就會導致「過度擬合」。於是我們既要給決策樹「剪枝」。

顧名思義,剪枝就是對決策樹進行修改,改變它的結構或高度。方法有兩種:

1、預先剪枝。也就是預先規定乙個標準,讓決策樹生成到這個標準的時候就不再繼續生長了。但是這樣也可能會導致遇到更好的屬性卻不能歸到決策樹中。標準有很多,比如複雜度,高度等等。

2、後剪枝。在決策樹生成之後,對其結點進行評估,若刪掉這個結點決策樹的準確率高了,那麼就可以剪掉。

最後:由於學習的時間不長,也沒有深入**。有很多地方說的不夠清楚和全面。若有不對或建議,歡迎指正和提出。

本文出自 「sunny」 部落格,請務必保留此出處

決策樹演算法

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

決策樹演算法

本文主要介紹id3 c4.5和cart演算法 決策樹起源於概念學習系統 cls 概念學習模型 是乙個事先定義的範疇集合和一些有關例子是否落入給定範疇的判定 概念學習的主要任務 是判斷所給定事物的屬性或特性,並且正確地區分這些事物,將其劃分到某乙個範疇 對於如下決策樹模型 我們首先考慮他的屬性outl...

決策樹演算法

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