決策樹模型淺嘗輒止

如今神經網絡大行其道,大家都對神經網絡過分熱心,反而冷落了決策樹模型的研究,但熟悉建模的朋友可能都瞭解,實際上決策樹模型在工業界承擔着中流砥柱的作用。很多棘手的問題,往往使用決策樹模型能夠達到很好的效果

筆者最近一段時間,對決策樹模型的使用有了一些體會,遂記錄下來和大家分享

但相信決策樹這個話題是老生常談了,所以下面就說說一些新鮮的玩意

1.決策樹模型的現狀

目前決策樹領域,已由原本單一的決策樹模型演變成了級聯學習樹、隨機森林模型的天下

主要使用的就是Boosting和Bagging的思想

Boosting和Bagging方法本質上都是組合學習,增強了樹模型的準確率和魯棒性

如上圖所示:

Boosting側重於縱向組合,代表模型爲Xgboost

Bagging側重於橫向組合,代表模型爲Random Forest

姑且我們就叫這些樹模型統一爲集成決策樹模型吧

但是不管樹模型如何組合,它的本質沒有變,最基礎的單元還是cart決策樹

(你也可以說還有C4.5等,不過我覺得這不是重點,它們已經不是最優的基礎單元,該退出歷史舞臺了)

 

2.決策樹模型的優勢

1.相比深度學習算法

實現相對簡單,效率更高,訓練速度快,訓練週期短,能更充分的利用機器資源

爲什麼說決策樹模型的效率要高於神經網絡模型?

如上圖所示,就是一個典型的深度學習模型

1.從節點的計算量:

神經網絡模型中全連接層節點的數量都是預估的

而決策樹模型的節點則是根據信息熵或者基尼係數生成的,所以在計算規模上決策樹模型就會明顯小於神經網絡模型

2.從訓練原理上:

神經網絡模型首先會將輸入的數據進行一次激活函數的洗禮,然後再不斷調整各節點的權重(也即學習率),通過多次計算輸出的殘差得到梯度反過來去影響節點的權重,這種節點整體權重的變化,相比決策樹模型計算代價也高了n個數量級

所以,神經網絡模型所需要的計算資源相比決策樹來說就非常大了

 

2.相比其他傳統機器學習算法

再來看看另一個引人注目的機器學習算法:支持向量機 SVM

相比SVM,決策樹模型的普適性更強,爲什麼?

因爲SVM更側重於對可分割數據的分割超平面的尋找和確定,現實中各種數據混雜噪音,是否恰好就有這樣的超平面還兩說,如果沒有這樣的超平面,支持向量點的尋找就變得異常困難,尤其是數據量變大的情況下,支持向量機的計算大概率會走向崩潰

 

3.小結

我們不妨做這樣的假設對比:

如果把所有機器學習模型看作是核機器

那麼集成決策樹模型核函數可以用數學公式簡化爲:

 

神經網絡模型核函數可以簡化爲:

 

其他傳統機器學習模型的核函數可以簡化爲:

 

所以,這樣可以一目瞭然的發現,集成決策樹模型相比神經網絡計算規模小,效率高,相比其他傳統機器學習模型,模型複雜度又恰到好處,模型的表達能力強於一般模型

 

3.決策樹模型存在的問題

聊了這麼多決策樹模型的優勢,我們再來看看決策樹模型有哪些弊端?

 

1.決策樹的規模預判

我們在使用XGBoost設計和訓練一個集成決策樹模型時,通常會對下列參數給出一個經驗數值:

num_parallel_tree

num_boost_round

max_depth

但其實我們心裏也沒譜,不知道以上參數是否真的恰當,只能使用GridSearch等參數搜索工具逐步定位到最優參數範圍

以上參數代表的含義不難理解:並行樹的數量、boost次數、樹最大深度

目前爲止,決策樹規模的初始判斷除了拍腦袋定下一個經驗值,似乎也沒有更好的辦法

 

2.決策樹的訓練過程

我們知道決策樹在進行節點分裂前時,會遍歷訓練集計算一個最優分裂點,這就要求決策樹模型必須遍歷完所有訓練集,儘管這個操作可以不必完全在內存中完成(例如XGBoost的大規模訓練解決方案),但是當面對日益增長的海量數據時,這種必須遍歷完所有數據的缺陷也彰顯出來

同時,我們也會清楚的瞭解,目前的決策樹的最優權重都是基於目前的訓練集的,一旦目標數據集發生了變化,這樣的樹模型就不再適用(想想是不是距離智能還很遙遠?)

 

3.決策樹的遷移學習

我們知道神經網絡是具備遷移學習能力的,而決策樹模型則不具備這些優點,單獨將決策樹的某些層拿出來,硬塞到一個新的數據集下,非但起不到加速訓練的效果,反而破壞了模型的整體性,導致模型效果變差,所以決策樹模型幾乎無法進行遷移,只能集成學習

 

4.最新的解決方案

 

當然,對於以上問題,業界的AI專家們也沒有閒着,想盡一切辦法去讓模型變得更智能和強大,主要就是採取了分而治之的思想

 

1.決策樹的規模預判問題

首先我們來看第一個問題,決策樹規模的預判

