大戰三回合:XGBoost、LightGBM和Catboost一決高低

2020-12-05 AI科技大本營

作者 | LAVANYA

譯者 | 陸離

責編 | Jane

【導讀】XGBoost、LightGBM 和 Catboost 是三個基於 GBDT(Gradient Boosting Decision Tree)代表性的算法實現,今天,我們將在三輪 Battle 中,根據訓練和預測的時間、預測得分和可解釋性等評測指標,讓三個算法一決高下!

一言不合就 Battle

GBDT 是機器學習中的一個非常流行並且有效的算法模型,2014 年陳天奇博士提出的 XGBoost 算法就是 GBDT 一個重要實現。但在大訓練樣本和高維度特徵的數據環境下,GBDT 算法的性能以及準確性卻面臨了極大的挑戰,隨後,2017 年 LightGBM 應勢而生,由微軟開源的一個機器學習框架;同年,俄羅斯的搜索巨頭 Yandex 開源 Catboost 框架。

XGBoost(eXtreme Gradient Boosting) 特點是計算速度快,模型表現好,可以用於分類和回歸問題中,號稱「比賽奪冠的必備殺器」。LightGBM(Light Gradient Boosting Machine)的訓練速度和效率更快、使用的內存更低、準確率更高、並且支持並行化學習與處理大規模數據。Catboost( Categorical Features+Gradient Boosting)採用的策略在降低過擬合的同時保證所有數據集都可用於學習。性能卓越、魯棒性與通用性更好、易於使用而且更實用。據其介紹 Catboost 的性能可以匹敵任何先進的機器學習算法。

三個都是基於 GBDT 最具代表性的算法,都說自己的性能表現、效率及準確率很優秀,究竟它們誰更勝一籌呢?為了 PK 這三種算法之間的高低,我們給它們安排了一場「最浪漫的 Battle」,通過三輪 Battle 讓 XGBoost、Catboost 和 LightGBM 一絕高下!

Round 1:分類模型,按照數據集Fashion MNIST把圖像分類(60000行數據,784個特徵);Round 2:回歸模型,預測紐約計程車的票價(60000行數據,7個特徵);Round 3:通過海量數據集,預測紐約計程車票價(200萬行數據,7個特徵);

Battle 規則

在每一輪 PK 中,我們都遵循以下步驟:

1、訓練 XGBoost、Catboost、LightGBM 三種算法的基準模型,每個模型使用相同的參數進行訓練;

2、使用超參數自動搜索模塊 GridSearchCV 來訓練 XGBoost、Catboost 和 LightGBM 三種算法的微調整模型;

3、衡量指標:

a.訓練和預測的時間;

b.預測得分;

c.可解釋性(包括:特徵重要性,SHAP 值,可視化樹);

PK 結果揭曉

(一)運行時間& 準確度得分

Top 1:LightGBM

Top 2:CatBoost

Top 3:XGBoost

在訓練和預測時間兩方面,LightGBM 都是明顯的獲勝者,CatBoost 則緊隨其後,而 XGBoost 的訓練時間相對更久,但預測時間與其它兩個算法的差距沒有訓練時間那麼大。

在增強樹(boosted trees)中進行訓練的時間複雜度介於(log)和(2)之間,而對於預測,時間複雜度為(log2 ),其中 = 訓練實例的數量, = 特徵數量,以及 = 決策樹的深度。

Round 1 ~ 3

(二)可解釋性

一個模型的預測得分僅反映了它的一方面,我們還想知道模型為什麼要做出這個預測的。

在這裡,我們描繪出了模型特徵的重要性和 SHAP 值,還有一個實際的決策樹,以便更準確地理解模型的預測。

(a)特徵的重要性

這三個增強模型都提供了一個 .feature_importances_ attribute 屬性,允許我們查看有哪些特徵對模型預測的影響是最大的:

Round 1 ~ 3

(b)SHAP值

