陳天奇做的XGBoost為什麼能橫掃機器學習競賽平臺?

2020-12-04 新智元

新智元報導

編輯:元子

【新智元導讀】XGBoost號稱「比賽奪冠的必備大殺器」,橫掃機器學習競賽罕逢敵手,堪稱機器學習算法中的新女王!

在涉及非結構化數據(圖像、文本等)的預測問題中,人工神經網絡顯著優於所有其他算法或框架。但當涉及到中小型結構/表格數據時,基於決策樹的算法現在被認為是最佳方法。而基於決策樹算法中最驚豔的,非XGBoost莫屬了。

打過Kaggle、天池、DataCastle、Kesci等國內外數據競賽平臺之後,一定對XGBoost的威力印象深刻。XGBoost號稱「比賽奪冠的必備大殺器」,橫掃機器學習競賽罕逢敵手。最近甚至有一位大數據/機器學習主管被XGBoost在項目中的表現驚豔到,盛讚其為「機器學習算法中的新女王」!

XGBoost最初由陳天奇開發。陳天奇是華盛頓大學計算機系博士生,研究方向為大規模機器學習。他曾獲得KDD CUP 2012 Track 1第一名,並開發了SVDFeature,XGBoost,cxxnet等著名機器學習工具,是Distributed (Deep) Machine Learning Common的發起人之一。

XGBoost實現了高效、跨平臺、分布式gradient boosting (GBDT, GBRT or GBM) 算法的一個庫,可以下載安裝並應用於C++,Python,R,Julia,Java,Scala,Hadoop等。目前Github上超過15700星、6500個fork。

項目主頁:

https://XGBoost.ai/

XGBoost是什麼

XGBoost全稱:eXtreme Gradient Boosting,是一種基於決策樹的集成機器學習算法,使用梯度上升框架,適用於分類和回歸問題。優點是速度快、效果好、能處理大規模數據、支持多種語言、支持自定義損失函數等,不足之處是因為僅僅推出了不足5年時間,需要進一步的實踐檢驗。

XGBoost選用了CART樹,數學公式表達XGBoost模型如下:

K是樹的數量,F表示所有可能的CART樹,f表示一棵具體的CART樹。這個模型由K棵CART樹組成。

模型的目標函數,如下所示:

XGBoost具有以下幾個特點:

靈活性:支持回歸、分類、排名和用戶定義函數跨平臺:適用於Windows、Linux、macOS,以及多個雲平臺多語言:支持C++, Python, R, Java, Scala, Julia等效果好:贏得許多數據科學和機器學習挑戰。用於多家公司的生產雲端分布式:支持多臺計算機上的分布式訓練,包括AWS、GCE、Azure和Yarn集群。可以與Flink、Spark和其他雲數據流系統集成

下圖顯示了基於樹的算法的發展歷程:

決策樹:由一個決策圖和可能的結果(包括資源成本和風險)組成, 用來創建到達目標的規劃。Bagging:是一種集合元算法,通過多數投票機制將來自多決策樹的預測結合起來,也就是將弱分離器 f_i(x) 組合起來形成強分類器 F(x) 的一種方法隨機森林:基於Bagging算法。隨機選擇一個包含多種特性的子集來構建一個森林,或者決策樹的集合Boosting:通過最小化先前模型的誤差,同時增加高性能模型的影響,順序構建模型梯度上升:對於似然函數,要求最大值,叫做梯度上升XGBoost:極端梯度上升,XGBoost是一個優化的分布式梯度上升庫,旨在實現高效,靈活和跨平臺

為什麼XGBoost能橫掃機器學習競賽平臺?

下圖是XGBoost與其它gradient boosting和bagged decision trees實現的效果比較,可以看出它比R, Python,Spark,H2O的基準配置都快。

XGBoost和Gradient Boosting Machines(GBMs)都是集合樹方法,使用梯度下降架構來提升弱學習者(通常是CART)。而XGBoost通過系統優化和算法增強改進了基礎GBM框架,在系統優化和機器學習原理方面都進行了深入的拓展。

系統優化:

並行計算

由於用於構建base learners的循環的可互換性,XGBoost可以使用並行計算實現來處理順序樹構建過程。

外部循環枚舉樹的葉節點,第二個內部循環來計算特徵,這個對算力要求更高一些。這種循環嵌套限制了並行化,因為只要內部循環沒有完成,外部循環就無法啟動。

因此,為了改善運行時,就可以讓兩個循環在內部交換循環的順序。此開關通過抵消計算中的所有並行化開銷來提高算法性能。

Tree Pruning

GBM框架內樹分裂的停止標準本質上是貪婪的,取決於分裂點的負損失標準。XGBoost首先使用'max_depth'參數而不是標準,然後開始向後修剪樹。這種「深度優先」方法顯著的提高了計算性能。

硬體優化

該算法旨在有效利用硬體資源。這是通過在每個線程中分配內部緩衝區來存儲梯度統計信息來實現緩存感知來實現的。諸如「核外」計算等進一步增強功能可優化可用磁碟空間,同時處理不適合內存的大數據幀。

