決策樹學習

2021-07-23 17:40:51 字數 2984 閱讀 5276

決策樹是一種在機器學習中常見的學習演算法。決策樹是一種基於樹結構來進行決策分類和回歸的,在每一步的決策過程中根據屬性值來進行劃分,決策過程中提出的每個判定問題就是對某乙個屬性的測試。一般的,乙個決策樹通常包含乙個根節點,若干的葉子節點和內部節點,葉子節點對應於最後的決策結果,其他每一節點對應於每乙個屬性測試,從根到葉子節點的一條路徑就構成了乙個判斷序列。決策樹學習的目的就是為了學習得到一棵泛化能力較強,可以較好的處理之前沒有見到過的資料的過程。下面的這幅圖可以很好的說明決策樹學習的過程。

從演算法的過程中可以看到,演算法最關鍵的步驟在於從所有的屬性集中選取最優的屬性,在劃分的過程中,我們希望每次劃分的結果是資料可以越來越純,最好是每個節點中的資料都是同乙個類別,那麼怎樣來判斷資料的純度呢?

2. 資訊增益

首先定義資料的資訊熵,假設在給定的資料中d中有k類樣本,則資料的資訊熵定義如下:

規定在p的值為0時候,熵值為0

現在假定要利用屬性a來對資料進行劃分,a一共有v個不同的取值,那麼根據屬性a不同的取值最後就會產生v個分支節點,可以計算每乙個分支節點對應的資訊熵,不同節點對應的資料個數也是不相同的,所以可以給每個節點賦予乙個權重,利用下面的式子來計算資訊增益。

從上面的式子可以看出,資訊增益對應的就是用劃分之前節點資料的資訊熵來減去劃分之後各個節點資訊熵的加和。一般說來,資訊增益反映了資料純度的變化,資訊增益越大,以為著利用這個屬性來劃分資料取得的效果也越好。在決策樹的生成演算法中,id3演算法就是採用資訊增益的原則來生成決策樹的。

3.基尼值數

cart決策樹選擇使用基尼係數來生成決策樹,資料集d的基尼係數可用一下的公式來定義:

基尼係數反映了隨機的從資料集中選取兩個元素不一致的概率大小,所以,基尼指數越小,表示資料的純度越純。

與資訊增益一樣,利用屬性a來劃分資料一樣可以得到v個節點,定義屬性a的基尼指數為:

所以在生成決策樹中,選擇那個可以是的資料的基尼指數最小的屬性來劃分資料。

4.剪枝處理

利用決策樹生成演算法(id3,cart)可以生成一棵滿足條件的樹,但是在決策樹生成的過程中,為了盡可能好的訓練樣本,決策樹分支的過程將會不斷的重複,有時候就會造成決策樹的分支過多,出現過擬合的情況,而決策樹剪枝處理就是為了解決過擬合的情況。常見的決策樹剪枝處理可以分為預剪枝和後剪枝兩種。

預剪枝是在決策樹的生成過程中對每個節點在劃分之前進行判斷,若當前節點的劃分不能帶來決策樹泛化能力的提公升,則停止劃分將當前節點劃分為葉子節點。後剪枝則是先生成一棵完整的決策樹,然後自下而上的對非葉子節點進行考察,如果將該非葉子節點的子樹替換為該節點可以帶來泛化能力的提公升,則可以將子樹替換為葉子節點。

至於如和來判斷決策樹泛化能力的提公升呢?可以將原始的資料集劃分為兩  個部分,其中一部分用來尋來呢決策樹的生成,一部分用來測試決策樹的泛化能力,下面分別對預剪枝和後剪枝進行說明。

在這裡我們依舊採用《機器學習》書中第四章節表4.2的資料來進行說明。

表中上面部分的資料為訓練集,下部分資料為驗證集,在劃分之前,所有的樣例都是在根節點,若不進行劃分,則該節點為葉子節點,戚類別標記為訓練樣例中出現最多的類別。接下來用用驗證集來驗證訓練出的決策樹的泛化能力。在訓練集中,總共出現了5個「是」,5個「否」,假設我們採取「是」作為葉子節點的類別,顯而易見,這個單節點的決策樹在驗證集上分類正確率為3/7,大概是42.9%。

接下來使用臍部這個屬性來對所用的樣本進行劃分,可以將樣例分為三個節點,編號1,2,3,14為一組(類別為「是」),編號6,7,15,17(類別為「是」)為一組,編號10,16(類別為「否」)為一組。在驗證集上對這個決策樹來進行驗證,可以計算得到此時分類真確率為5/7,大概是71.4%,大於第一次未進行劃分的正確率,所以可以進行這次劃分。說明通過這樣的一次劃分之後,決策樹的泛化能力提高了,這樣的劃分是有必要的。接下來再對剛才劃分生成的3個節點採取同樣的方法進行劃分,例如1,2,3,14這一組的樣例,採用色澤屬性對其進行劃分,可以計算得到劃分之後決策樹的泛化能力為57.1%,小於之前未劃分的泛化能力,所以此次的劃分帶來的是負面的影響,不進行這樣的劃分。另外兩個節點採用同樣的方法進行判斷。

預剪枝可以減少決策樹中節點的個數,降低了過擬合的風險。由於在預剪枝處理中避免了那些可能會帶來決策樹泛化能力下降的劃分,但如果在這些劃分上接著往下劃分可能決策樹的泛化能力最終是的得到提高的 ,所以預剪枝處理在一定程度上會帶來欠擬合。

後剪枝處理先生成一棵完整的決策樹,如圖所示:

首先計算決策樹的泛化能力為42.7%,先考慮節點6,利用紋理屬性進行劃分,如將劃分之後的三個子節點進行剪枝,都歸為節點6,在驗證集上計算決策樹的泛化能力,計算可知正確率為57.1%,泛話能力得到了提公升,所以進行剪枝處理。同理接著計算節點5,計算後決策樹的分類正確率為57.1%,沒有得到提高,所以不進行剪枝,同樣的方法一次向上進行處理。

一般情況下,後剪枝處理的決策樹欠擬合能力風險很小,往往泛化能力也由於預剪枝處理的決策樹,但是後剪枝處理往往在生成決策樹之後自下而上進行處理的,所以訓練計算開支比預剪枝決策樹的開支大。

參考《機器學習》周志華

決策樹學習

決策樹學習是一種逼近離散值目標函式的方法,在這種方法中學習到的函式被表示為一棵決策樹。決策樹通過把例項從艮節點排列到某個葉子結點來分類例項,葉子結點即為例項所屬的分類。樹上的每乙個結點指定了對例項的某個屬性的測試,並且該結點的每乙個後繼分支對應於該屬性的乙個可能值。分類例項的方法是從這棵樹的根節點開...

決策樹學習

決策樹是以例項為基礎的歸納學習。該類方法從一類無序,無規則的事物中推理出決策樹表示的分類規則。不論哪種決策樹學習演算法,其基本思想是一致的,即以資訊熵為度量構造一棵 熵值下降最快的樹,到葉子節點處的熵值為零。此時每個葉子結點的例項都屬於同一類。決策樹學習採用自頂向下的遞迴方法,決策樹的每一層結點依靠...

決策樹學習

在學習決策樹學習之前,我想先問問幾個問題,以便好好梳理思路。1.決策樹是什麼?幹啥用的?決策樹學習又是什麼?2.資訊增益,純度,熵是什麼?在決策樹中是幹啥用的?3.構建乙個決策樹包含哪幾個步驟?如何構建?回答 2.熵表示乙個系統的無序程度,熵將小表示系統趨於有序。資訊增益表示在劃分資料之前之後資訊發...