1 特徵選擇算法
特徵選擇的理解:在決策樹算法中,每次選擇一個最優的特徵來分支是最最重要的一步,那究竟如何選擇這個最優的特徵就變成了關鍵問題。對於拿到的數據中,什麼類別標籤的樣本都有,是十分不肯定的,換句話說就是十分混亂的。用數據中其中一個特徵來劃分數據以後,數據的混亂程度都會變小,最優的劃分特徵就是經過此特徵劃分以後數據的混亂程度變的最小的那一個特徵。下面分別介紹兩種選取最優劃分特徵的算法,信息增益和信息增益率。函數
2 信息增益學習
爲了引出信息增益算法,首先定義出信息熵,聯合熵和條件熵的概念。優化
信息熵爲信息論中的概念,熵表示隨機變量不肯定性的度量,即信息熵越大的事物,它的不肯定性就越大,對於隨機變量X公式以下:spa
其中,意思是:隨機變量X的取值爲Xi 時的機率。n爲X有n種取值。3d
舉個栗子,假如X的取值只有0和1,則X的分佈爲:blog
則X的熵爲:遞歸
第二個概念是聯合熵,設有兩個隨機變量X和Y,其聯合熵爲:事件
第三個概念是條件熵,對於條件熵H(Y|X)表示在已知隨機變量X的條件下隨機變量Y的不肯定性。同時可定義爲Y在給定條件X下Y的條件機率分佈的熵對X的數學指望,公式以下:數學
其中pi = P(X = xi),i = 1, 2, 3, ..., n。
下面主角就能夠登場了,信息增益表示得知特徵X的信息而使得類Y的信息的不肯定性減小的程度,通俗來講就是某事件的信息熵與以某個特徵爲條件的條件熵之差。
特徵A對訓練數據集D的信息增益g(D, A),定義爲集合D的經驗熵與特徵A給定條件下D的條件熵H(D|A)之差,公式爲:
信息增益也叫互信息,決策樹學習中的信息增益等價於訓練數據集中類與特徵的互信息。
決策樹學習應用信息增益的準則選擇特徵,給定訓練數據集D和特徵A,經驗熵H(D)表示對數據集D進行分類的不肯定性。而條件熵H(D|A)表示在特徵A給定的條件下對數據集D進行分類的不肯定性,那麼他們的差就是信息增益,就表示因爲特徵A而使得對數據集D的分類的不肯定性減小的程度。顯然,對於數據集D而言,信息增益依賴於特徵,不一樣的特徵每每具備不一樣的信息增益,信息增益大的特徵具備更強的分類能力。
下面再次舉一個栗子,每一個樣本有三個特徵,第一個是是否有房,第二個特徵是婚姻情況,有三個可能:單身,已婚,離異,第三個特徵是年收入,是一個連續值,標籤是是否拖欠貸款,是一個二分類問題,樣本以下:
是否有房 | 婚姻情況 | 年收入 | 是否拖欠貸款 |
是 | 單身 | 125k | 否 |
否 | 已婚 | 100k | 否 |
否 | 單身 | 70k | 否 |
是 | 已婚 | 120k | 否 |
否 | 離異 | 95k | 是 |
否 | 已婚 | 60k | 否 |
是 | 離異 | 220k | 否 |
否 | 單身 | 85k | 是 |
否 | 已婚 | 75k | 否 |
否 | 單身 | 90k | 是 |
根據是否有房計算信息增益:
首先計算樣本的經驗熵:
而後計算在是否有房的特徵(A)下計算條件經驗熵:
有房的經驗熵:
無房的經驗熵:
特徵A下的條件經驗熵:
最後計算信息增益:
3 信息增益率
以信息增益做爲劃分訓練集特徵有些缺點:它偏向於選擇取值較多的特徵。而使用信息增益率能夠對這一問題進行校訂,能夠做爲另外一個特徵選擇的準則。
對於數據集D和某一特徵A,則特徵A對訓練集D的信息增益比gR(D, A)定義爲:其信息增益與訓練數據集D關於特徵A的熵HA(D)之比,即:
其中n爲特徵A的取值個數,|D|爲數據集D的樣本個數,|Di|爲樣本的特徵A第i個取值的樣本個數。
4 ID3決策樹生成
決策樹生成方法:從根節點開始,在根節點上有全部的樣本,而後對樣本計算全部特徵的信息增益,選取信息增益最大的特徵做爲節點的特徵,並用特徵的不一樣的取值創建子節點;再對子節點遞歸的調用以上方法,構建決策樹;直到全部特徵的信息增益都很小或沒有特徵能夠選擇。
ID3決策樹生成算法:
輸入:訓練數據集D,特徵集A,閾值
輸出:決策樹T
(1)若訓練集D中全部的樣本屬於同一類Ck,則T爲單節點樹,並將類Ck做爲該結點的類標記,返回樹T;
(2)若特徵集A爲空集合,則T爲單結點樹,並將D中樣本數最多的類Ck做爲該結點的類標記,返回數T;
(3)不然,計算A中各特徵對D的信息增益,選擇信息增益最大的特徵Ag;
(4)若是Ag的信息增益小於閾值,則置T爲單結點樹,並將D中樣本數最大的類Ck做爲該結點的類標籤,返回樹T;
(5)不然,對Ag的每個可能的值ai,按照Ag=ai將D分割成若干非空子集Di,將Di中樣本數最多的類做爲標籤,構建子結點,由結點及其子結點構成樹T,返回T;
(6)對第i個子結點,以Di做爲訓練集,以A-{Ag}做爲特徵集,遞歸的調用步(1)~(5),獲得子樹Ti,返回Ti。
ID3算法並無對過解決過擬合問題。
5 C4.5決策樹的生成
C4.5對算法進行改進,將信息增益改成信息增益率做爲選擇最優特徵的準則
C4.5決策樹生成算法:
輸入:訓練數據集D,特徵集A,閾值
輸出:決策樹T
(1)若訓練集D中全部的樣本屬於同一類Ck,則T爲單節點樹,並將類Ck做爲該結點的類標記,返回樹T;
(2)若特徵集A爲空集合,則T爲單結點樹,並將D中樣本數最多的類Ck做爲該結點的類標記,返回數T;
(3)不然,計算A中各特徵對D的信息增益率,選擇信息增益率最大的特徵Ag;
(4)若是Ag的信息增益率小於閾值,則置T爲單結點樹,並將D中樣本數最大的類Ck做爲該結點的類標籤,返回樹T;
(5)不然,對Ag的每個可能的值ai,按照Ag=ai將D分割成若干非空子集Di,將Di中樣本數最多的類做爲標籤,構建子結點,由結點及其子結點構成樹T,返回T;
(6)對第i個子結點,以Di做爲訓練集,以A-{Ag}做爲特徵集,遞歸的調用步(1)~(5),獲得子樹Ti,返回Ti。
6 決策樹的剪枝
只用前面的方法生成的決策樹有一個問題,那就是過分擬合了訓練集,爲了解決這個問題,須要對生成的樹進行剪枝,又叫作後剪枝,是決策樹算法經常使用的解決過擬合問題的算法。
決策樹的剪枝經過極小化決策樹總體的損失函數來實現,假設有一個已經生成的決策樹,這顆決策樹的葉節點個數爲 |T|, 設t是這顆決策樹的某一個葉節點,該葉節點有Nt個樣本點,在這Nt個樣本點中屬於k類的樣本點有Ntk個,k是一個從1到K的整數,Ht(T)是葉節點t上的經驗熵,爲大於哦的常數,則決策樹的學習的損失函數爲:
其中經驗熵爲:
將經驗熵的公式帶入到損失函數中:
能夠將公式的第一項記爲C(T),則
在最後的公式中,C(T)表示模型的訓練偏差,即模型與訓練集的擬合程度,|T|表示模型的複雜度,當對訓練數據擬合的越好,C(T)會越小,可是|T|會愈來愈大,所以模型的擬合程度和複雜度是一堆矛盾體,調整參數能夠在對訓練集的擬合程度和模型的複雜度之間找到一個平衡點。參數越大,會促使選擇較簡單的模型,參數越小,會促進選擇對數據集擬合程度好的模型,當參數等於零時,只考慮模型與訓練集的擬合程度,不考慮模型的複雜度。
能夠看出,決策樹的生成算法只考慮了經過提升信息增益或信息增益率來對數據集進行更好的擬合,則決策樹的剪枝經過優化損失函數還考慮了減小模型的複雜度,決策樹生成學習局部的模型,而決策樹的剪枝學習總體的模型。
樹的剪枝算法:
輸入:生成算法產生的整個樹T,參數;
輸出:修剪後的子樹T;
(1)計算每一個結點的的經驗熵
(2)遞歸的從樹的葉節點向上回縮
設一組葉節點回縮到父節點以前與以後的總體樹分別爲Ta, Tb,其對應的損失函數值分別是,,若是
則進行剪枝,即將父節點變成新的葉節點
(3)返回(2),直到不能進行爲止,獲得最小子樹。
本篇隨筆主要參考李航老師的統計學習方法