《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 解決方案 > 線性模型已退場,XGBoost時代早已來

線性模型已退場,XGBoost時代早已來

2019-04-16

什么是 XGBoost?如何直觀理解 XGBoost?它為什么這么優秀?


我對十五年前第一天工作的情況還記憶猶新。彼時我剛畢業,在一家全球投資銀行做分析師。我打著領帶,試圖記住學到的每一件事。與此同時,在內心深處,我很懷疑自己是否可以勝任這份工作。感受到我的焦慮后,老板笑著說:


「別擔心,你只需要了解回歸模型就可以了。」


我當初想的是「我知道這個!」。我知道回歸模型——線性回歸和 logistic 回歸都知道。老板是對的。我在任職期間僅僅構建了基于回歸的統計模型。我并不是一個人。事實上,當時的回歸模型在預測分析中獨占鰲頭。而十五年后的今天,回歸模型的時代已經結束了。遲暮的女王已經退場,取而代之的是名字時髦、活力滿滿的新女王——XGBoost(Exterme Gradient Boosting,極限梯度提升)。


什么是 XGBoost?


XGBoost 是基于決策樹的集成機器學習算法,它以梯度提升(Gradient Boost)為框架。在非結構數據(圖像、文本等)的預測問題中,人工神經網絡的表現要優于其他算法或框架。但在處理中小型結構數據或表格數據時,現在普遍認為基于決策樹的算法是最好的。下圖列出了近年來基于樹的算法的演變過程:

微信圖片_20190416154015.jpg

從決策樹到 XGBoost 算法的演變。


