機器學習算法原理系列篇13: 決策樹和決策樹不同算法區別 (decision tree)

 

 

決策樹算法,或者統稱Classification And Regression Tree (CART),是在數據挖掘中常用的機器學習算法。決策樹也是一種非常直觀形象和易於理解的算法,總的來說是通過數學方法不斷區分數據的迭代方法。決策樹是一種非參數的監督學習方法,因爲每一步的決策算法都是基於所有數據。決策樹算法也是許多更加複雜的基礎算法的基礎,理解決策樹算法有助於理解其他更加複雜的算法。

 

決策樹是一個樹狀的圖譜,每一個結點處是挑選某個特徵維度和提問的地方,每一條邊代表了對節點問題的回答。決策樹的最底部的葉子(即不再有子節點的根節點)代表了決策樹的一個最終判斷或者分類結果。決策樹的最終結果是非線性的,而且是由許多分段函數組成的非線性分界面。

 

 

 

上圖是一個根據天氣等情況從而決定是否外出打網球的簡單決策樹。決策樹的決策流程看起來合情合理,但是實際上,這個決策結果是基於很多歷史數據得到的。比如,我們跟蹤網球愛好者的外出打球經歷,並且記錄每一天的天氣因素。有了天氣因素(特徵變量X)和是否外出記錄(目標變量Y),再依據決策樹算法,可以獲得上訴的決策流程。從這個例子,我們可以也看出決策樹具有直觀和可解釋性強的顯著特點。

 

 

 

決策樹實現的算法本質上是從上到小的貪婪算法(greedy algorithm),即每一步得到的是局部最優解。通常的做法是,在每一個節點處(第一個節點即爲根節點),根據到達該節點處的所有訓練樣本,選擇最好的特徵變量作爲該節點的判斷依據。根據特徵變量不同的取值獲得新的子節點。然後在每個子節點重複這一過程。這個過程一直持續,直到訓練樣本被完美的分類(即到達該節點處的所有樣本具有同樣的標籤)或者所有的維度已經被用完。

 

具體的決策樹算法,按提出的時間早晚主要有ID3, C4.5,CART幾種。每一種算法的在具體實現細節上都有所改進。在ID3 算法中,每個節點選擇最好的特徵依據熵增益統計方法 (Information Gain)。在明白熵增益之前,首先我們要明白熵(Entropy)的定義。如果隨機變量Y取值有限,比如總共c個分類,並且概率分佈如下:

 

那麼Y的熵計算方法如下:

 

熵的概念在熱力學上用來表示系統的混亂程度,熵的值越大表示系統越無序,反之系統越有序。在信息理論中,熵用來表示需要多少比特來表徵系統所包含的信息量,熵越大代表需要的比特越多。以二分類問題爲例,假設正樣本的概率爲p,那麼下圖代表了p從0到1 的變化範圍中,系統的熵值大小。可見,正樣本概率爲0.5時候所對應的熵值越大,當概率爲0或者1時候熵值越小。

 

 

 

由此可見,決策樹算法要解決的問題就是把分類問題從無序轉爲有序,把目標變量熵值從大到小的降低過程。在任意一個節點處,ID3算法可以算出該節點的熵值H(Y),然後嘗試不同的特徵變量。對於某一個特徵變量X,假設其取值有n個,那麼該節點處的數據會被對應劃分爲n份。對於每一份新數據,ID3根據對應的目標變量取值算出熵 H(Y|X=xi)。每一份新數據的熵全部加起來,就是在選取某一個特徵變量X後系統的新的熵值。那麼在某一個特徵變量X的選取下,系統的熵增益爲:

 

 

 

遍歷所有的特徵變量,熵增益最大的變量即被ID3算法選爲當前節點處的判斷依據。

 

上訴ID3算法的思路簡單明瞭,但是算法會傾向於選擇取值特別多的特徵變量,從而容易引起過擬合。爲了解決這個問題,C4.5算法採用信息增益比的方式對分支過多的特徵變量進行處罰。信息增益比的計算方法爲下式:

 

其中H(X)是根據X特徵變量本身的分佈計算得到的X本身的熵,如果X的分支比較多,則H(X) 偏大,從而起到懲罰的作用。

 

CART(Classification and Regression Tree)算法相比之前兩種算法有兩點不同之處。一是所有節點處均採用二叉劃分,避免特徵變量多個取值造成的多叉樹。二叉樹不容易產生數據碎片,精度往往高於多叉樹。二是使用Gini係數來測量當前特徵帶來的數據不純度減少。Gini係數計算自變量Y的不純度如下所示:

 

以二分類問題爲例,如果當前節點的Y=1的概率爲1,Y=0的概率爲0, 則Gini係數爲0,此時節點處對應的不純度最低。在任意節點選取特徵變量爲判讀依據時候,需要首先計算出每個分支的Gini係數,然後按照每個分支數據量加權平均。平均Gini係數最小的特徵作爲該節點的判讀依據。以此類推,從而決定在每一個節點處採用哪一個自變量作爲判斷依據。

 

CART也可以用來處理目標變量爲連續值的迴歸問題。在迴歸問題中的每一個節點處,用來選擇自變量的指標是最小平方殘差(Mean squared error)或者最小絕對殘差(Mean absolute error)。在二叉樹的根節點,所有數據的平均值作爲所有到達該節點的預測值。因此二叉樹處理的迴歸問題得到的答案其實是分段線性函數,類似下圖所示。

 

 

 

更多有趣和專業的人工智能相關文章,微信搜索  : robot-learner , 或掃碼

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章