[DataAnalysis]機器學習演算法——決策樹詳解(屬性劃分+剪枝+缺失值/連續值處理)
決策樹簡述
決策樹是一種用於對例項進行分類的樹形結構。決策樹由節點(node)和有向邊(directed edge)組成。節點分成根節點、內節點(表示一個特徵或者屬性的測試條件)和葉子節點(表示一個分類)。
決策樹的生成是一個遞迴過程。在決策樹演算法中,有三種情形會導致遞迴返回。(1)當前結點包含的樣本全屬於同一類別,無需劃分;(2)當前屬性集為空,或是所有樣本在所有屬性上取值相同,無法劃分。(3)當前結點包含的樣本集合為空,無法劃分。
劃分選擇(如何選擇最優劃分屬性)
1、資訊熵
(1)資訊增益
假定當前樣本集合中第類樣本所佔的比例為,則的資訊熵定義為
,該值越小,則的純度越高
資訊熵定義為:
資訊增益越大,說明用屬性來進行劃分所獲得的“純度提升”越大。選擇資訊增益最大的作為劃分屬性。
(2)增益率
由於資訊增益準則會偏好取值數目較多的屬性,因此我們引入“增益率”對取值數目較多的屬性增加懲罰。
增益率定義為:
其中,,的屬性值越多,則越大。
但是增益率對可取值數目較少的屬性有所偏好。
從而我們先從候選劃分屬性中找出資訊增益高於平均水平的屬性,再從中選取增益率最高的。
2、基尼係數
CART決策樹用“基尼係數”來選取劃分屬性。
3、誤分類概率
剪枝處理puring
在決策樹學習中,為了儘可能正確分類訓練樣本,可能會導致決策樹分支過多,可能會出現過擬合的問題。剪枝就是決策樹學習演算法中應對“過擬合”的主要手段。
1、預剪枝
預剪枝要對劃分前後的泛化效能進行估計來決定是否要進行這個劃分。
2、後剪枝
(1)分析剪枝前後泛化能力(驗證集精度)
(2)奧卡姆剃刀原則:雖然剪枝後精度並未提升,但是模型簡化了也需要剪枝。
連續值處理
可以採用二分法對連續屬性進行處理(如C4.5決策樹演算法中採用的機制)
給定樣本集和連續屬性,假定在上出現了個不同的取值,將這些取值從大到小進行排序,記為。我們考慮包含個元素的候選劃分點集合
即把區間的中位數作為候選劃分點,選取最優的劃分點作為樣本集合的劃分。
缺失值處理
在屬性數目較多的情況下,往往會有大量樣本出現缺失值。如果簡單地放棄不完整樣本,僅使用無缺失值的樣本進行學習,顯然是對樣本資訊的極大浪費。
給定訓練集和有缺失值的屬性,令表示中在屬性上沒有缺失值的樣本子集,假定屬性有個可取值。
令表示中在屬性上取值為的樣本子集,表示中屬於第類的樣本子集。假定我們為每一個樣本賦予一個權重。定義:
直觀來看,對屬性,表示無缺失值樣本所佔的比例,表示無缺失值樣本中第類所佔的比例,則表示無缺失值樣本中在屬性上取值的樣本所佔的比例。
資訊增益的計算式推廣為:
多變數決策樹
用於處理真實邊界比較複雜的情形,我理解這種情形下已經不是傳統的決策樹,解釋性較差。可以考慮用SVM或者其他的分類方法。