一、決策樹
在機器學習中,決策樹是一個預測模型;他代表的是物件屬性與物件值之間的一種對映關係。樹中每個節點表示某個物件,而每個分叉路徑則代表的某個可能的屬性值,而每個葉結點則對應從根節點到該葉節點所經歷的路徑所表示的物件的值。決策樹僅有單一輸出,若欲有複數輸出,可以建立獨立的決策樹以處理不同輸出。資料探勘中決策樹是一種經常要用到的技術,可以用於分析資料,同樣也可以用來作預測。從根節點開始一步步走到葉子節點(決策),所有的資料最終都會落到葉子節點,既可以做分類也可以做迴歸。
例如對下面的5個小人兒根據年齡性別來進行構造出一棵決策樹。
二、決策樹的組成
(1)根節點:表示第一個選擇點.
(2)非葉子節點與分支:表示中間過程。
(3)葉子節點:表示最終的決策結果,所有的節點合起來就是整個資料集。。
三、構造決策樹
決策樹的訓練與測試
訓練階段:從給定的訓練集構造出來一棵樹(從根節點開始選擇特徵)
測試階段:根據構造出來的樹模型從上到下去走一遍就好了。
難點:一旦構造好了決策樹,那麼分類或者預測任務就很簡單了,只需要走一遍就可以了,那麼難點就在於如何構造出來一棵樹,這就沒那麼容易了,需要考慮的問題很多。
如何切分特徵(怎麼選擇節點)
問題:根節點的選擇該用哪個特徵呢?接下來呢?如何切分呢?
想象一下:我們的目標應該是根節點就像一個老大似的能更好的切分資料(分類的效果更好),根節點下面的節點自然就是老二了。
目標:那怎麼去選擇這個根節點呢? 我們可以通過一種衡量標準,來計算通過不同特徵進行分支選擇後的分類情況,找出來最好的那個根節點,以此類推。
衡量標準-熵
熵:熵是表示隨機變數不確定性的度量。(解釋:說白了就是物體內部的混亂程度,比如雜貨市場裡面什麼都有那肯定混亂呀,專賣店裡面只賣一個牌子那就穩定多啦)。用公式來表達就是:H(X) = -ΣP(i)*log(p(i)),i = 1,2,3,...,n,log函式的底數是幾無所謂。
公式解釋:P(i)表示取到一個節點的概率。那麼在log(p(i))函式中,如果P(i)的值越大,那麼log(p(i))的值必然越接近於0,這時我們注意到公式前面還有個負號,所以H(X)值就越小,所以就表示熵值很小。綜合起來說的話,就是概率P(i)的值越大,那麼熵值越小,概率P(i)的值越小,那麼熵值越大。下面通過一個栗子在來看看這個熵值,有下面A、B兩個集合資料,判斷一下兩個集合的熵值情況。
A集合[1,1,1,1,1,1,1,1,2,2]
B集合[1,2,3,4,5,6,7,8,9,1]
顯然A集合的熵值要低,因為A裡面只有兩種類別,相對穩定一些。而B中類別太多了,熵值就會大很多。(在分類任務中我們希望通過節點分支後資料類別的熵值大還是小呢?顯示希望分支過後熵值越低越好)
那麼如何選擇一個節點呢?一般都是通過資訊增益來進行節點的選擇
資訊增益
表示特徵X使得類Y的不確定性減少的程度。(分類後的專一性,希望分類後的結果是同類在一起)。假如原來熵值等於10,經過一次決策過後,熵值降低為8,那麼資訊增益值就等於2,那麼我們可以遍歷所有特徵的熵值,看下哪個特徵使我們的資訊增益值最大,那麼這個特徵就是根節點。依次類推,再在剩下的特徵中繼續尋找資訊增益值最大的特徵,那麼這個特徵就是第二個節點了。
四、決策樹構造例項
資料:14天打球情況
特徵:4種環境變化,天氣,溫度,溼度,是否有風。
目標:構造決策樹
劃分方式:因為資料總共四個特徵,所以劃分方式也是4種
問題:誰當根節點呢?,有如下四種劃分。
依據:資訊增益
接下來通過計算來篩選哪個特徵來當根節點。在歷史資料中(14)天有9天打球,5天不打球,首先計算這14天中,是否打球這一特徵的熵值為
然後接下來對4個特徵逐一分析,先從outlook特徵開始:
Outlook = sunny時,熵值為0.971,式子為-(2/5)*log2(2/5)-(3/5)*log2(3/5)。
Outlook = overcastt時,熵值為0,同理計算。
Outlook = rainy時,熵值為0.971,同理計算。
根據資料統計,outlook取值分別為sunny,overcast,rainy的概率分別為:5/14, 4/14, 5/14,所以最終如果我們以Outlook為根節點的話,它的熵值為:5/14 * 0.971 + 4/14 * 0 + 5/14 * 0.971 = 0.693
那麼如果我們選擇以Outlook為根節點的話,首先系統最初的熵值為0.940,下降到Outlook的熵值的話,那麼資訊增益的值就為0.247,用gain(Outlook)=0.247表示。同理我們可以計算出其他特徵的資訊增益值,gain(temperature)=0.029 gain(humidity)=0.152 gain(windy)=0.048。那麼我們選擇最大的那個就可以啦,相當於是遍歷了一遍特徵,找出來了根節點老大也就是Outlook特徵,然後在其餘的中繼續通過資訊增益就可以找到老二等等。
五、決策樹演算法
ID3:資訊增益(有什麼問題呢?),假如資料集裡面有個ID的特徵,如果通過這個特徵來進行劃分,那麼ID這個特徵的熵值為0,那麼此時資訊增益值就是最大的,所以根節點就是ID這個特徵了,那這個劃分肯定是不可取的。所以ID3這個演算法的問題就是,如果某個特徵非常稀疏,裡面屬性值又比較小,那麼這個特徵的熵值就比較小,資訊增益就比較大了。
C4.5:資訊增益率(解決ID3問題,考慮自身熵):資訊增益率=資訊增益/自身熵值。
CART:使用GINI係數來當做衡量標準,GINI係數,和熵的衡量標準類似,計算方式不相同)
六、決策樹剪枝
為什麼要剪枝:決策樹過擬合風險很大,理論上可以完全分得開資料(想象一下,如果樹足夠龐大,每個葉子節點不就一個資料了嘛),剪枝的策略可以把它想象成小區裡面給樹木剪枝的操作。
剪枝策略:預剪枝,後剪枝
預剪枝:邊建立決策樹邊進行剪枝的操作(更實用),限制決策樹深度,葉子節點個數,葉子節點樣本數,資訊增益值等
後剪枝:當建立完決策樹後來進行剪枝操作,通過一定的衡量標準Cα(T)=C(T)+α*|Tleaf|(葉子節點越多,損失越大),C(T)表示損失,等於樣本數*熵值(gini係數),也就是上圖中的samples*gini,Tleaf表示葉子節點的個數。α表示需要自己指定的引數。
七、決策樹優缺點
優點:決策樹易於理解和實現,在相對短的時間內能夠對大型資料來源做出可行且效果良好的結果。能夠直接體現資料的特點。
缺點:對連續性的欄位比較難預測,對有時間,id等順序的資料,需要做很多預處理的工作。