《西瓜書》筆記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. 其他
剪枝對提高決策樹的泛化效能影響顯著,當資料有噪聲時,尤為明顯。
本質上,各種特徵選擇方法均可用於決策樹劃分屬性選擇。
有一些決策樹學習演算法可以“增量學習”:在接收到新樣本後可對已學得的模型進行調整,不用完全重新學習,主要機制是通過調整分支路徑上的劃分屬性次序,對樹進行部分重構。如ID4,ID5R等。增量學習有效降低每次接收到新樣本後的訓練時間開銷,但多步增量學習後的模型,會與基於全部資料學得的模型有較大差別。
補充1:決策樹的優缺點:
優點
- 決策樹易於理解和解釋。人們在通過解釋後都有能力去理解決策樹所表達的意義。
- 對於決策樹,資料的準備往往是簡單或者是不必要的。其他的技術往往要求先把資料一般化,比如去掉多餘的或者空白的屬性。
- 能夠同時處理資料型和常規型屬性。其他的技術往往要求資料屬性的單一。
- 決策樹是一個白盒模型。如果給定一個觀察的模型,那麼根據所產生的決策樹很容易推出相應的邏輯表示式。
缺點
- 對於那些各類別樣本數量不一致的資料,在決策樹當中,資訊增益的結果偏向於那些具有更多數值的特徵。用平衡的資料訓練決策樹
- 決策樹的結果可能是不穩定的,因為在資料中一個很小的變化可能導致生成一個完全不同的樹,這個問題可以通過使用整合決策樹來解決。
- 實際決策樹學習演算法是基於啟發式演算法,如貪婪演算法,尋求在每個節點上的區域性最優決策。這樣的演算法不能保證返回全域性最優決策樹。
- 有一些概念很難用決策樹去很輕易的表達,比如異或。
- 決策樹處理缺失資料時的困難。
- 過擬合。
- 忽略資料集中屬性之間的相關性。