另外一種方法是 SHAP 摘要圖,用來了解每個特性對模型輸出的影響分布。SHAP 值是在這些特徵之間的公平的信用分配,並且具有博弈論一致性的理論保證,這使得它們通常比整個數據集中的那些典型特徵的重要性更值得信賴。

Round 1 & 2

(c)繪製決策樹

最後,XGBoost 和 LightGBM 這兩個算法還允許我們繪製用於進行預測的實際決策樹,這對於更好地了解每個特徵對目標變量的預測能力非常的有用。而 CatBoost 沒有決策樹的繪製功能。

如果想看 CatBoost 的結果,這裡推薦給大家一個可視化工具: https://blog.csdn.net/l_xzmy/article/details/81532281

Round 1 & 2

評測總結

CatBoost

(1)CatBoost 提供了比 XGBoost 更高的準確性和和更短的訓練時間;

(2)支持即用的分類特徵,因此我們不需要對分類特徵進行預處理(例如,通過 LabelEncoding 或 OneHotEncoding)。事實上,CatBoost 的文檔明確地說明不要在預處理期間使用熱編碼,因為「這會影響訓練速度和最終的效果」;

(3)通過執行有序地增強操作,可以更好地處理過度擬合,尤其體現在小數據集上;

(4)支持即用的 GPU 訓練(只需設置參數task_type =「GPU」);

(5)可以處理缺失的值;

LightGBM

(1)LightGBM 也能提供比 XGBoost 更高的準確性和更短的訓練時間;

(2)支持並行的樹增強操作,即使在大型數據集上(相比於 XGBoost)也能提供更快的訓練速度;

(3)使用 histogram-esquealgorithm,將連續的特徵轉化為離散的特徵,從而實現了極快的訓練速度和較低的內存使用率;

(4)通過使用垂直拆分(leaf-wise split)而不是水平拆分(level-wise split)來獲得極高的準確性,這會導致非常快速的聚合現象,並在非常複雜的樹結構中能捕獲訓練數據的底層模式。可以通過使用 num_leaves 和 max_depth 這兩個超參數來控制過度擬合;

XGBoost

(1)支持並行的樹增強操作;

(2)使用規則化來遏制過度擬合;

(3)支持用戶自定義的評估指標;

(4)處理缺失的值;

(5)XGBoost 比傳統的梯度增強方法(如 AdaBoost)要快得多;

如果想深入研究這些算法,可以閱讀下面相關文章的連結:

LightGBM: 一種高效的梯度增強決策樹 https://papers.nips.cc/paper/6907-lightgbm-a-highly-efficient-gradient-boosting-decision-tree.pdf CatBoost: 支持分類特徵的梯度增強http://learningsys.org/nips17/assets/papers/paper_11.pdf XGBoost: 一個可擴展的樹增強系統 https://arxiv.org/pdf/1603.02754.pdf

重要參數解讀

下面列出的是模型中一些重要的參數,以幫助大家更好學習與使用這些算法!

Catboostn_estimators:表示用於創建樹的最大數量;learning_rate:表示學習率,用於減少梯度的級別;eval_metric:表示用於過度擬合檢測和最佳模型選擇的度量標準;depth:表示樹的深度;subsample:表示數據行的採樣率,不能在貝葉斯增強類型設置中使用;l2_leaf_reg:表示成本函數的L2規則化項的係數;random_strength:表示在選擇樹結構時用於對拆分評分的隨機量,使用此參數可以避免模型過度擬合;min_data_in_leaf:表示在一個葉子中訓練樣本的最小數量。CatBoost不會在樣本總數小於指定值的葉子中搜索新的拆分;colsample_bylevel, colsample_bytree, colsample_bynode — 分別表示各個層、各棵樹、各個節點的列採樣率;task_type:表示選擇「GPU」或「CPU」。如果數據集足夠大(從數萬個對象開始),那麼在GPU上的訓練與在CPU上的訓練相比速度會有顯著的提升,數據集越大,加速就越明顯;boosting_type:表示在默認情況下,小數據集的增強類型值設置為「Ordered」。這可以防止過度擬合,但在計算方面的成本會很高。可以嘗試將此參數的值設置為「Plain」,來提高訓練速度;rsm:對於那些具有幾百個特性的數據集,rsm參數加快了訓練的速度,通常對訓練的質量不會有影響。另外,不建議為只有少量(10-20)特徵的數據集更改rsm參數的默認值;border_count:此參數定義了每個特徵的分割數。默認情況下,如果在CPU上執行訓練,它的值設置為254,如果在GPU上執行訓練,則設置為128;

