決策樹在機器學習的理論學習與實踐

藍色的葉子發表於2018-03-29

決策樹,是一種傳統機器學習演算法,也是機器學習的入門演算法之一。在它的基礎上,衍生了隨機森林、GBDT、XGBOOST等在CTR領域效果極佳的演算法,因此,對它的學習可視為通向高階演算法的必經之路,同時,它具有極強的可解釋性,可應對迴歸與分類問題,也視為商業應用展示的不二之選。對學習演算法的入門者來說,瞭解決策樹很有必要,為此,飛馬網於3月27日晚,邀請到畢業於美國密蘇里大學機器視覺實驗室的黃楷老師進行線上直播,黃老師向大家分享了關於決策樹的相關理論與實踐應用。

微信圖片_20180328152725.jpg

以下是本次分享的主要內容:

一.簡介

1.在看簡介之前,我們先討論幾個基礎問題:

機器學習包括有監督學習和無監督學習。有監督學習是明確地表明每個樣本的類別或數值,在有監督學習之下,又分為分類和迴歸問題,分類問題表示預測每個樣本的類別,而回歸問題表示預測每個樣本的具體數值。無監督學習並沒有給出樣本的類別或數值,它會通過一系列的演算法進行聚類。

今天我們要學習的決策樹屬於有監督學習,它可以處理分類和迴歸兩個問題。

2.決策樹簡介:

幻燈片2.jpg

上面這張圖片就是決策樹的簡介,大家可以先簡單瞭解一下,後面會有深入的探索。

二.決策樹的結構

幻燈片3.jpg

我們可以看到上圖左是一個非常基本的樹形結構,學習資料結構的人對此一定很熟悉。我們重點看頭部的根節點,下面的葉子節點代表分類後的結果,下面的分支代表資料的判定條件,例如第一層是大於0.99、大於1.20、大於3.20等。

三. 決策樹使用的階段

1.在我們使用決策樹的時候,分為兩個階段:訓練階段和分類階段。

幻燈片4.jpg

訓練階段我們會通過已有的資料訓練一個模型,分類階段我們會通過模型進行資料的預測,通常我們會將資料隨機分為十個部分,將八個部分進行訓練,取兩個進行測試,測試的資料不會出現在我們的訓練資料中,我們最終的結果也是以測試的資料為準,最後通過一個交叉驗證,得到準確率。

2.例子:

下面我們通過一個國外信用卡的例子來進行學習。

幻燈片5.jpg

第一列表示資料的ID,第二列表示是否有退稅,第三列表示婚姻狀態(單身、離異、已婚),第四列表示納稅收入,第五列就是我們要預測的。

嚴重的話,可理解為這個人是否有過信用卡詐騙記錄,不嚴重的話,可理解為是否信用卡有逾期等等。

我們可以稱這裡的資料有十個樣本、三個屬性,“categorical”表示資料是離散的,“continuous”表示資料是連續的,“class”表示我們要預測的類別。

通過一系列的感性認識,同學甲可能會構建出上圖右的決策樹,黃色的字指判定的是哪一列,箭頭上的值指的是判別的值,藍色的字指預測的結果。

對於同學甲這個模型,我們來看一看他是怎麼判別的:

幻燈片6.jpg

幻燈片7.jpg

這時候同學乙可能會覺得不大滿意,他認為婚姻可能是最重要的,就把婚姻放在決策樹的第一位:

幻燈片8.jpg

以上的這個例子是對決策樹的感性理解,通過對每一步進行判別,來得到最終的目的。

四.如何理性地建立決策樹

下面我們來進行理性的思考,到底如何去建立決策樹?

1.建立決策樹的基本步驟:

幻燈片9.jpg

對於樹的截止問題,從上圖中我們得知,它有兩個結束的條件,一是所有的葉子節點屬於同一類別,二是所有的備選屬性已經選完。當達不到結束條件時,我們就會選擇一個最佳的屬性來進行構建。

2.例子:

幻燈片10.jpg

幻燈片11.jpg

幻燈片12.jpg

幻燈片13.jpg

由於之前的最優節點都是想出來的,因此就會遇到另外的問題,“如何去選擇最優節點?”和“選擇節點時遇到連續性資料時,如何處理?”

幻燈片14.jpg

3.如何去選擇最優節點:

接下來,我們攻克一下這些問題。首先引入一個概念—資訊熵。它是一個物理概念,主要描述資訊的混亂程度,熵越大,資訊越混亂,它的公式如下圖所示。

幻燈片15.jpg

下面是資訊熵的一些特性:

幻燈片16.jpg

在構建決策樹時,我們會選擇資訊熵的一個差值來進行構建,我們來具體看一下例子:

幻燈片17.jpg

在上圖的例子中,我們有14個樣本,5個是“No”,9個是“Yes”,屬性有天氣、溫度、溼度、是否颳風。通過這四個維度,我們決定要不要去打網球。

選擇第一個節點的時候,我們有四個備選方案:

幻燈片18.jpg

到底如何選取最優屬性呢?我們可以先計算一下原始的資訊熵,在原始資料裡面有14個樣本,我們套進公式得出,原始的資訊熵是0.94。

幻燈片19.jpg

對於第一個備選項天氣,我們可以分為三個值(晴天、多雲、下雨):

幻燈片20.jpg

得到天氣各自熵的值之後,我們再通過各自熵的值乘以它發生的概率。按照天氣屬性我們得出熵的值是0.693:

幻燈片21.jpg

