1. 程式人生 > >《西瓜書》筆記04:決策樹

《西瓜書》筆記04:決策樹

1. 決策樹的劃分選擇

決策樹學習的關鍵是:如何確定最優劃分屬性。

我們希望,決策樹劃分過程中,分支結點所包含的樣本儘可能同屬一類。即結點的純度越來越高。分支結點的純度越高,則熵越小。

對於資訊增益,定義為:分支前的熵-分支後的熵。分支後純度越高,熵越小,減數越小,則差值越大。即資訊增益越大,表明分支越好。

對於資訊增益率,除以該屬性取值的分佈熵。也是越大越好。

資訊增益,對可取值數目較多的屬性有所偏好,取值越多,越趨近於一個結點一個樣本,這樣熵很小,增益值很大。

為了平衡,除以屬性的“固有值”即分佈熵。屬性可能取值越多,通常該值越大。起到矯正作用。

資訊增益率,對可取值較少的屬性有所偏好。取值越少,固有值越小,則分母越小,資訊增益率越大。

C4.5啟發式選擇演算法:先從候選劃分屬性中找到資訊增益高於平均水平的(小的不包避免除以小分母翻把;大壞的包),再從其中選擇資訊增益率最大的(抑制裡面大壞的)。

2. 基尼指數

基尼值:

這裡寫圖片描述

直觀上,可反映從資料集D中隨機抽取兩個樣本,其類別標記不一致的概率。那基尼值越小,則D的純度越高。

趨勢情況,和熵的類似。直接用基尼係數選,則要選最小的。

3. 剪枝

決策樹學習演算法對付過擬合:剪枝。

剪枝的基本策略:

  • 預剪枝:決策樹的生成過程中,對每個結點在劃分前後進行估計,若當前結點劃分不能帶來泛化效能提升,則停止;將當前結點作為葉結點。
  • 後剪枝:先從訓練集生成一棵完整的決策樹,自底向上對非葉結點考察,若將該結點的子樹,替換為葉結點能帶來泛化效能提升,則剪枝。

問:如何判斷決策樹的泛化效能?

答:使用驗證集,計算前後的精確度比較。

預剪枝的優缺點:

  • 優:降低了過擬合的風險;減少了樹的訓練時間和測試時間開銷。
  • 缺:有些分支因當前不能提升效能而沒有展開,但在其基礎上的後續劃分可能提高效能。因其乃貪心策略不展開,所以有欠擬合的風險。

後剪枝的優缺點,與上相反。優點是不會欠擬合,泛化效能往往優於預剪枝;缺點是時間開銷較大。

此處剪枝的原則,根據驗證集的泛化誤差,也就是錯誤率來決定是不是剪枝。

而李航書中講到此處時,考慮結點的純度(如熵,如基尼指數),沒有驗證集,即當前分的越好,每個結點的類別越乾淨,則熵越小,並考慮子樹的結點(正則化)。

這是兩種思路。

4. 連續值處理和缺失值處理

4.1 連續值處理:

即對應了CART中的迴歸樹。在連續屬性中尋找一個最佳切分屬性和切分點。

與離散屬性不同,若當前結點劃分屬性為連續屬性,該屬性還可以作為後代結點的劃分屬性。(劃分點可以不同)

西瓜書P85頁的例子還說明:連續值和離散值可同一個樹中,即將連續值看作是可取值為2的一個離散屬性即可。將連續值分為+和-兩類,即可像離散那樣處理。

4.2 缺失值處理

通常意義上,某一列有缺失值,若是離散,以眾數代替;若是連續,以均值代替。

P87頁的演算法,是針對Gain公式進行調整的一種演算法。不是通常理解上的缺失值處理。來源於[Quinlan, 1993] C4.5演算法的一種處理。

大體上,進行劃分屬性選擇時,每個屬性計算時忽略缺失值,但要乘上使用的非缺失值比例。給定劃分屬性後,若某樣本在該屬性上的值缺失,則將樣本劃分到所有子結點,調整樣本權值保持為1即可。

5. 多變數決策樹

將各個屬性看作是一個座標軸,則d個屬性對應的樣本,對應著d維空間中的一個點。對樣本分類意味著,在這個空間中尋找不同樣本之間的分類邊界。

決策樹形成的分類邊界:軸平行。分類邊界由若干個與座標軸平行的分段構成。這使得結果具有較好的可解釋性。

這裡寫圖片描述

然而如果任務的分類邊界較為複雜,必須用很多段才可以湊出來。

這裡寫圖片描述

此時決策樹相當複雜,進行大量的屬性測試,時間開銷大。

若可以使用斜的劃分邊界,那就省事了。

多變數決策樹,可實現斜劃分,非葉結點不再是某個屬性,而是屬性的線性組合。與傳統單變數決策樹不同(為每個非葉結點尋找一個最優劃分屬性),而是建立一個合適的線性分類器。

這裡寫圖片描述

想起當時TSA比賽為何組合屬性會有提升?原因在於多加一個組合屬性,即空間多一維,而那一維上分類平面可能比較容易劃分。

6. 其他

  1. 剪枝對提高決策樹的泛化效能影響顯著,當資料有噪聲時,尤為明顯。

  2. 本質上,各種特徵選擇方法均可用於決策樹劃分屬性選擇。

  3. 有一些決策樹學習演算法可以“增量學習”:在接收到新樣本後可對已學得的模型進行調整,不用完全重新學習,主要機制是通過調整分支路徑上的劃分屬性次序,對樹進行部分重構。如ID4,ID5R等。增量學習有效降低每次接收到新樣本後的訓練時間開銷,但多步增量學習後的模型,會與基於全部資料學得的模型有較大差別。

補充1:決策樹的優缺點:

優點

  • 決策樹易於理解和解釋。人們在通過解釋後都有能力去理解決策樹所表達的意義。
  • 對於決策樹,資料的準備往往是簡單或者是不必要的。其他的技術往往要求先把資料一般化,比如去掉多餘的或者空白的屬性。
  • 能夠同時處理資料型和常規型屬性。其他的技術往往要求資料屬性的單一。
  • 決策樹是一個白盒模型。如果給定一個觀察的模型,那麼根據所產生的決策樹很容易推出相應的邏輯表示式。

缺點

  • 對於那些各類別樣本數量不一致的資料,在決策樹當中,資訊增益的結果偏向於那些具有更多數值的特徵。用平衡的資料訓練決策樹
  • 決策樹的結果可能是不穩定的,因為在資料中一個很小的變化可能導致生成一個完全不同的樹,這個問題可以通過使用整合決策樹來解決。
  • 實際決策樹學習演算法是基於啟發式演算法,如貪婪演算法,尋求在每個節點上的區域性最優決策。這樣的演算法不能保證返回全域性最優決策樹。
  • 有一些概念很難用決策樹去很輕易的表達,比如異或。
  • 決策樹處理缺失資料時的困難。
  • 過擬合。
  • 忽略資料集中屬性之間的相關性。