LightGBMnum_leaves:表示一棵樹中最大的葉子數量。在LightGBM中,必須將num_leaves的值設置為小於2^(max_depth),以防止過度擬合。而更高的值會得到更高的準確度,但這也可能會造成過度擬合;max_depth:表示樹的最大深度,這個參數有助於防止過度擬合;min_data_in_leaf:表示每個葉子中的最小數據量。設置一個過小的值可能會導致過度擬合;eval_metric:表示用於過度擬合檢測和最佳模型選擇的度量標準;learning_rate:表示學習率,用於降低梯度的級別;n_estimators:表示可以創建樹的最大數量;colsample_bylevel, colsample_bytree, colsample_bynode — 分別表示各個層、各棵樹、各個節點的列採樣率;boosting_type— 該參數可選擇以下的值:『gbdt』,表示傳統的梯度增強決策樹;『dart』,缺失則符合多重累計回歸樹(Multiple Additive Regression Trees);『goss』,表示基於梯度的單側抽樣(Gradient-based One-Side Sampling);『rf』,表示隨機森林(Random Forest);feature_fraction:表示每次迭代所使用的特徵分數(即所佔百分比,用小數表示)。將此值設置得較低,來提高訓練速度;min_split_again:表示當在樹的葉節點上進行進一步的分區時,所需最小損失值的減少量;n_jobs:表示並行的線程數量,如果設為-1則可以使用所有的可用線程;bagging_fraction:表示每次迭代所使用的數據分數(即所佔百分比,用小數表示)。將此值設置得較低,以提高訓練速度;application:default(默認值)=regression, type(類型值)=enum, options(可選值)=regression : 表示執行回歸任務;binary : 表示二進位分類;multiclass:表示多個類的類別;lambdarank : 表示lambdarank 應用;max_bin:表示用於存放特徵值的最大容器(bin)數。有助於防止過度擬合; num_iterations:表示增強要執行的迭代的迭代;XGBoost 參數 https://xgboost.readthedocs.io/en/latest/parameter.html LightGBM 參數 https://lightgbm.readthedocs.io/en/latest/Python-API.htmlCatBoost 參數 https://catboost.ai/docs/concepts/python-reference_parameters-list.html#python-reference_parameters-list

上面三個文件可以查看這些模型所有超參數。

如果想詳細本文的代碼和原文,可訪問下面的地址:

https://www.kaggle.com/lavanyashukla01/battle-of-the-boosting-algos-lgb-xgb-catboost https://lavanya.ai/2019/06/27/battle-of-the-boosting-algorithms/

(*本文為 AI科技大本營編譯文章,轉載請聯繫 1092722531)

