引:
決策樹是一個預測模型,他代表的是對象屬性與對象值之間的一種映射關係。Entropy = 系統的凌亂程度,使用算法ID3, C4.5和C5.0生成樹算法使用熵。這一度量是基於信息學理論中熵的概念。
構造決策樹的基本思想(大衆化表述):爲的是隨着樹深度的增加,節點的熵迅速的降低(熵值越低,節點越純)。熵降低的速度越快越好,這樣纔能有望得到一顆高度儘可能矮的決策樹。
幾個概念的引出:
P(機率越大)==》H(X)值越小 P(機率越小)==》H(X)值越大
1.算法基本流程:
以下是決策樹學習基本算法流程:
2. 主題框架
2.1 信息熵
信息熵:描述一個事物/集合的不確定性。不確定性大 ==》熵值大。
信息熵可以作爲衡量一個模型的標準。信息熵越小,代表當前的類別是比較純的(純度較大)。
之所以用累加符號,是爲了計算整個集合的信息熵,而不是單獨某個元素的。
比如說:【 假設 A=[1,3,6,4,3],集合B=[1,1,1,2,1] 】。 若A集合其內部種類比較多,則其每一種元素取到的概率P(x)就較小,則此集合的信息熵較大! B集合其內部種類比較少,則其每一種元素取到的概率P(x)就較大,則此集合的信息熵較小!
2.2 ID3:信息增益(傳統算法)
信息增益:信息熵 - 使用?屬性對集合劃分後的熵。
ID3決策樹學習算法就是一信息增益爲準則,進行決策樹的屬性劃分。同樣的方式可以計算出其他特徵的信息增益,那麼我們選擇最大的那個就可以啦,相當於是遍歷了一遍特徵,找出來了大當家,然後再其餘的中繼續通過信息增益找二當家!
存在問題:
若是以 ID 最爲特徵(有多少元素就代表多少個屬性。),則其熵值計算下來就會是 0 。!也就是說,Gain(D,a)在這種情況下會最大化。【現在的劃分情況是 高度爲 2 的多分支樹】
針對此問題,我們進一步提出了信息增益率這一概念,如下:
2.3 C4.5:信息增益率
信息增益率:當前所選節點下的信息增益 / 自身的熵值。 哈哈哈,妙哉!!!則這種情況下,分子(信息增益)雖然是較大了,但其分母(自身熵)更是大的可怕。最終導致增益率非常之小,也就解決了上面那個問題。
2.4 CART:基尼(Gini)係數(描述分類效果)
對於實際概率與該係數的關係,基本也與信息熵的大略相近。也是概率越大對應的基尼係數就越小。咱們需要 注意的就是先記住它。基尼係數越小,代表當前的類別是比較純的(純度較大)。另外需要注意的是考慮累加符號,是爲了把當前類別 的每一種元素都考慮進來。
2.5 評價函數: (希望其越小越好,類似損失函數)
這裏的 t屬於leaf ,代表這裏考慮的都是葉子節點。其中: 代表當前的葉子節點有多少個樣本。H(t) 代表該葉子節點的熵值或基尼係數值。
引例:
上例子來解釋以上枯燥理論的具體應用:{本例摘選自唐宇迪老師PPT}
對於一個待處理的數據集如下圖所示,考慮用以下數據來作爲數據源構建一顆決策樹,用於根據如下列舉各因素預測是否滿足play(play代表打球)的條件。
對於以上的數據,如果我們要構建一顆樹,該如何下手去選擇根節點呢(因爲我們的選擇不唯一嘛)?可做的幾個選擇如下圖示:
在沒有給定任何天氣信息時,根據歷史數據,我們只知道新的一天打球的概率是9/14,不打的概率是5/14。此時的熵爲:
由此,我們可以分別計算另外幾個屬性的各個信息熵的值:
3.剪枝處理:
3.1 預剪枝
剪枝(pruning)是決策樹學習算法對付“過擬合”的主要手段.在決策樹學習中,爲了儘可能正確分類訓練樣本,結點劃分過程將不斷重複,有時會造成決策樹分支過多,這時就可能因訓練樣本學得“太好”了,以致於把訓練集自身的一些特點當作所有數據都具有的一般性質而導致過擬合.因此,可通過主動去掉一些分支來降低過擬合的風險.
決策樹剪枝的基本策略有“預剪枝”(prepruning)和“後剪枝”(post-pruning)。預剪枝是指在決策樹生成過程中,對每個結點在劃分前先進行估計,若當前結點的劃分不能帶來決策樹泛化性能提升,則停止劃分並將當前結點標記爲葉結點;後剪枝則是先從訓練集生成一棵完整的決策樹,然後自底向上地對非葉結點進行考察,若將該結點對應的子樹替換爲葉結點能帶來決策樹泛化性能提升,則將該子樹替換爲葉結點。
對比圖4.6和圖4.5可看出,預剪枝使得決策樹的很多分支都沒有“展開”,這不僅降低了過擬合的風險,還顯著減少了決策樹的訓練時間開銷和測試時間開銷。但另一方面,有些分支的當前劃分雖不能提升泛化性能、甚至可能導致泛化性能暫時下降,但在其基礎上進行的後續劃分卻有可能導致性能顯著提高;
預剪枝基於“貪心”本質禁止這些分支展開,給預剪枝決策樹帶來了欠擬合的風險.
3.2 後剪枝
對比圖4.7和圖4.6可看出,後剪枝決策樹通常比預剪枝決策樹保留了更多的分支。一般情形下,後剪枝決策樹的欠擬合風險很小,泛化性能往往優於預剪枝決策樹.但後剪枝過程是在生成完全決策樹之後進行的。並且要自底向上地對樹中的所有非葉結點進行逐一考察,因此其訓練時間開銷比未剪枝決策樹和預剪枝決策樹都要大得多
4.連續與缺失值:
4.1連續值處理
由於連續屬性的可取值數目不再有限,因此,不能直接根據連續屬性的可取值來對結點進行劃分.此時,連續屬性離散化技術可派上用場.最簡單的策略是採用二分法(bi-partition)對連續屬性進行處理,這正是C4.5決策樹算法中採用的機制。
4.2缺失值處理
現實任務中常會遇到不完整樣本,即樣本的某些屬性值缺失。例如由於診測成本、隱私保護等因素,患者的醫療數據在某些屬性上的取值(如HIV測試結果)未知。尤其是在屬性數目較多的情況下,往往會有大量樣本出現缺失值.如果簡單地放棄不完整樣本,僅使用無缺失值的樣本來進行學習,顯然是對數據的極大浪費。
我們需解決兩個問題:(1)如何在屬性值缺失的情況下進行劃分屬性選擇?(2)給定劃分屬性,若樣本在該屬性上的值缺失,如何對樣本進行劃分?
5.多變量決策樹:
參考文獻:
《機器學習》——周志華
【機器學習算法課程】—— 唐宇迪