我們在做決策樹模型的設計時,往往會面臨參數初始化的問題,很多人往往憑經驗給出一組數值後,再反覆嘗試對比各參數從而找到一組合適的數值。

但該組參數是否是最優的也無從驗證,只能是通過對照比較得到效果是已知最好的

目前有兩種策略解決該問題:

1.將決策樹看作組合優化問題,使用SAT求解器求解

這裏有一篇2020年的代表論文:Efficient Inference of Optimal Decision Trees

論文地址:http://florent.avellaneda.free.fr/dl/AAAI20.pdf

該論文的主要思想在於:分割訓練集,並簡化決策樹的分層問題,使得求解的規模變小,能夠應對更大規模的數據集

分而治之的思想在運籌問題求解中簡直是萬金油,因此該論文發表在了AAAI上

SAT求解決策樹的主要思想:決策樹的任意一次分裂都可以看作某個數據集特徵的二值化,所有特徵的二值化排列組合即可得到決策樹最終結果,根據這兩個特徵,可以實現混合整形求解的約束條件,進而使用求解器計算

筆者也對其作了復現,論文中的開源代碼地址:https://github.com/FlorentAvellaneda/InferDT

筆者復現的版本(支持CentOS7):https://github.com/showkeyjar/InferDT

 

結果發現,在處理1-4k個數量級的數據樣本時,InferDT還能遊刃有餘

一旦數據量超過了5k,InferDT運行的開始變得喫力,最終直接導致崩潰

這也是我們發現InferDT的示例中並沒有超過1w數據量的樣本

 

所以該論文方法雖然是一種顯著的進步,但還不能應用到實際場景中

 

2.使用分支定界法搜索,然後緩存搜索結果

同樣有一代表論文:Learning Optimal Decision Trees Using Caching Branch-and-Bound Search

論文地址:https://dial.uclouvain.be/pr/boreal/fr/object/boreal%3A223390/datastream/PDF_01/view

該論文的主要思想在於:將複雜難以求解的組合優化問題分解爲分段(分支定界)的組合優化問題,並緩存了計算結果,避免重複的從頭計算,加快計算速度

 

並由此設計出DL8.5算法,併兼容了sklearn

本質上也是一種分而治之的思想,和方法1有異曲同工之妙

如果大家有興趣,也可以仔細研究研究這兩篇論文

 

2.決策樹的訓練問題

目前業界大神們一直在想辦法克服決策樹訓練過程中的一些缺陷

神經網絡的解決方案:

這其中最優代表性的作品,就屬2019年誕生的 tabnet :https://github.com/dreamquark-ai/tabnet

論文地址:https://arxiv.org/pdf/1908.07442v5

tabnet號稱自己是 xgboost + 神經網絡的組合體,即具備神經網絡反向傳播的特點,又具備了集成決策樹的高效和準確

那麼tabnet如何解決決策樹訓練時必須遍歷整個訓練集的問題呢?

看到上圖中tabnet的網絡結構,是不是感覺和LSTM很類似?

我認爲實際上可以把tabnet看作一種LSTM的變體,也使用到了transformer單元,而transformer技術也是2020年度最熱門的一種深度學習技術,本質上是對輸入數據的“主成分”自動分析和提取的過程

 

要理解tabnet結構,關鍵是要理解tabnet爲何對輸入的數據進行各種transformer

我們可以從更抽象的層次去理解決策樹,決策樹本質上是在尋找數據集的橫向(特徵與特徵)聯繫和縱向(特徵自身的分佈)聯繫

所以tabnet試圖通過神經網絡模擬決策樹的抽象任務過程,從而讓神經網絡具備較好的可解釋性

 

另外還有一個筆者注意到的項目QuantumForest:https://github.com/closest-git/QuantumForest

論文地址:https://arxiv.org/pdf/2010.02921v1

QuantumForest針對決策樹訓練過程中信息熵和基尼係數的計算進行了改造,改變了一種思維方式,使用神經網絡使得樹模型具有了可微性(differentiability)

筆者理解是決策樹的輸出結果是離散的,不具備可微性,通過神經網絡將樹模型分裂點的信息熵變更爲量子狀態,使得決策樹具備了連續可微的條件

如圖所示,傳統的決策樹模型在分裂節點時,得到的是一個確定的信息增益,而在QF裏得到則是一個浮點數(量子態概率)

QF項目的思想還是挺不錯的,不過作者好像很懶,開源出來的作品工業化程度並不高,需要自己去解決易用性問題

 

3.決策樹的遷移問題

也有大神在決策樹的遷移領域放大招:

有對應的開源項目:https://github.com/atiqm/Transfer_DT

不過竟然沒人關注,貌似沒搞起來,尷尬

有興趣的同學也可以研究下,不妨也給筆者分享一下你的奇思妙想,期待你的創意

 

5.總結

總之決策樹模型領域是一個正在茁壯成長而又活力四射的領域,不斷有人在爲其發展添磚加瓦,而決策樹+集成學習+神經網絡正逐漸向我們走來,相信未來的決策樹算法會更加強大而高效。真正的可解釋性人工智能也會不斷突破現有的技術障礙和缺陷,變得更加完美。希望我們能共同挖掘和分享出決策樹的無窮魅力,謝謝閱讀!

 

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