相關焦點

  • 從結構到性能,一文概述XGBoost、Light GBM和CatBoost的同與不同
    TotalCount 是在所有樣本中(包含當前樣本),和當前樣本具有相同的分類特徵值的樣本數量。y_test = train_test_split(data.drop(["ARRIVAL_DELAY"], axis=1), data["ARRIVAL_DELAY"],random_state=10, test_size=0.25)XGBoostimport xgboost
  • 資料| 陳天奇介紹Xgboost原理的PPT
    https://xgboost.apachecn.org/  所有者:https://xgboost.apachecn.org/ 】內容簡介陳天奇介紹Xgboost原理的PPT,用於學習XGBoost是一個優化的分布式梯度增強庫,旨在實現高效,靈活和便攜。它在 Gradient Boosting 框架下實現機器學習算法。XGBoost提供並行樹提升(也稱為GBDT,GBM),可以快速準確地解決許多數據科學問題。相同的代碼在主要的分布式環境(Hadoop,SGE,MPI)上運行,並且可以解決數十億個示例之外的問題。
  • 劍指LightGBM和XGboost!斯坦福發表NGBoost算法
    本文試圖了解這個新算法,並與其他流行的 boosting 算法 LightGBM 和 XGboost 進行比較,以了解它在實踐中是如何工作的。1910.03225,有興趣的同學可以下載學習~ James Pond 在 Unsplash 雜誌上的照片本文的主要內容包括以下三個部分
  • XGboost算法在不同作業系統中安裝方法乾貨分享
    安裝Xgboost方法最近小編想安裝一下xgboost軟體包,用pip install xgboost 安裝有問題,今天將對主流作業系統下的安裝方法進行了匯總,用到的時候拿來即用,省事省力,內容包括三大主流作業系統的,其他系統的沒有環境,暫時不列舉。
  • 30分鐘搞定數據競賽刷分奪冠神器LightGBM
    一,LightGBM和XGBoost對比正如其名字中的Light所蘊含的那樣,和XGBoost相比,LightGBM在大規模數據集上跑起來更加輕盈。模型精度:XGBoost和LightGBM相當。因此,對於指定為類別特徵的特徵,LightGBM可以直接將每個類別取值和一個bin關聯,從而自動地處理它們,而無需預處理成onehot編碼多此一舉。六,LightGBM使用範例使用pip安裝lightgbm時候如果報錯,可以嘗試使用conda安裝。
  • 中信建投證券:xgboost中證500指數增強7月持倉組合發布
    xgboost模型是一種強學習模型,其是由眾多弱學習模型集成,其採用弱學習模型為CART,即分類與回歸樹。該模型重在擬合特徵和標籤間的非線性關係。組成該模型的眾多弱學習器之間的關係是補充彌補的關係,弱學習器的訓練有先後,每個新的弱學習器的學習目標都是之前已訓練好的弱學習器的殘差。
  • 面向Kaggle 和離線比賽實用工具庫 nyaggle,解決特徵工程與驗證兩...
    選擇信息量大、有差別性、獨立的特徵是模式識別、分類和回歸問題的關鍵一步,可以幫助開發者最大限度地從原始數據中提取特徵以供算法和模型使用。lightgbm_params = {        'max_depth': 8}result = run_experiment(lightgbm_params,                               X_train,                               y,
  • boost跑鞋那麼多,哪款性價比最高?
    首先boost的本質是一顆tpu進行高溫處理髮泡,讓它像爆米花一樣的發泡膨脹。被稱作 能量膠囊 將所有的boost小球壓和成一整個中底材質的時候,就成了阿迪達斯得緩震中底。反彈:boost 作為中底材質可以存儲和釋放能量,提供更多的能量反饋彈力。比起eva發泡,boost強於他們三倍的能量反饋。
  • 不到500元就可以體驗boost!超高顏值冷門boost鞋款推薦!
    這雙EQT Support 91/18在中底上搭載了了boost材料,為它本身就不錯的緩震增色不少。網面、皮質的搭配使得鞋子的質感超高,鞋帶處的綁帶也為鞋子的支撐性和防側翻性提供了不錯的提升。目前這雙鞋子的市場價在¥450元左右,性價比還是很高的。
  • 阿迪達斯boost哪個系列好?
    boost是adidas非常重要的科技之一,在鞋子運用中adidas創造了非常多boost鞋款,也很實用,穿著非常舒服腳感很棒。這麼多boost鞋款中,個人認為下面這些系列是比較好的。ultra boost 19最新設計出來的boost系列鞋款,屬於ultra boost的衍生品,卻擁有著全新的體驗。超厚的boost中底將腳感提升到極致,設計也是簡約時尚,很不錯的鞋款。
  • boost科技在阿迪達斯到底站有怎樣的地位?
    boost這一科技在跑鞋中絕對是頂級的中底技術,對於全球跑步著來說絕對的福音。就像耐克的air max氣墊和zoom氣墊一樣,boost作為阿迪達斯的核心科技,在阿迪達斯中地位是非常的高。這幾年阿迪達斯打破常規,少不了boost的功勞。
  • 腳疼者的福音,boost鞋子推薦
    最近響應總理的號召,半年沒用的煎餅攤終於推出來了,可不再年輕的大星這幾天腳痛得實在受不了,急忙給小師妹打電話,小師妹了解大星的情況後,推薦了一款阿迪達斯的鞋子。所以,今天中午趁著沒出攤,趕緊開啟出租房的空調和大家說道說道這款舒服的踩屎感的鞋子。自從boost科技問世以來,以無與倫比的「踩屎感」收穫了大量的好評。阿迪已經將此科技運用到了幾十種鞋款當中,無論是跑步,籃球,網球等等鞋款,都使用了boost的大底。今天主要談談幾款常見的跑鞋,以及他們之間的差別。
  • XGBoost 重要關鍵參數及調優步驟
    如果新分裂的節點的樣本權重和小於min_child_weight則停止分裂 。這個可以用來減少過擬合,但是也不能太高,會導致欠擬合。3. max_depth [default=6]樹的最大深度,值越大,樹越大,模型越複雜 可以用來防止過擬合,典型值是3-10。
  • 搭載最厚boost,這款鞋厲害了
    這次給大家帶來的是這雙19年發售的Adidas Crazy BYW,據說是一雙從外形到腳感都能讓人驚豔的球鞋。 那麼這款「天足」家族的球鞋有什麼值得看的亮點呢,這就給大家來從外形、科技、腳感三個方面來做一個測評。
  • 媲美ultra boost!阿迪solar是什麼來頭?
    Adidas SOLAR是今天阿迪推出的一款新型鞋款,作為一款全新的鞋子,我們能在Adidas SOLAR上看到一點ultra boost的影子。不過在看到solar的時候,就會被被它的外形吸引住。與ultra boost相似但是外形更加新潮,它的配色獨特,有一種強烈但又不失風格的拼裝感,相當有顏值。solar使用的中底材料是非常具有個性化名稱的solar boost,而且用量很大,近乎於全掌。雖然在此之前也有一雙搭載solar boost的鞋子,不過那個款式現在已經停產了。而且在顏值上,不如現在的solar。
  • Boost,是阿迪的看家本領還是只不過是一層泡沫?
    中國是世界領先的泡沫生產和應用市場,行業內專業公司貫穿整個泡沫產業,中國泡沫行業是全球專業企業熱衷的市場,同時也向全球輸出優質產品。把握中國泡沫市場的最佳商機,加入Interfoam讓您的公司在迅速成長的亞太市場佔得先機。
  • ADIDAS最具踩屎感的BOOST系列跑鞋,你擁有嗎?
    adidas的boost中底科技可以說是現在adidas跑鞋的核心科技了,boost中底以其強大的緩震性和柔軟度著稱。boost中底科技可以說是現在世界上跑鞋中最好的中底科技之一。一般搭配boost的鞋款都有一個顯著的特點,超級舒適的腳感也就是我們口中的踩屎感。
  • Adidas 這款鞋厲害了,搭載最厚的 boost
    那這款「天足」家族的球鞋有什麼地方值得看的特色呢,這就給大伙兒來從外形、科技、腳感三個方面來做一個測評。天足的經典設計—模塊化分離式中底,能產生與傳統式平板boost不同的上腳體驗:依據腳掌不同部位的承受力不同,來做出不同模塊的反饋。單單從boost的體積上而言,這雙鞋是目前為止較大 的,跨越了eqtsupport93/17。 鞋內搭載了舒服的OrthoLite鞋墊,OrthoLite具備優良的透氣性和輕量化的優點。