當前位置:
首頁 > 知識 > 能否代替「決策樹演算法」?

能否代替「決策樹演算法」?

這個問題可以從幾個維度來分析。但先要說明決策樹就是決策樹,隨機森林和xgboost的性能提升主要是來自於集成學習。所以,我們擴展一下題目把對比延伸到:

單棵決策樹,如比較常見的C4.5等

以決策樹為基模型的集成學習演算法(Ensemble Tree),如隨機森林,gradient boosting,和xgboost

神經網路,包括各種深度和結構的網路

我的看法是,單棵決策樹的用途已經比較有限了,已經基本被集成決策樹代替。而決策樹集成模型和神經網路有不同的使用場景,不存在替代一說。給出一個較為通用的看法僅供參考:

如果不強調絕對的解釋度,盡量避免單棵決策樹,用集成樹模型

在集成數模型中,優先推薦使用xgboost

在中小數據集上,優先選擇集成樹模型。大數據集上推薦神經網路

在需要模型解釋度的項目上,優先使用樹模型

在項目時間較短的項目上,如果數據質量低(大量缺失值、噪音等),優先使用集成樹模型

在硬體條件有限及機器學習知識有限的前提下,優先選擇樹模型

對於結構化較高的數據,尤其是語音、圖片、語言,優先使用神經網路模型(往往其數據量也較大)

用個不恰當的比喻,集成樹模型就像Python,而神經網路就像C++。前者簡單粗暴效果好,容易上手優點多,後者比較精貴更為複雜但嚴肅項目上潛力很大。如果你願意好好學習數據結構、內存分配和要命的指針,C++幾乎無所不能。但如果你只打算寫個簡單的網路爬蟲,Python十行就可以搞定。


1. 單棵決策樹 vs. 集成學習

決策樹是1963年被 Morgan和Sonquist提出的[5],通過類樹的結構實現分類和回歸。我們一般認為決策樹模型:

易於使用和解釋[6],單棵的決策樹很容易進行可視化和規則提取

可以自動實現特徵選擇[3] - 通過計算節點分裂時"不純度的降低"(impurity reduction) 和剪枝(pruning)

預測能力有限,無法和強監督學習模型相提並論[6]

穩定性低(stability)方差高(variance),數據擾動很容易造成決策樹表現有很大的變化[1, 6]

隨機森林是Breiman提出的[10],模型使用集成的學習來降低單棵決策樹中的高方差(high variance)從而提高了整體的預測能力。而gradient boosting machine(GBM)[9]和xgboost[8]分別是在2001年和2014年提出的。鑒於兩者比較相似放在一起討論,這兩個模型:

和隨機森林的並行學習(parallel learning)不同,使用串列學習(sequential learning)不斷地提高的模型的表現能力降低偏差(bias)

在進行預測分類的時候非常快且對於儲存空間的要求低[3]

boosting這個學習方法可以看成一種L1正則化來防止過擬合,因此模型不容易擬合[3]。Python工具庫scikit-learn也提到過其不容易過擬合[2],用較多的基學習器也不礙事

單純對比GBM和xgboost的話,它們的分類性能接近,xgboost有一個額外的正則項進一步降低過擬合。而xgboost的速度更快[4],往往更適合較大的數據集

根據各種各樣實踐和研究來看,隨機森林、GBM和xgboost都明顯優於普通的單棵決策樹,所以從這個角度來看,單棵決策樹可以被淘汰了。

而單棵決策樹最大的護城河在於,它可以被很輕鬆的可視化甚至是提取規則分類規則。而集成學習在這一點是很難做到的[34]。而可解釋化對於工業界很多時候是很重要的,從這個角度來看,決策樹還有一點點立身之本。但這個使用的前提是,一定一定要確定決策樹的表現不錯(比如查看交叉驗證的結果)再來可視化和規則提取,不然很有可能提取到無效甚至是錯誤的規則

隨機森林的作者曾經實現過可視化,但遠不如決策樹直觀,xgboost支持單棵樹的可視化。從某個角度上來看,或許對xgboost中較為可靠和穩定的單棵樹進行可視化可以徹底淘汰決策樹


2. 集成樹模型 vs. 神經網路

神經網路已經是我們很熟悉的演算法了,最大能力就是從複雜的數據中進行特徵表示,也被認為可以近似表示任何函數(假設有特定多的node) [3],現在如此火爆的深度學習就是深度較大的神經網路的特定叫法。神經網路和集成樹模型在以下幾點上有較大的不同:

從數據量上來討論:神經網路往往需要較大的數量,而小數據集上樹模型有明顯的優勢。常常有人問,多小才算小?這也同時需要取決於特徵的數量。但一般來說,幾百幾十個數據的情況下神經網路很難表現良好。

從特徵工程角度看:神經網路需要更苛刻的數據準備工作,而樹模型一般不需要以下步驟:(i) 缺失數據彌補(missing value imputation) (ii) 數據類型轉化(categorical to numerical):把類別數據變為數字型 (iii) 數據縮放(data scaling):把不同範圍的數據歸一到[0,1]或者投射到正態分布上 (iv) 更多的參數調整:比如初始化權重,比如選擇合適學習率等

從調參難度來看:集成樹模型遠低於神經網路。大部分的集成樹模型也僅需要:(i)基學習器數量 (ii) 考慮的特徵數 (iii) 最大深度 等。神經網路的調參慘劇已經沒什麼好說的,這點上和樹模型差距非常大。

從模型解釋度來看:集成樹模型的解釋度一般更高,比如可以自動生成特徵重要性(feature importance)。神經網路的特徵雖然也可以一定程度上進行分析,但不大直觀。再早年間,在神經網路上使用包裹式(wrapper)方法,每次加1或者減1個特徵進行特徵排序也曾存在過,遠不如集成樹模型的嵌入式(embedded)特徵選擇來的方便和直觀。

從模型預測能力來看:拋去調參的難度差異不提,大中型數據上的表現較為接近。隨著數據量增大,神經網路的潛力越來越大

從項目周期來看:因為在各個方面神經網路都需要更多的時間,因此其需要的總時間往往遠大於決策樹集成,更別提還需要很好的硬體支持,如GPU。

一般來說,在小數據量多特徵下,集成的樹模型往往優於神經網路隨著數據量增大,兩者表現趨於接近,隨著數據量繼續上升,神經網路的優勢會逐步體現。這個跟很多答主提到的一樣:隨著數據量上升,對模型能力的要求增加而過擬合的風險降低,神經網路的優勢終於有了用武之地而集成學習的優勢降低。


3. 總結

綜上來看,大部分項目建議使用集成決策樹,首推xgboost,速度快效果好用時少。特定的複雜且數據量大的項目,建議還是老老實實的為神經網路調參,拿出debug C++ pointer的精神來。

所以暫時來看,已經被替代的是單棵決策樹,而集成決策樹還非常重要甚至變得更為重要。在短時間內,看不到集成決策樹模型被替代的可能 ?????

* 另推薦一篇有趣但有點過時的文章[7],其中對比了各種各樣的演算法並給出作者的分析。

原文:https://weibo.com/ttarticle/p/show?id=2309404213436883035081#_0

推薦《人工智慧系列課》


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI講堂 的精彩文章:

谷歌宣布TPU全面開放,每小時僅需6.5美元!
2018MIT課程:通用人工智慧

TAG:AI講堂 |