這個問題可以從幾個維度來分析。但先要說明決策樹就是決策樹,隨機森林和xgboost的效能提公升主要是來自於整合學習。所以,我們擴充套件一下題目把對比延伸到:
單棵決策樹,如比較常見的c4.5等
以決策樹為基模型的整合學習演算法(ensemble tree),如隨機森林,gradient boosting,和xgboost
神經網路,包括各種深度和結構的網路
我的看法是,單棵決策樹的用途已經比較有限了,已經基本被整合決策樹代替。而決策樹整合模型和神經網路有不同的使用場景,不存在替代一說。給出乙個較為通用的看法僅供參考:
如果不強調絕對的解釋度,盡量避免單棵決策樹,用整合樹模型
在整合數模型中,優先推薦使用xgboost
在中小資料集上,優先選擇整合樹模型。大資料集上推薦神經網路
在需要模型解釋度的專案上,優先使用樹模型
在專案時間較短的專案上,如果資料質量低(大量缺失值、噪音等),優先使用整合樹模型
在硬體條件有限及機器學習知識有限的前提下,優先選擇樹模型
對於結構化較高的資料,尤其是語音、、語言,優先使用神經網路模型(往往其資料量也較大)
用個不恰當的比喻,整合樹模型就像python,而神經網路就像c++。前者簡單粗暴效果好,容易上手優點多,後者比較精貴更為複雜但嚴肅專案上潛力很大。如果你願意好好學習資料結構、記憶體分配和要命的指標,c++幾乎無所不能。但如果你只打算寫個簡單的網路爬蟲,python十行就可以搞定。
單棵決策樹 vs. 整合學習
決策樹是2023年被 morgan和sonquist提出的[5],通過類樹的結構實現分類和回歸。我們一般認為決策樹模型:
易於使用和解釋[6],單棵的決策樹很容易進行視覺化和規則提取
可以自動實現特徵選擇[3] - 通過計算節點**時"不純度的降低"(impurity reduction) 和剪枝(pruning)
**能力有限,無法和強監督學習模型相提並論[6]
穩定性低(stability)方差高(variance),資料擾動很容易造成決策樹表現有很大的變化[1, 6]
隨機森林是breiman提出的[10],模型使用整合的學習來降低單棵決策樹中的高方差(high variance)從而提高了整體的**能力。而gradient boosting machine(gbm) [9]和xgboost [8]分別是在2023年和2023年提出的。鑑於兩者比較相似放在一起討論,這兩個模型:
和隨機森林的並行學習(parallel learning)不同,使用序列學習(sequential learning)不斷地提高的模型的表現能力降低偏差(bias)
在進行**分類的時候非常快且對於儲存空間的要求低[3]
boosting這個學習方法可以看成一種l1正則化來防止過擬合,因此模型不容易擬合[3]。python工具庫scikit-learn也提到過其不容易過擬合[2],用較多的基學習器也不礙事
單純對比gbm和xgboost的話,它們的分類效能接近,xgboost有乙個額外的正則項進一步降低過擬合。而xgboost的速度更快[4],往往更適合較大的資料集
根據各種各樣實踐和研究來看,隨機森林、gbm和xgboost都明顯優於普通的單棵決策樹,所以從這個角度來看,單棵決策樹可以被淘汰了。
而單棵決策樹最大的護城河在於,它可以被很輕鬆的視覺化甚至是提取規則分類規則。而整合學習在這一點是很難做到的[34]。而可解釋化對於工業界很多時候是很重要的,從這個角度來看,決策樹還有一點點立身之本。但這個使用的前提是,一定一定要確定決策樹的表現不錯(比如檢視交叉驗證的結果)再來視覺化和規則提取,不然很有可能提取到無效甚至是錯誤的規則。
隨機森林的作者曾經實現過視覺化,但遠不如決策樹直觀,xgboost支援單棵樹的視覺化。從某個角度上來看,或許對xgboost中較為可靠和穩定的單棵樹進行視覺化可以徹底淘汰決策樹。
整合樹模型 vs. 神經網路
神經網路已經是我們很熟悉的演算法了,最大能力就是從複雜的資料中進行特徵表示,也被認為可以近似表示任何函式(假設有特定多的node) [3],現在如此火爆的深度學習就是深度較大的神經網路的特定叫法。神經網路和整合樹模型在以下幾點上有較大的不同:
從資料量上來討論:神經網路往往需要較大的數量,而小資料集上樹模型有明顯的優勢。常常有人問,多小才算小?這也同時需要取決於特徵的數量。但一般來說,幾百幾十個資料的情況下神經網路很難表現良好。
從特徵工程角度看:神經網路需要更苛刻的資料準備工作,而樹模型一般不需要以下步驟:(i) 缺失資料彌補(missing value imputation) (ii) 資料型別轉化(categorical to numerical):把類別資料變為數字型 (iii) 資料縮放(data scaling):把不同範圍的資料歸一到[0,1]或者投射到正態分佈上 (iv) 更多的引數調整:比如初始化權重,比如選擇合適學習率等
從調參難度來看:整合樹模型遠低於神經網路。大部分的整合樹模型也僅需要:(i)基學習器數量 (ii) 考慮的特徵數 (iii) 最大深度 等。神經網路的調參慘劇已經沒什麼好說的,這點上和樹模型差距非常大。
從模型**能力來看:拋去調參的難度差異不提,大中型資料上的表現較為接近。隨著資料量增大,神經網路的潛力越來越大
一般來說,在小資料量多特徵下,整合的樹模型往往優於神經網路。隨著資料量增大,兩者表現趨於接近,隨著資料量繼續上公升,神經網路的優勢會逐步體現。這個跟很多答主提到的一樣:隨著資料量上公升,對模型能力的要求增加而過擬合的風險降低,神經網路的優勢終於有了用武之地而整合學習的優勢降低。
總結
綜上來看,大部分專案建議使用整合決策樹,首推xgboost,速度快效果好用時少。特定的複雜且資料量大的專案,建議還是老老實實的為神經網路調參,拿出debug c++ pointer的精神來。
所以暫時來看,已經被替代的是單棵決策樹,而整合決策樹還非常重要甚至變得更為重要。在短時間內,看不到整合決策樹模型被替代的可能 ʕ•ᴥ•ʔ
原文:via:全球人工智慧
end
決策樹 結構 機器學習 三 決策樹演算法
決策樹算是比較常見的資料探勘演算法了,最近也想寫點演算法的東西,就先寫個決策樹吧。決策樹是什麼,我們來 決策樹 這個詞進行分詞,那麼就會是決策 樹。大家不妨思考一下,重點是決策還是樹呢?其實啊,決策樹的關鍵點在樹上。我們平時寫 的那一串一串的if else其實就是決策樹的思想了。看下面的圖是不是覺得...
決策樹 結構 決策樹及其基本概念
決策樹主要知識 決策樹 決策樹 在分類問題中,表示基於特徵對例項進行分類的過程。決策樹可以認為是1.if then規則的集合 2.定義在特徵空間與類空間上的條件概率分布。決策樹優點 模型具有可讀性,分類速度快。決策樹學習與 過程 決策樹 分類決策樹描述對例項進行分類的樹形結構。由結點 node 節點...
決策樹 結構 通俗地說決策樹演算法(一)基礎概念介紹
決策樹算是比較常見的資料探勘演算法了,最近也想寫點演算法的東西,就先寫個決策樹吧。決策樹是什麼,我們來 決策樹 這個詞進行分詞,那麼就會是決策 樹。大家不妨思考一下,重點是決策還是樹呢?其實啊,決策樹的關鍵點在樹上。我們平時寫 的那一串一串的if else其實就是決策樹的思想了。看下面的圖是不是覺得...