同理,我們可以依次地計算溫度、溼度、颳風的資訊增益:

幻燈片22.jpg

上圖的值是說我們之前父節點的資訊增益,5次不打球、9次打球的值減去按條件得出的資訊增益,我們會發現,其實對於天氣而言,它的資訊增益是最大的,我們就會選擇天氣作為最佳的分裂節點。

其次,溼度的計算方式,就是我們之前講的得到它的一個資訊增益率,然後去挑選哪個是它的最優節點:

幻燈片23.jpg

經過上面這些比較簡單的構建方法,我們就能得到最終的決策樹:

幻燈片24.jpg

五.建立決策樹後的思考

在構建完這棵決策樹之後,事情並沒有結束,大家可以思考一下,在建模型的時候,我們總是希望它的準確率越高越好,但這些是不是我們要的一個結果?

1.在機器學習中,有一個詞叫做“過擬合”。它表示我們的模型在訓練資料時表現地很棒,但在面臨外部資料的時候,它又顯得不堪一擊,我們一起來看下圖:

幻燈片25.jpg

圖左是訓練資料的一個分佈,理想狀態下圖右是我們要得到的一個模型,但機器卻不這樣認為,機器覺得畫個貓更適合,新來的資料通過這隻貓會劃分什麼結果,我們不知道,這叫做Overfitting,就是過擬合。

2.決策樹在訓練集當中,的確有非常好的分類能力,但它對未知的測試資料而言,不是特別適應,產生過擬合現象,這時我們就需要剪枝。

幻燈片26.jpg

決策樹分為預剪枝和後剪枝。預剪枝就是通過人為的知識,確定節點樣本數目以及樹的高度和深度等,操作起來非常方便。但在實際應用中,我們會選擇後剪枝。

決策樹的剪枝通常會做以下這幾個點:

幻燈片27.jpg

我們比較常用的是悲觀錯誤剪枝和代價複雜度剪枝。悲觀錯誤剪枝,假設說決策樹的精度在剪枝的前後並無變化,則進行剪枝,精度不等於錯誤度,如果說決策樹剪枝後的誤差小於剪枝前精度的上限,效果性是一致的,就進行剪枝。我們認為數越大越容易過擬合,代價複雜度剪枝融合了錯誤率和數的大小,形成新的值平衡兩個因數,然後選擇比較大的,剪枝處理掉。

六.決策樹+

1.決策樹差異:

構建一棵樹的步驟我們已經清晰,上面所講的方法比較傳統,我們稱之為ID3,除此之外還有其它的一些方法,我們來比較一下:

幻燈片28.jpg

在ID3中,我們使用的是資訊增益來進行判斷,資訊增益是父節點的熵減去子節點的熵的一個最大值。一個ID對應唯一的一個類,這樣的話,它的資訊增益值是最大的,它優先選擇ID作為它分裂的節點,所以,我們的樹只有兩層,一層是判斷ID,,一層是判定分類,並沒有什麼意義,人們就會開發出新演算法來解決這些問題。

第一個新演算法是C4.5,它不再使用資訊增益的差值,而是使用資訊增益率,資訊增益率是子節點的熵除以父節點的熵,就可以很好地避免ID的問題。同時C4.5也可以處理連續性資料和缺失性資料,達到三贏的效果,其次C4.5可以解決迴歸問題,通過估算某一個具體的值。對於大資料而言,計算熵會涉及取對數的問題,速度並不是特別好。

人們又開發了一個新的演算法,叫做CART,它使用基尼係數去代表資訊熵,它不僅可以很好地去表示資訊的存進度,而且拋棄了用對數計算,速度快、更靠譜。二叉樹的處理避免了樹的碎片化。

2.例子:

下面我們來看例子,加深一下理解。

幻燈片29.jpg

這個資料集叫做Iris資料集,在入門學習階段是一個非常常用的分類實驗資料集,中文名叫做鳶尾花卉資料集,屬於多重分類,包括150個樣本,分為3類,每一列的花50個資料,每個資料包含4個屬性,去預測鳶尾花屬於哪一種。

下圖是具體演示過程:

幻燈片30.jpg

下面這張圖就是最後決策樹的一個值,我們簡單看一下:

幻燈片31.jpg

在我們實際應用中,比較常用的其實是隨機森林,它速度快、不易過擬合。之後決策樹還發展出GBDT梯度下降樹,融合了“森林”的思想,增強錯誤樣本的權重,它可以做特徵處理。

在直播最後,黃楷老師還針對大家的提問進行了耐心講解,我們一起來看一下:

1.自己動手實現這個計算過程,還是自己呼叫內建函式?

黃老師:我建議初學者自己先動手寫一下整個計算過程,調包的話,工作中可以使用,但並不適合加深學習印象。

2.決策樹要大量數學公式嗎?

黃老師:決策樹的數學公式主要體現在節點計算,包括資訊增益怎麼計算和剪枝理論,公式不大多,剛開始做的時候,可以先拋棄剪枝部分,只計算它的分裂節點、資訊熵,這樣的話,數學公式就不是特別多。

3.決策樹的應用場景?

黃老師:其實在工作當中,我們已經很少單純地只使用決策樹,通常會使用隨機森林和其它的一些演算法。在資料展現方面,決策樹會給人非常直觀的理解,有著獨一無二的優勢。

以上六部分就是本次線上直播的主要內容,想了解更多更詳細內容的小夥伴們,可以關注服務號:FMI飛馬網,點選選單欄飛馬直播,即可進行學習。

服務號.jpg


相關文章