機器學習決策樹的分裂究竟是什麼?這篇文章講明白了!


做者 | Prashant Gupta
node

譯者 | AI100(rgznai100)web


在實際生活中,樹的類好比影隨形。事實證實,樹形結構對於機器學習領域一樣有着普遍的影響,特別是對分類和迴歸兩大任務來講。算法


在決策分析中,決策樹能夠很是清晰地呈現決策的過程和結果。「樹」如其名,決策樹所用的正是一個樹形的決策模型。數據挖掘領域常常會用決策樹來搜尋給定問題的解決策略,機器學習領域一樣會普遍用到這一方法。這將會是這篇博客的主題。機器學習


算法如何能被表示成樹形?


對於這一點,咱們來看一個基本的例子:用泰坦尼克號的數據集每位乘客的信息來預測他可否倖存下來。接下來這個模型,選取了數據集內的3項特徵(features)/ 屬性(attributes)/ 列(columns):性別、年齡、sibsp(Sibling及Spouse:表示隨行的親屬數量)。函數

決策樹自上而下進行繪製,頂部節點被稱爲根節點。如上圖所示:黑色加粗文字表明瞭條件(condition) / 內部節點(internal node),分支(branches)/ 邊界(edges)基於這些節點分裂而出。再也不分裂的節點就是計算出來的決策 / 葉節點。在本例中,乘客的倖存或遇難,分別對應於綠色和紅色的葉節點。
性能


儘管真實的數據集將會有着更多的特徵,前面的樹形圖僅能算做某顆大樹的部分分支,但你沒法否定這一算法的簡潔性。特徵的重要性一目瞭然,數據間的關係也一眼就能看清。這裏的方法一般被稱爲從數據中構建決策樹(learning decision tree from data),上面的樹形圖也被稱做分類樹(Classification tree),由於算法在這裏的目標是把乘客分爲倖存或遇難這兩類。迴歸樹(Regression trees)也是一樣的方式進行呈現,只是它們所預測的是連續的數值,好比房價。一般來講,決策樹算法指的是CART,即分類迴歸樹(Classification And Regression Tree)。學習


那麼,決策樹背後機制究竟是什麼?在造成決策樹的過程當中,分裂涉及到的問題是選擇哪一個特徵和分裂的條件是什麼,同時還要知道什麼時候終止分裂。因爲樹的生成相對比較武斷,你須要對其進行修剪,才能讓它看起來更好。讓咱們先來看一個比較經常使用的分裂方法。測試


遞歸二元分裂

在遞歸二元分裂(Recursive Binary Splitting)中,全部的特徵都會被考慮,各類不一樣的分裂方式都將被嘗試,並使用成本函數(cost function)來評估每種分裂方式的優劣。成本最優(最低)的方法將被選用來進行分裂。
優化


之前面泰坦尼克號數據集的分類樹爲例:第一次分裂或在根節點時,全部的屬性/特徵都會歸入進來考慮,訓練數據基於這一點被分紅不一樣的組。咱們共有3個特徵,所以會有3個待定的分裂。然後,咱們用一個函數來計算每種分裂所消耗的成本。算法自動選擇損失最小的那一個,具體到本例中就是乘客的性別。這個算法本質上是遞歸的,由於每次分裂所造成的數據組都能以一樣的方式再次進行劃分。因爲這一步驟,該算法也被稱爲是貪心算法,由於咱們極度渴望下降損失。這也使得根節點成爲最好的預測器 / 分類點。spa


分裂成本


讓咱們進一步討論用於分類和迴歸的成本函數。在這兩種狀況下,成本函數都在試圖尋找分裂後結構類似程度最高的那種方式。其中的意義是,咱們能夠更加確信測試數據將會跟隨哪一個路徑。


好比預測房價:決策樹開始分裂時須要考慮訓練數據的全部特徵;對於訓練數據的特定分組,其輸入響應的均值會被做爲該組的預測值。上述函數會被用在全部的數據點,用以計算全部可能分裂的成本。損失最低的分裂方式將被篩選出來。另外一種成本函數涉及到約化和標準差,更多信息可參考這裏:http://www.saedsayad.com/decision_tree_reg.htm。



爲評估某個分裂方式的優劣,咱們用Gini分數來衡量訓練數據分裂後的混亂程度。其中,pk表示特定分組中相同輸入類別所佔的比例。當某一數據組的全部輸入都來自同一類別時,咱們就獲得了一個完美分類,此時的pk值不是1就是0,而G一定爲0。但若是某個數據組中兩個類別的數據各佔一半,這就發生了最壞的狀況,此時二元分類的pk=0.5, G=0.5。


什麼時候中止分裂?


接下來你可能會問,決策樹什麼時候中止分裂?因爲一個問題一般有着大量的相關特徵,進而生成大量的分裂,造成一個巨大的樹形圖。如此複雜的樹,就容易出現過擬合。所以,咱們有必要知道什麼時候來中止分裂。


一種方法是在每一個葉節點上設置訓練輸入量的最小閾值。好比,咱們能夠把每一個葉節點設置成最少要有10位乘客的數據,忽略掉那些乘客數量少於10的葉節點。另外一種方法是設定出模型的最大深度。決策樹最大深度指的是從根節點到葉節點的最長路徑所對應的分裂長度。


修剪


決策樹的性能可經過修剪來進一步提高,這就涉及到移除那些特徵並不重要的分支。經過這種方式,咱們下降了決策樹的複雜性,也就是經過下降過擬合程度來提高它的預測能力。


修剪既可從根節點開始,又可從葉節點開始。最簡單的辦法是從葉節點開始,並移除全部使用該葉節點主分類的節點,若是該操做不會削弱決策樹的準確度,這一修剪就可被執行。這一方法被稱爲減小錯誤修剪(reduced error pruning)。你還能使用其它更爲成熟的修剪方法,好比成本複雜修剪(cost complexity pruning),它用一個學習參數來衡量當前節點的子樹大小,並以此來決定是否保留它。這一方法也被稱做最弱鏈接修剪(weakest link pruning)。


分類迴歸樹優勢


  • 易於理解、闡釋,易於可視化。

  • 決策樹潛在進行的是變量篩選(variable screening)或特徵選取(feature selection)。

  • 可以處理數值與標註這兩類數據,並能處理多輸出問題。

  • 對用戶而言,決策樹僅需相對較少的數據預處理

  • 參數間的非線性關係不會影響決策樹性能。


分類迴歸樹缺點


  • 決策樹容易創造出過於複雜的樹,導致數據泛化不夠。這就是所謂的過擬合(overfitting)。

  • 決策樹不夠穩定,由於數據的微小變化可能會生成一個徹底不一樣的樹形圖。這被稱爲變異(variance),須要採起辦法進行優化。

  • 貪心算法沒法保證所生成的決策樹全局最優。這可經過訓練多顆樹來加以緩解,它們的特徵和樣本可經過重置隨機取樣來得到。

  • 若是某些類別的權重過大,決策樹就會生成誤差樹(biased trees)。所以,在用數據生成決策樹前,要注意平衡數據集的特徵。


關於決策樹的這些概念都很是基礎。目前,實現該算法的一個很是流行的庫是Scikit-learn。它擁有很是好的API,只須要幾行的Python代碼,你就能很方便地構建出模型。


原文連接:https://medium.com/towards-data-science/decision-trees-in-machine-learning-641b9c4e8052

相關文章
相關標籤/搜索