[原]【機器學習基礎】決策樹算法
引言
- 把g看做是同等地位,通過投票或者平均的方式將它們合起來,稱為Bagging
- g是不平等的,有好有壞,一個可行的做法是把g當成是特征的轉換,然后丟進線性模型訓練就可以了,這稱為AdaBoost
- 如果是不同的條件下,使用不同的g,那么我們仍然可以將g當做是特征轉換,接下來使用一個非線性模型來得到最終的模型參數,這就是該文要介紹的決策樹算法
1. 決策樹的表達式
決策樹的表示方式可以有兩種形式。
第一種是從路徑的角度(Path View),將每個從根到葉子的路徑作為一個假設g,通過不同的條件組合得到最后的G(X)。
![[原]【機器學習基礎】決策樹算法](https://simg.open-open.com/show/141d55359ed65f6fd939cd189c74b742.jpg)
第二種是從遞歸的角度(Recursive View),父樹是由子樹遞歸定義的tree=(root,sub-trees)。
![[原]【機器學習基礎】決策樹算法](https://simg.open-open.com/show/9e2aabe2b90ec25986ac778d48ba32c0.jpg)
2. CART決策樹算法
這里我們討論的決策樹算法以CART算法為例。
2.1 基本流程
- 從數據中看看如何做分支(branching criteria)
- 根據分支將數據分成幾塊
- 根據不同的數據學習子樹
- 得到最終的決策樹
所以,上面進行決策樹學習的過程中需要考慮4個方面,分別是:分支的數量(number of branches)、分支的判斷條件(branching criteria)、終止的條件(termination criteria)、基本的假設(base hypothesis)。
2.2 CART算法
分類回歸樹(CART,Classification And Regression Tree)算法采用一種二分遞歸分割的技術,將當前的樣本集分為兩個子樣本集,使得生成的的每個非葉子節點都有兩個分支。
CART根據不同的條件,對數據進行切分,到達葉子節點時,根據剩下的數據進行預測,輸出一個常數。
![[原]【機器學習基礎】決策樹算法](https://simg.open-open.com/show/28fa488a014b77b7a374fc9265193fb2.jpg)
2.3 純度
CART算法中每個節點(看做是一個決策樁decision stump)對數據進行切分,如果分出來的數據的y都很接近(回歸問題)或者都一樣(分類問題),那么我們說這樣的數據是“純的”,這樣用標量對數據進行預測可以得到比較小的誤差。
![[原]【機器學習基礎】決策樹算法](https://simg.open-open.com/show/9c31d846e6e679469e9d7609556a888e.jpg)
我們通過上面的公式,來計算對于每一個節點的決策樁來說,分出來的兩份數據的純度是怎樣的。該公式通過計算數據集Di(i=1 or 2)的純度并根據數據集的數量對其進行加權,其加權的意義是 如果數據集的數量比較大的話,那個純度對其比較重要,反之,就不那么重要。
CART通過分出的兩部分數據綜合起來的純度對決策樁進行選擇,選擇“最純”的分割方式作為當前的分支。
2.4 計算純度的函數
我們可以將分割出來的數據和回傳的常數的誤差作為評價純度的方法,利用數據的y和回傳的y_ba的均方誤差來評價回歸問題的純度;利用0/1誤差函數來評價分類問題的純度。
![[原]【機器學習基礎】決策樹算法](https://simg.open-open.com/show/64189df0b737c8eaced70fad002ce41a.jpg)
如果是分類問題,我們還可以使用一個別的方法。通過基尼不純度來度量分類問題的純度問題。
![[原]【機器學習基礎】決策樹算法](https://simg.open-open.com/show/e2ae4079236722e42a3eb405eb6bf70b.jpg)
2.5 終止條件
CART中有兩種被迫終止的情況,分別是:當yn都一樣,這時不純度為0,于是可以得到gt(x)=yn;另一種情況是xn都一樣,就沒有繼續分割的可能了。CART樹長到被迫停下來的情況,稱為完全長成的樹(fully-grown tree)。
下面是CART算法完整流程:
![[原]【機器學習基礎】決策樹算法](https://simg.open-open.com/show/a77d2f06b4fd7ceaa3073ef23502115e.jpg)
CART剪枝算法
一棵完全長成的樹的訓練誤差為0Ein(G)=0,這會有過擬合的危險,在每一個節點上的數據越來越少,導致擬合到這些節點的數據可能是過擬合的。
所以,我們需要一個正則化的機制,來控制模型復雜度,讓模型不那么容易出現過擬合現象。
CART剪枝算法從完全生長的決策樹的底端剪去一些子樹,使決策樹變簡單,從而能夠對未知數據有更準確的預測。
![[原]【機器學習基礎】決策樹算法](https://simg.open-open.com/show/2f02bbdab94e81a8140e5397a4055144.jpg)
上圖告訴我們使用葉子的數目作為正則項(regularizer),最終得到一個正則化的決策樹。
關于剪枝的具體做法時:
- 首先得到完全長成的樹作為G(0);
- 然后試圖摘掉一片葉子,將所有摘掉一片葉子后的樹計算Ein,將最小的那棵摘掉一片葉子的數作為G(1);
- 如此這般,得到摘掉兩片葉子的最優樹G(2),這樣不斷剪枝,直到根結點,形成一個子樹序列;
- 最終對這個子樹序列使用argmin Ein(G)+λΩ(G)來得到最后的輸出。
參考資料
機器學習技法課程,林軒田,臺灣大學
CART: 分類與回歸樹轉載請注明作者Jason Ding及其出處 GitCafe博客主頁(http://jasonding1354.gitcafe.io/) Github博客主頁(http://jasonding1354.github.io/) CSDN博客(http://blog.csdn.net/jasonding1354) 簡書主頁(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles) Google搜索jasonding1354進入我的博客主頁