XGBoost與深度學習到底孰優孰劣?都說XGBoost好用,為什麼名氣總不如深度學習?
本文長度為1600字,建議閱讀3分鐘
本文分析XGBoost與深度學習的差異,分享XGBoost的應用。
AlphaGo大戰柯潔、李世石後,所有人都能談上幾句深度學習。人工智慧在圍棋上的這場突破,最終還要歸功於機器學習三巨頭三十年如一日的長期研究。
相比之下,橫掃Kaggle大賽的XGBoost(去年的29個獲獎方案中,有17個是用XGBoost),名氣可就小太多了。更何況,它的發起人還只是個名不見經傳的年輕人。
有人打抱不平說,XGBoost要比深度學習更重要,這一點毫無疑問。
因為它好用,在很多情況下都更為可靠、靈活,而且準確;在絕大多數的回歸和分類問題上,XGBoost的實際表現都是頂尖的。
當然,不買賬的人也不少。
某Quora撰文寫到,針對準確度要求很高的那些問題,XGBoost確實很有優勢,同時它的計算特性也很不錯。然而,相對於支持向量機、隨機森林或深度學習,XGBoost的優勢倒也沒到那種誇張的程度。特別是當你擁有足夠的訓練數據,並能找到合適的深度神經網路時,深度學習的效果就明顯能好上一大截。
還有用戶打趣說,XGBoost的名氣壞在它的名字上,深度學習一聽就非常高大上,XGBoost再怎麼包裝也是書獃子氣十足。
那麼,XGBoost的發起人又是怎麼說的呢?
XGBoost的發起人——陳天奇博士,他並不認可將深度學習和XGBoost截然對立起來。他談到,這兩種方法在其各自擅長領域的性能表現都非常好:
XGBoost專註於模型的可解釋性,而基於人工神經網路的深度學習,則更關注模型的準確度。
XGBoost更適用於變數數較少的表格數據,而深度學習則更適用於圖像或其他擁有海量變數的數據。
到底,XGBoost與深度學習孰優孰劣?
陳天奇在Quora上的解答如下:
不同的機器學習模型適用於不同類型的任務。深度神經網路通過對時空位置建模,能夠很好地捕獲圖像、語音、文本等高維數據。而基於樹模型的XGBoost則能很好地處理表格數據,同時還擁有一些深度神經網路所沒有的特性(如:模型的可解釋性、輸入數據的不變性、更易於調參等)。
這兩類模型都很重要,並廣泛用於數據科學競賽和工業界。舉例來說,幾乎所有採用機器學習技術的公司都在使用tree boosting,同時XGBoost已經給業界帶來了很大的影響。
作為一名機器學習研究者,我一直在用深度學習和XGBoost。我相信,我們需要全面理解每一種模型,並能選出最適合你當前任務的那個。XGBoost、深度神經網路與其他經常要用的機器學習演算法(如因子分解機、logistic回歸分析等),值得機器學習行業的每一位從業者關注。這裡沒有一葯能解百病的說法。
既然提到XGBoost在業界已經有廣泛的應用,那麼到底又有哪些呢?
XGBoost實際用例不完全列表
dmlc/xgboost(https://github.com/dmlc/xgboost/tree/master/demo#usecases)
使用XGBoost的Kaggle獲獎方案可在這裡找到:
使用XGBoost的Seldon預測服務Iris
使用XGBoost的Graphlab Create
騰訊數據平台把分布式版本的XGBoost用於微信內的購買點擊預測
汽車之家把分布式版本的XGBoost用於展示廣告的點擊率預測
談了XGBoost的應用範圍,再來客觀聊聊XGBoost的性能。說到性能,就不得不說到它的一個突出特點——運行很快。
XGBoost運行很快
至於它為什麼這麼快,有人說C++和並行計算是主要原因,而陳天奇則一針見血說到,性能原本就是XGBoost最初的設計目標:
比如:
內存優化,大部分的內存分配在第一次載入中就完成了,之後便不再涉及動態內存分配的問題。
緩存線優化,訓練模式儘可能善用緩存機制。
模型自身的改善,我們開發出模型的各種變體,從而令演算法本身更具強健性、更加準確。詳見:Introduction to Boosted Trees(http://xgboost.readthedocs.org/en/latest/model.html) 。
另外,性能不僅僅意味著速度上的提升,在資源有限情況下你仍能對大型數據集使用該演算法:
我們不斷探索該工具的極限,以最大限度地利用計算資源,讓你在一個節點上就能運行多個實例。
使用擴展內存的版本,允許數據存在硬碟上,不必把所有數據導入內存。
分布式版本對XGBoost的每一個節點都進行過優化,讓你可以有效地在更少節點上處理更大的數據集。
https://github.com/dmlc/xgboost/tree/master/demo#usecases
為保證發文質量、樹立口碑,數據派現設立「錯別字基金」,鼓勵讀者積極糾錯。
若您在閱讀文章過程中發現任何錯誤,請在文末留言,或到後台反饋,經小編確認後,數據派將向檢舉讀者發8.8元紅包。
同一位讀者指出同一篇文章多處錯誤,獎金不變。不同讀者指出同一處錯誤,獎勵第一位讀者。
感謝一直以來您的關注和支持,希望您能夠監督數據派產出更加高質的內容。
※就要手機進課堂,大學裡80人一個班上數電問題也不大
※女友不讓我買這款手機,就是因為不想讓我玩遊戲
※今年最強手機排名,它超越iphone8排名第一
※微軟意外曝光Surface手機:驍龍835/藏殺手鐧
TAG:安卓網 |
※從 Google Trends,看各大深度學習框架使用熱度
※詳解深度學習中的 Normalization,不只是 BN
※我是如何在 Python 內使用深度學習實現 iPhone X的FaceID 的
※誰說輕薄本是Mac的天下?華為MateBook X Pro深度體驗
※TensorFlow、MXNet、Keras如何取捨?常用深度學習框架對比
※NanoNets:數據有限如何應用深度學習?
※Yoshua Bengio談邁向硬體友好的深度學習
※Yann LeCun:假如沒有深度學習,Facebook就是塵埃
※TensorFlow、Keras、CNTK……到底哪種深度學習框架更好用?
※微軟開源ONNX Runtime,想用什麼深度學習框架任你選!
※如何用雲端 GPU 為你的 Python 深度學習加速?
※如何使用Tensorflow玩轉深度學習?
※Fran?ois Chollet 談深度學習的局限性和未來-下篇
※Fran?ois Chollet 談深度學習的局限性和未來 - 下篇
※從Zero到Hero,OpenAI重磅發布深度強化學習資源
※AMD的GPU現在可以加速TensorFlow深度學習了
※Tomaso Poggio解析下個「AlphaGo」線索,再談「深度學習鍊金術」
※Fran?ois Chollet 談深度學習的局限性和未來-上篇
※Fran?ois Chollet 談深度學習的局限性和未來 - 上篇
※如何用 OpenCV、Python 和深度學習實現面部識別?