算法增強:

正則化

它通過LASSO(L1)和Ridge(L2)正則化來懲罰更複雜的模型,以防止過擬合。

稀疏意識

XGBoost根據訓練損失自動「學習」最佳缺失值並更有效地處理數據中不同類型的稀疏模式。

加權分位數草圖

XGBoost採用分布式加權分位數草圖算法,有效地找到加權數據集中的最優分裂點。

交叉驗證

該算法每次迭代時都帶有內置的交叉驗證方法,無需顯式編程此搜索,並可以指定單次運行所需的增強迭代的確切數量。

為了測試XGBoost到底有多快,可以通過Scikit-learn的'Make_Classification'數據包,創建一個包含20個特徵(2個信息和2個冗餘)的100萬個數據點的隨機樣本。

下圖為邏輯回歸,隨機森林,標準梯度提升和XGBoost效率對比:

參考資料

https://XGBoost.readthedocs.io/en/latest/tutorials/model.htmlhttps://homes.cs.washington.edu/~tqchen/https://towardsdatascience.com/https-medium-com-vishalmorde-xgboost-algorithm-long-she-may-rein-edd9f99be63d

更多閱讀

Nature 重磅封面:復活死亡大腦!新智元春季招聘開啟,一起弄潮 AI 之巔!

崗位詳情請戳:

相關焦點

  • 資料| 陳天奇介紹Xgboost原理的PPT
    【 圖片來源:https://xgboost.apachecn.org/  所有者:https://xgboost.apachecn.org/ 】內容簡介陳天奇介紹Xgboost原理的PPT,用於學習它在 Gradient Boosting 框架下實現機器學習算法。XGBoost提供並行樹提升(也稱為GBDT,GBM),可以快速準確地解決許多數據科學問題。相同的代碼在主要的分布式環境(Hadoop,SGE,MPI)上運行,並且可以解決數十億個示例之外的問題。
  • 大戰三回合:XGBoost、LightGBM和Catboost一決高低
    一言不合就 BattleGBDT 是機器學習中的一個非常流行並且有效的算法模型,2014 年陳天奇博士提出的 XGBoost 算法就是 GBDT 一個重要實現。但在大訓練樣本和高維度特徵的數據環境下,GBDT 算法的性能以及準確性卻面臨了極大的挑戰,隨後,2017 年 LightGBM 應勢而生,由微軟開源的一個機器學習框架;同年,俄羅斯的搜索巨頭 Yandex 開源 Catboost 框架。
  • 機器學習算法的新女王——XGBoost
    基於決策樹的XGBoost算法演化XGBoost算法是華盛頓大學的一個研究項目。自引入以來,該算法不僅贏得了眾多的Kaggle競賽,而且還被認為是若干前沿行業應用的驅動力。因此,有一個強大的數據科學家社區為XGBoost開源項目做出貢獻,GitHub上有大約350個貢獻者和~3600個提交者。該算法有以下特點:應用範圍廣泛:可用於解決回歸、分類、排名和用戶自定義預測問題。
  • XGboost算法在不同作業系統中安裝方法乾貨分享
    安裝Xgboost方法最近小編想安裝一下xgboost軟體包,用pip install xgboost 安裝有問題,今天將對主流作業系統下的安裝方法進行了匯總,用到的時候拿來即用,省事省力,內容包括三大主流作業系統的,其他系統的沒有環境,暫時不列舉。
  • 陳天奇:機器學習科研的十年
    機器之心轉載作者:陳天奇陳天奇是機器學習領域著名的青年華人學者之一,本科畢業於上海交通大學ACM班,博士畢業於華盛頓大學計算機系,研究方向為大規模機器學習。上個月,陳天奇在Twitter上宣布自己將於2020年秋季加入CMU任助理教授,成為加入CMU的年輕華人學者之一。
  • 一個框架解決幾乎所有機器學習問題
    Kaggle是一個數據科學競賽的平臺,很多公司會發布一些接近真實業務的問題,吸引愛好數據科學的人來一起解決,可以通過這些數據積累經驗,提高機器學習的水平。最方便的就是安裝 Anaconda,這裡面包含大部分數據科學所需要的包,直接引入就可以了,常用的包有: - pandas:常用來將數據轉化成 dataframe 形式進行操作 - scikit-learn:裡面有要用到的機器學習算法模型 - matplotlib:用來畫圖 - 以及 xgboost,keras,tqdm 等。
  • 從結構到性能,一文概述XGBoost、Light GBM和CatBoost的同與不同
    最近,我參加了 kaggle 競賽 WIDS Datathon,並通過使用多種 boosting 算法,最終排名前十。從那時開始,我就對這些算法的內在工作原理非常好奇,包括調參及其優劣勢,所以有了這篇文章。
  • 二分類、多分類、回歸任務,一個項目get競賽必備模型
    數據科學競賽是學習各類算法、深入理解數據科學、提升和挑戰自己的絕佳機會,而這些競賽中有一些常用的模型。近日,有開發者在 GitHub 上開源了一個包含數據挖掘類比賽常用模型的項目,主要涵蓋二分類、多分類以及回歸任務。項目代碼全部使用 Python 實現。
  • 中信建投證券:xgboost中證500指數增強7月持倉組合發布
    xgboost模型是一種強學習模型,其是由眾多弱學習模型集成,其採用弱學習模型為CART,即分類與回歸樹。該模型重在擬合特徵和標籤間的非線性關係。組成該模型的眾多弱學習器之間的關係是補充彌補的關係,弱學習器的訓練有先後,每個新的弱學習器的學習目標都是之前已訓練好的弱學習器的殘差。
  • 調包俠神器2.0發布,Python機器學習模型搭建只需要幾行代碼
    從數據預處理到模型效果對比,PyCaret都能自動實現。所以,PyCaret長啥樣,2.0的版本又做了什麼改進?一起來看看。機器學習庫的「煉丹爐」PyCaret說白了,有點像一個機器學習庫的煉丹爐。以下是它「熔」進來的部分庫:數據處理:pandas、numpy…數據可視化:matplotlib、seaborn…各種模型:sklearn、xgboost、catboost、lightgbm…嗯…sklearn直接就給封裝進去了,調用很方便。
  • 數據挖掘中的利器——XGBoost理論篇
    XGBoost是各種數據挖掘或機器學習算法類比賽中每個團隊都會使用且精度相對最好的算法之一(Deep Learning算法除外)。也就是說,對於剛轉向機器學習領域的同胞們,在掌握數據挖掘的基本常識概念之後,要想在比賽中有所收穫,掌握XGBoost算法也是當務之急。
  • 華盛頓大學成立SAML實驗室:陳天奇參與,探索跨系統堆棧多層問題
    安妮 發自 凹非寺量子位 出品 | 公眾號 QbitAI△ 陳天奇昨天,TVM、XGBoost、cxxnet等機器學習工具的作者陳天奇宣布,自己所在的華盛頓大學新成立了一個實驗室陳天奇本人在微博上介紹說,實驗室將有整合系統、體系結構、機器學習和程序語言4個方向的團隊推進深度學習算法、系統的硬體和協同設計研究和TVM等開源項目。△ 陳天奇微博截圖四個方向華盛頓大學為什麼想建立這個實驗室?
  • XGBoost之切分點算法
    本文詳細的介紹了XGBoost的切分點算法,內容參考陳天奇博士《XGBoost :A scalable Tree Boosting System》。目錄並行原理切分點算法之貪婪算法切分點算法之分位點算法切分點算法之權重分位點算法稀疏數據的切分算法總結1.
  • 2017中國AI英雄風雲榜技術創新人物候選人之陳天奇
    陳天奇陳天奇,華盛頓大學計算機系博士生,此前畢業於上海交通大學ACM班,研究方向為大規模機器學習。
  • 陳天奇明年將加入CMU出任助理教授
    華盛頓大學博士生、SAMPL Lab和MODE Lab成員陳天奇,今天在推特上宣布,將於明年秋天加入卡內基梅隆大學(CMU),擔任助理教授。陳天奇在AI領域有諸多貢獻,他參與構建了三個廣為使用的機器學習系統,包括:TVM、XGBoost以及Apache MXNet。2012年,陳天奇還曾獲得KDDCup的冠軍。
  • 陳天奇將於2020年加入CMU任助理教授
    6月17日消息,據報導,陳天奇他將於2020年秋季加入CMU任助理教授,成為加入CMU的年輕華人學者之一。陳天奇是機器學習領域著名的青年華人學者之一,本科畢業於上海交通大學ACM班,博士畢業於華盛頓大學計算機系,研究方向為大規模機器學習。
  • XGBoost缺失值引發的問題及其深度分析|CSDN博文精選
    作者 | 兆軍(美團配送事業部算法平臺團隊技術專家)來源 | 美團技術團隊(*點擊閱讀原文,查看美團技術團隊更多文章)背景XGBoost模型作為機器學習中的一大「殺器」,被廣泛應用於數據科學競賽和工業領域,XGBoost官方也提供了可運行於各種平臺和環境的對應代碼,如適用於Spark分布式訓練的XGBoost on Spark
  • 機器學習到底需要多少數據?可能並不是越多越好
    打個比方,人是由原子、分子、細胞、組織、器官構成,但在分子層面我們不一定能分辨它是人,只有到達一定的粒度才可以。因此,數據收集的第一個重點是搞清楚,在什麼粒度可以解決我們的問題,而不是盲目的收集一大堆數據,或者收集過於抽象的數據。  2.
  • 陳天奇創業公司首個SaaS產品:快速構建部署ML應用,跨平臺優化
    去年,知名人工智慧青年學者、華盛頓大學博士陳天奇參與創建了 ML 創業公司 OctoML。該公司致力於打造一個可擴展、開放、中立的端到端棧,用於深度學習模型的優化和部署。這不,他們推出了首個 SaaS 產品 Octomizer,其能夠幫助開發者或數據科學家更方便、更省事省力地將 ML 模型部署到設備上。