XGBoost 算法最初是華盛頓大學的一個研究項目。陳天奇和 Carlos Guestrin 在 SIGKDD 2016 大會上發表的論文《XGBoost: A Scalable Tree Boosting System》在整個機器學習領域引起轟動。自發表以來,該算法不僅多次贏得 Kaggle 競賽,還應用在多個前沿工業應用中,并推動其發展。許多數據科學家合作參與了 XGBoost 開源項目,GitHub 上的這一項目(https://github.com/dmlc/xgboost/)約有 350 個貢獻者,以及 3600 多條提交。和其他算法相比,XGBoost 算法的不同之處有以下幾點:


應用范圍廣泛:該算法可以解決回歸、分類、排序以及用戶自定義的預測問題;

可移植性:該算法可以在 Windows、Linux 和 OS X 上流暢地運行;

語言:支持包括 C++、Python、R、Java、Scala 和 Julia 在內的幾乎所有主流編程語言;

云集成:支持 AWS、Azure 和 Yarn 集群,也可以很好地配合 Flink、 Spark 等其他生態系統。


對 XGBoost 的直觀理解


決策樹是易于可視化、可解釋性相對較強的算法,但是要建立下一代基于樹的算法的直觀理解可能就有些棘手了。為了更好地理解基于樹的算法的演變過程,我對其做了簡單的類比:


假設你是面試官,要面試幾名資歷非常優秀的求職者。基于樹的算法演變過程的每一步都可以類比為不同版本的面試場景。


決策樹:每一名面試官都有一套自己的面試標準,比如教育水平、工作經驗以及面試表現等。決策樹類似于面試官根據他(她)自己的標準面試求職者。

袋裝法(Bagging):現在面試官不只有一個人,而是一整個面試小組,小組中的每位面試官都有投票權。Bagging(Boostrap Aggregating)就是通過民主投票過程,綜合所有面試官的投票,然后做出最終決定。

隨機森林(Random Forest):這是基于 Bagging 的算法,但與 Bagging 有明顯區別——它隨機選擇特征子集。也就是,每位面試官只會隨機選擇一些側面來對求職者進行面試(比如測試編程技能的技術面或者是評估非技術技能的行為面試)。

Boosting:這是一種替代方法,每位面試官根據前一位面試官的反饋來調整評估標準。通過部署更動態的評估流程來「提升」面試效率。

梯度提升(Gradient Boosting):這是 Boosting 的特例,這種算法通過梯度下降算法來最小化誤差。用面試類比的話,就是戰略咨詢公司用案例面試來剔除那些不符合要求的求職者;

XGBoost:將 XGBoost 視為「打了雞血」的梯度提升(將這種算法稱為「極限梯度提升」是有原因的!)。這是軟硬件優化技術的完美結合,它可以在最短時間內用更少的計算資源得到更好的結果。



為什么 XGBoost 如此優秀?


XGBoost 和梯度提升機(Gradient Boosting Machine,GBM)都是用梯度下降架構增強弱學習器(一般是 CART)的集成樹方法。但 XGBoost 通過系統優化和算法增強改進了基礎 GBM 框架。

微信圖片_20190416154044.jpg

XGBoost 是如何優化標準 GBM 算法的


系統優化


并行:XGBoost 用并行的方式實現了序列樹的構建過程。考慮到用于構建基礎學習器的循環、枚舉樹的葉節點的外部循環以及計算特征的第二個內部循環的可互換性,這是完全有可能實現的。由于沒有完整的內部循環就無法啟動外部循環(兩個循環要求的計算資源更多),因此這種嵌套的循環限制了并行。為了改善運行時,就要交換循環的順序,這通過對所有實例進行全局掃描來執行初始化以及用并行線程排序來實現。這樣的變換抵消了計算中并行所需的開銷,從而提升了算法性能。

剪枝:從本質上講 GBM 框架內樹分裂的停止標準是貪婪的,這取決于分裂點的負損失。XGBoost 優先使用指定的「max_depth」參數,然后開始后向修剪樹。這種「深度優先」的方法顯著提升了計算性能。

硬件優化:XGBoost 算法可以有效利用硬件資源。這是通過緩存感知(cache awareness)實現的,而緩存感知則是通過在每個線程中分配內部緩沖區來存儲梯度統計信息實現的。「核外」計算等進一步增強措施則在處理與內存不兼容的大數據幀時優化了可用磁盤空間。



算法增強:


正則化:用 LASSO(L1)正則化和 Ridge(L2)正則化懲罰更復雜的模型,以防止過擬合。

稀疏性感知(Sparsity Awareness):XGBoost 根據訓練損失自動「學習」最佳缺失值,從而承認輸入的稀疏特征,還可以更高效地處理數據中不同類型的稀疏模式。

加權分位數略圖(Weighted Quantile Sketch):XGBoost 用分布式加權分位數略圖算法(https://arxiv.org/pdf/1603.02754.pdf)高效地從加權數據集中找到最佳分裂點。

交叉驗證:該算法在每次迭代時都使用內置的交叉驗證方法,這樣就無需特地為搜索編程,也不需要每次運行時都指定所需迭代增強的確切數目。



證據在哪里?


我們用 Scikit-learn 中的「Make_Classification」(https://scikit-learn.org/stable/modules/generated/sklearn.datasets.make_classification.html)數據包創建包含 100 萬個數據點的隨機樣本,其中包含 20 個特征(2 個是信息性的,2 個是冗余的)。我們測試了幾種算法,比如 Logistic 回歸、隨機森林、標準梯度提升,以及 XGBoost。

微信圖片_20190416154153.jpg

使用 SKLearn 中 Make_Classification 數據集的 XGBoost 算法和其他 ML 算法。


如上圖所示,和其他算法相比,結合預測性能和處理時間兩項來看,XGBoost 是最好的。其他嚴格的基準研究(https://github.com/szilard/benchm-ml)也得到了類似的結果。這也難怪 XGBoost 廣泛應用于近期的數據科學競賽了。


「如有疑問,用 XGBoost 就好」——Owe Zhang,Kaggle Avito 上下文廣告點擊大賽冠軍。


那么我們應該一直用 XGBoost 嗎?


無論是機器學習還是生活,沒有免費的午餐都是一條鐵律。作為數據科學家,我們必須要測試所有能處理手頭數據的算法,才能判斷哪種算法是最好的。此外,只是選擇正確的算法還不夠。我們必須針對要處理的數據集調整超參數,從而選擇合適的配置。此外,要選擇合適的算法還要考慮其他因素,比如計算復雜度、可解釋性以及易于實現性。這是機器學習從科學走向藝術的開始,但說實話,這也正是見證奇跡的時刻!


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 国产一级特黄a大片免费 | 黄色一级免费观看 | 国产精品国产三级国产在线观看 | 在线观看黄网站免费继续 | 97人操| 中文字幕第13亚洲另类 | 日韩视频第二页 | 中国一级特黄特色真人毛片 | 国产欧美一区二区三区精品 | 成人免费观看视频高清视频 | 伊人久久国产免费观看视频 | 久久人人爽人人爽人人片va | 午夜激情视频在线 | 久久亚洲欧美综合激情一区 | 欧美深夜福利视频 | 国产午夜不卡 | 亚洲欧美v视色一区二区 | 在线欧美不卡 | 久久成人免费网站 | 韩国成人在线视频 | 久久久久久久网站 | 欧美影院一区 | 国产精品成人免费视频99 | 亚洲va | 一区二区三区亚洲 | 亚洲一区在线视频 | 亚洲一区影音先锋色资源 | 欧美巨大xxxx做受孕妇视频 | 国产福利影院 | 亚洲人精品| 日本一区二区三区在线 视频 | 中文字幕免费在线 | 九九黄色大片 | 精品国产成人高清在线 | 亚洲一区二区三区香蕉 | 日韩成人一级 | 欧美一区不卡二区不卡三区 | 可以免费看的黄色网址 | 动漫无遮羞视频免费网站 | 免费成人毛片 | 日本精品久久久免费高清 |