機器學習算法的新女王——XGBoost

2020-12-06 雷鋒網

字幕組雙語原文:機器學習最優算法:XGBoost

英語原文:XGBoost Algorithm: Long May She Reign!

翻譯:雷鋒字幕組(yhfwww)

仍然記得15年前參加工作的第一天,剛完成研究生學業的我,加入了一家全球投資銀行擔任分析師。那天我不停地拉直領帶,努力回憶起學過的所有東西,懷疑自己是否足夠勝任工作。察覺到我的焦慮,老闆微笑著說:

「別擔心!你只需要知道回歸模型就行了!」

我當時在想,「我知道這個!」。我知道回歸模型、線性回歸和邏輯回歸。老闆的說法是對的,在任期內我僅僅建立了基於回歸的統計模型。在那個時候,回歸建模是預測分析無可爭議的女王。15年後,回歸建模的時代已經結束。遲暮的女王已經退場,取而代之的是名字時髦、活力滿滿的新女王XGBoost(Exterme Gradient Boosting,極限梯度提升)。

什麼是XGBoost?

XGBoost是基於決策樹的集成機器學習算法,使用了梯度提升框架。在涉及非結構化數據(圖像、文本等)的預測問題中,人工神經網絡往往優於所有其他算法或框架。然而,當涉及到中小型結構化/表格數據時,基於決策樹的算法被認為是目前同類中最好的。請參閱下表了解這些年來基於樹的算法的發展。  基於決策樹的XGBoost算法演化

XGBoost算法是華盛頓大學的一個研究項目。陳天奇和Carlos Guestrin在2016年的SIGGDD大會上發的的論文,讓機器學習世界如火如荼。自引入以來,該算法不僅贏得了眾多的Kaggle競賽,而且還被認為是若干前沿行業應用的驅動力。因此,有一個強大的數據科學家社區為XGBoost開源項目做出貢獻,GitHub上有大約350個貢獻者和~3600個提交者。該算法有以下特點:

  1. 應用範圍廣泛:可用於解決回歸、分類、排名和用戶自定義預測問題。

  2. 可移植性:在Windows、Linux和os x上運行平穩。

  3. 語言:支持所有主流的程式語言,包括C++、Python、R、java、Scala和Julia。

  4. 雲集成:支持AWS、Azure和Yarn集群,與Flink、Spark和其他生態系統配合良好。

如何建立對XGBoost的直覺認識?

決策樹,在其最簡單的形式,是易於可視化和相當可解釋的算法,但為下一代基於樹的算法建立直覺可能有點棘手。下面是一個簡單的類比,可以更好地理解基於樹的算法的發展。  

照片來Unsplash的rawpixel

想像一下,你是一個招聘經理,面試幾位資歷優秀的應聘者。基於樹的算法進化的每一步都可以看作是面試過程的一個版本。

  1. 決策樹:每個招聘經理都有一套標準,比如教育水平、工作年限、面試表現。決策樹類似於招聘經理根據自己的標準面試應聘者。

  2. Bagging:現在想像一下,不是一個面試官,而是一個面試小組,每個面試官都有投票權。Bagging聚合包括通過民主投票過程將所有面試官的意見結合起來,以最終做出決定。

  3. 隨機森林:這是一種基於Bagging的算法,有一個關鍵的區別,其中只有一個子集的特徵是隨機選擇的。換言之,每個面試官只會對面試者進行一些隨機選擇的資格測試(例如,測試編程技能的技術面試和評估非技術技能的行為面試)。

  4.  Boosting:這是一種替代方法,每個面試官都會根據前一位面試官的反饋來改變評估標準。這通過部署一個更動態的評估過程來「提升Boosts」面試過程的效率。

  5. 梯度提升:通過梯度下降算法將誤差最小化的一種特例,例如,戰略諮詢公司利用案例面試來淘汰不合格的候選人。

  6. XGBoost:可以把XGBoost看作是對「steroids」的梯度增強(它被稱為「極致梯度增強」是有原因的!)。它是軟硬體優化技術的完美結合,可以在最短的時間內使用較少的計算資源獲得優異的結果。

為什麼XGBoost表現如此出色?

XGBoost和Gradient Boosting Machines(GBMs)都是集成樹方法,它們採用梯度下降結構來提高弱學習者(CARTs)的學習能力。然而,XGBoost通過系統優化和算法增強改進了基本GBM框架。  

XGBoost如何優化標準GBM算法

  1. 並行化:XGBoost使用並行化實現序列樹的構建過程。這是可能的,因為用於構建基本學習器的循環具有可互換性;外部循環枚舉樹的葉節點,第二個內部循環計算特徵。這是可能的,因為用於構建基本學習器的循環具有可互換性;外部循環枚舉樹的葉節點,第二個內部循環計算特徵。這種循環嵌套限制了並行化,因為沒有完成內部循環(對這兩個循環的計算要求更高),外部循環就無法啟動。因此,為了改進運行時,循環的順序是通過初始化來交換的,通過對所有實例的全局掃描和使用並行線程進行排序。此開關通過抵消計算中的任何並行化開銷來提高算法性能。

  2. 樹修剪:GBM框架中的樹分裂停止準則本質上是貪婪的,它依賴於分裂點的負損失準則。XGBoost使用指定的「max_depth」參數,而不是先使用條件,然後開始向後修剪樹。這種「深度優先」方法顯著提高了計算性能。

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

算法增強:

  1. 正則化:它通過L1脊線L2正則化來懲罰更複雜的模型,以防止過度擬合。

  2. 稀疏性意識:XGBoost通過根據訓練損失自動「學習」最佳缺失值,自然地允許輸入稀疏特徵,並更有效地處理數據中不同類型的稀疏模式。

  3. 加權分位數草圖:XGBoost採用分布式加權分位數草圖算法,有效地找到加權數據集之間的最佳分割點。

  4. 交叉驗證:該算法在每次迭代中都帶有內置的交叉驗證方法,不需要顯式地對該搜索進行編程,也不必指定一次運行中所需的確切的提升迭代次數。

證據在哪裡?

我們使用scikitlearn的「Make_nuclassification」數據包創建了一個隨機樣本,其中有100萬個數據點,有20個特徵(2個是信息性的,2個是冗餘的)。我們測試了一些算法,如Logistic回歸、隨機森林、標準梯度提升和XGBoost。

XGBoost與使用SKLearn的Make_Classification 數據集的其他ML算法的比較

如上圖所示,與其他算法相比,XGBoost模型具有最佳的預測性能和處理時間組合。其他嚴格的基準研究也產生了類似的結果。難怪XGBoost在最近的數據科學競賽中被廣泛使用。

「如有疑問,請使用XGBoost」——Owen Zhang

所以我們應該一直使用XGBoost嗎?

說到機器學習(甚至是生活),沒有免費的午餐。作為數據科學家,我們必須測試手頭數據的所有可能的算法,以確定冠軍算法。此外,選擇正確的算法是不夠的。我們還必須通過調整超參數來為數據集選擇正確的算法配置。此外,在選擇獲勝算法時還有其他一些考慮因素,例如計算複雜度、可解釋性和易於實現。這正是機器學習開始從科學走向藝術的起點,但老實說,這就是奇蹟發生的地方!

未來會怎樣?

機器學習是一個非常活躍的研究領域,已經有幾種可行的XGBoost替代方案。微軟研究院最近發布了LightGBM框架來增強梯度,顯示出巨大的潛力。Yandex Technology開發的CatBoost已經取得了令人印象深刻的基準測試結果。在預測性能、靈活性、可解釋性和實用性方面,我們有一個比XGBoost更好的模型框架是遲早的事。然而,直到有一個強大的挑戰者出現,XGBoost將繼續統治機器學習世界!

【封面圖片來源:網站名Unsplash,所有者: Jared Subia】


雷鋒字幕組是由AI愛好者組成的志願者翻譯團隊;團隊成員有大數據專家、算法工程師、圖像處理工程師、產品經理、產品運營、IT諮詢人、在校師生;志願者們來自IBM、AVL、Adobe、阿里、百度等知名企業,北大、清華、港大、中科院、南卡羅萊納大學、早稻田大學等海內外高校研究所。

了解字幕組請聯繫微信:tlacttlact

轉載請聯繫字幕組微信並註明出處:雷鋒字幕組

雷鋒網雷鋒網(公眾號:雷鋒網)

雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 資料| 陳天奇介紹Xgboost原理的PPT
    【 圖片來源:https://xgboost.apachecn.org/  所有者:https://xgboost.apachecn.org/ 】內容簡介陳天奇介紹Xgboost原理的PPT,用於學習它在 Gradient Boosting 框架下實現機器學習算法。XGBoost提供並行樹提升(也稱為GBDT,GBM),可以快速準確地解決許多數據科學問題。相同的代碼在主要的分布式環境(Hadoop,SGE,MPI)上運行,並且可以解決數十億個示例之外的問題。
  • XGboost算法在不同作業系統中安裝方法乾貨分享
    安裝Xgboost方法最近小編想安裝一下xgboost軟體包,用pip install xgboost 安裝有問題,今天將對主流作業系統下的安裝方法進行了匯總,用到的時候拿來即用,省事省力,內容包括三大主流作業系統的,其他系統的沒有環境,暫時不列舉。
  • 大戰三回合:XGBoost、LightGBM和Catboost一決高低
    一言不合就 BattleGBDT 是機器學習中的一個非常流行並且有效的算法模型,2014 年陳天奇博士提出的 XGBoost 算法就是 GBDT 一個重要實現。但在大訓練樣本和高維度特徵的數據環境下,GBDT 算法的性能以及準確性卻面臨了極大的挑戰,隨後,2017 年 LightGBM 應勢而生,由微軟開源的一個機器學習框架;同年,俄羅斯的搜索巨頭 Yandex 開源 Catboost 框架。
  • 陳天奇做的XGBoost為什麼能橫掃機器學習競賽平臺?
    新智元報導 編輯:元子【新智元導讀】XGBoost號稱「比賽奪冠的必備大殺器」,橫掃機器學習競賽罕逢敵手,堪稱機器學習算法中的新女王!在涉及非結構化數據(圖像、文本等)的預測問題中,人工神經網絡顯著優於所有其他算法或框架。但當涉及到中小型結構/表格數據時,基於決策樹的算法現在被認為是最佳方法。而基於決策樹算法中最驚豔的,非XGBoost莫屬了。打過Kaggle、天池、DataCastle、Kesci等國內外數據競賽平臺之後,一定對XGBoost的威力印象深刻。
  • 10大機器學習算法,看懂你就是數據科學家
    正因為如此,數據科學家會掌握幾乎所有的常見算法,並精通其中一門,這樣可以快速適應新領域的問題。今天我們就來聊聊,每一位數據科技家都應該了解的10大機器學習算法。下面是關於普遍機器學習算法和快速資源的風暴之旅,準好了嗎?燒腦挑戰開始: 1. 主成分分析(PCA)/奇異值分解(SVD)PCA是一種非監督學習,用來理解由向量組成的數據集的全局特性的方法。
  • 調包俠神器2.0發布,Python機器學習模型搭建只需要幾行代碼
    機器學習庫的「煉丹爐」PyCaret說白了,有點像一個機器學習庫的煉丹爐。以下是它「熔」進來的部分庫:數據處理:pandas、numpy…數據可視化:matplotlib、seaborn…各種模型:sklearn、xgboost、catboost、lightgbm…嗯…sklearn直接就給封裝進去了,調用很方便。
  • 機器學習算法基礎(使用Python代碼)
    今天,作為一名數據科學家,我可以用每小時幾美元的成本,用複雜算法構建數據處理機器。但是實現這並不容易!因為我需要面臨度過無數個黑暗的日日夜夜。機器學習算法類型從廣義上講,有3種類型的機器學習算法。創建本指南背後的想法是簡化世界各地有抱負的數據科學家和機器學習愛好者的旅程。通過本指南,我將幫助您解決機器學習問題並從經驗中獲益。我提供了對各種機器學習算法的高級理解以及運行它們的R&Python代碼。這些應該足以弄髒你的手。線性回歸主要有兩種類型:簡單線性回歸和多元線性回歸。簡單線性回歸的特徵在於一個自變量。
  • 數據挖掘中的利器——XGBoost理論篇
    XGBoost是各種數據挖掘或機器學習算法類比賽中每個團隊都會使用且精度相對最好的算法之一(Deep Learning算法除外)。也就是說,對於剛轉向機器學習領域的同胞們,在掌握數據挖掘的基本常識概念之後,要想在比賽中有所收穫,掌握XGBoost算法也是當務之急。
  • XGBoost算法
    XGBoost(eXtreme Gradient Boosting)算法近年來在各種比賽中可謂是「香餑餑」,預測性能很好。下面我們就來介紹它的原理。 原理 首先,我們要了解的是,XGBoost是GBDT算法的一種改進。
  • 中信建投證券:xgboost中證500指數增強7月持倉組合發布
    xgboost模型是一種強學習模型,其是由眾多弱學習模型集成,其採用弱學習模型為CART,即分類與回歸樹。該模型重在擬合特徵和標籤間的非線性關係。組成該模型的眾多弱學習器之間的關係是補充彌補的關係,弱學習器的訓練有先後,每個新的弱學習器的學習目標都是之前已訓練好的弱學習器的殘差。
  • 一個框架解決幾乎所有機器學習問題
    上周一個叫 Abhishek Thakur 的數據科學家,在他的 Linkedin 發表了一篇文章 Approaching (Almost) Any Machine Learning Problem,介紹他建立的一個自動的機器學習框架,幾乎可以解決任何機器學習問題,項目很快也會發布出來。
  • 從結構到性能,一文概述XGBoost、Light GBM和CatBoost的同與不同
    本文從算法結構差異、每個算法的分類變量時的處理、算法在數據集上的實現等多個方面對 3 種代表性的 boosting 算法 CatBoost、Light GBM 和 XGBoost 進行了對比;雖然本文結論依據於特定的數據集,但通常情況下,XGBoost 都比另外兩個算法慢。
  • XGBoost之切分點算法
    前言上文介紹了XGBoost的算法原理並引出了衡量樹結構好壞的打分函數(目標函數),根據特徵切分點前後的打分函數選擇最佳切分點,但並未對節點的切分算法作詳細的介紹。本文詳細的介紹了XGBoost的切分點算法,內容參考陳天奇博士《XGBoost :A scalable Tree Boosting System》。
  • 機器學習萌新必學的Top10算法
    大的原則不過呢,對於所有預測建模的監督學習算法來說,還是有一些通用的底層原則的。機器學習算法,指的是要學習一個目標函數,能夠儘可能地還原輸入和輸出之間的關係。然後根據新的輸入值X,來預測出輸出值Y。精準地預測結果是機器學習建模的任務。
  • XGBoost算法背後的數學:儘可能簡單地解釋XGBoost算法背後的機制
    ——費曼XGBoost是一個很優美的算法,它的過程不乏啟發性。這些通常簡單而美麗的概念在數學術語中消失了。我在理解數學的過程中也遇到過同樣的挑戰,所以我寫這篇文章的目的是鞏固我的理解,同時幫助其他人完成類似的過程。
  • XGBoost 重要關鍵參數及調優步驟
    本篇對XGBoost主要參數進行解釋,方括號內是對應scikit-learn中XGBoost算法模塊的叫法。提升參數雖然有兩種類型的booster,但是我們這裡只介紹tree。因為tree的性能比線性回歸好得多,因此我們很少用線性回歸。
  • 流行的機器學習算法總結,幫助你開啟機器學習算法學習之旅
    AI的ML領域是為實現非常精確的目標而創建的,它引入了多種算法,從而可以更順暢地進行數據處理和決策。什麼是機器學習算法?機器學習算法是任何模型背後的大腦,可讓機器學習並使其更智能。這些算法的工作方式是,為它們提供第一批數據,並且隨著時間的流逝和算法的準確性的提高,額外的數據也被引入到算法中。
  • 以XGBoost為代表的集成算法體現的哲學思想與數學技巧
    為什麼要看待機器學習中某些問題要從哲學思想與數學思想技巧的高度呢?一是,增加學習的樂趣,降低理解的難度,揭開其神秘的面紗,也就是以簡馭繁。二是能夠追根溯源,知其然並知其所以然,不僅幫助我們理解,同時給我們提供更多的創新出發點,是大有裨益的。
  • XGBoost算法原理小結
    前言XGBoost(eXtreme Gradient Boosting)全名叫極端梯度提升,XGBoost是集成學習方法的王牌,在Kaggle數據挖掘比賽中,大部分獲勝者用了XGBoost,XGBoost在絕大多數的回歸和分類問題上表現的十分頂尖,本文較詳細的介紹了XGBoost的算法原理。
  • 機器學習到底需要多少數據?可能並不是越多越好
    機器學習中最值得問的一個問題是,到底需要多少數據才可以得到一個較好的模型?從理論角度,有Probably approximately correct (PAC) learning theory來描述在何種情況下,可以得到一個近似正確的模型。但從實用角度看,PAC的使用範圍還是比較局限的。