1. 程式人生 > >(周志華)讀書筆記 -- 第四章 決策樹

(周志華)讀書筆記 -- 第四章 決策樹

4.1 基本流程

決策樹是什麼?要想解決這個問題,首先要弄明白的就是計算機中的樹是什麼。樹,我們在計算機中很常見了,有二叉樹,哈夫曼樹等等,總結一下共同點的時候就是,對一個當前節點而言,下一個個節點有多個節點可以選擇的結構。簡單的說就是有分叉的結構就是樹(可能這樣說也不嚴謹)。而決策樹就是利用了這種分叉來判斷的樹。如圖就是一個決策樹:

一個決策樹包含了一個根節點,若干個內部節點和若干個葉節點。這個還是比較容易理解的,用虛擬碼描述生成樹的過程貌似也沒啥:


4.2劃分選擇

決策樹簡單,但是他的關鍵點在與選擇劃分的屬性。這樣的話,我們對於屬性的選擇就有了一個判定標準。

4.2.1 資訊增益

這裡的定義是否很熟悉呢?就是化學中的熵值一樣嘛,熵來代表秩序程度大小,熵越大越不規律嘛。自然界中都是熵增原則,而我們最求的確是熵小,畢竟這是以人的意志來改變世界嘛。

這裡計算屬性a對樣本集D的資訊增益:


在這裡,資訊增益越大,說明熵減少的越多,也就是越有序嘛(經過劃分,同一類的越近)。這樣就可以找到最優的屬性。

4.2.2 增益率

現在有一個極端的例子,給每個樣本進行編號,然後按照編號弄一個決策樹可不可以呢?答案當然是不可以。因為每個編號都是一類,這樣無疑是最準確的,但是有一個問題就是泛化能力遠遠不夠啊。這樣做了是毫無意義的。因此我們用增益率來防止這個事情的發生:


這裡需要注意的是,佔有率可能對取值數目較少的屬性有所偏好,因此我們先從候選屬性中找到資訊增益高於平均水平的屬性,然後再從裡面選取增益率最高的。

4.2.3 基尼指數

著名的CART決策樹使用“基尼指數”來劃分屬性。


簡單的說,就是隨機抓出來兩個樣本,這兩個樣本不是同一類的概率。因此也是越小越好。同樣也要對每一個屬性a進行計算:


4.3 剪枝處理

剪枝也是為了能夠使訓練的結果不過擬合。在決策樹學習生成的過程中,有可能因為分支過多,把資料自身的特徵當成了這一類的特徵。當資料改成了測試集的時候結果肯定不怎麼好了。

剪枝又分為預剪枝和後剪枝兩種,簡單的說,預剪枝就是在分支個數的時候就先判斷一下是否要進行分支。後剪枝就是在生成決策樹以後再由底向上的判斷之歌分支是否需要保留。一般來說、後剪枝的效果好,但是花費的時間要多。

4.4 連續與缺失值

連續屬性的離散化技術在此時派上了用場:


然後我們就可以像考察汗離散屬性一樣考察這些值了,這樣對之前的公式做一點變化: