今日面試題分享:請問(決策樹、Random Forest、Booting、Adaboot)GBDT和XGBoost的區別是什麼?...
請問(決策樹、Random Forest、Booting、Adaboot)GBDT和XGBoost的區別是什麼?
參考答案:
解析:
整合學習的整合物件是學習器. Bagging和Boosting屬於整合學習的兩類方法. Bagging方法有放回地取樣同數量樣本訓練每個學習器, 然後再一起整合(簡單投票); Boosting方法使用全部樣本(可調權重)依次訓練每個學習器, 迭代整合(平滑加權).
決策樹屬於最常用的學習器, 其學習過程是從根建立樹, 也就是如何決策葉子節點分裂. ID3/C4.5決策樹用資訊熵計算最優分裂, CART決策樹用基尼指數計算最優分裂, xgboost決策樹使用二階泰勒展開係數計算最優分裂.
下面所提到的學習器都是決策樹:
Bagging方法:
學習器間不存在強依賴關係, 學習器可並行訓練生成, 整合方式一般為投票;
Random Forest屬於Bagging的代表, 放回抽樣, 每個學習器隨機選擇部分特徵去優化;
Boosting方法:
學習器之間存在強依賴關係、必須序列生成, 整合方式為加權和; Adaboost屬於Boosting, 採用指數損失函式替代原本分類任務的0/1損失函式;
GBDT屬於Boosting的優秀代表, 對函式殘差近似值進行梯度下降, 用CART迴歸樹做學習器, 整合為迴歸模型;
xgboost屬於Boosting的集大成者, 對函式殘差近似值進行梯度下降, 迭代時利用了二階梯度資訊, 整合模型可分類也可迴歸. 由於它可在特徵粒度上平行計算, 結構風險和工程實現都做了很多優化, 泛化, 效能和擴充套件性都比GBDT要好。
關於決策樹,這裡有篇《決策樹演算法》(連結:http://blog.csdn.net/v_july_v/article/details/7577684)。
而隨機森林Random Forest是一個包含多個決策樹的分類器。至於AdaBoost,則是英文"Adaptive Boosting"(自適應增強)的縮寫,關於AdaBoost可以看下這篇文章《Adaboost 演算法的原理與推導》。GBDT(Gradient Boosting Decision Tree),即梯度上升決策樹演算法,相當於融合決策樹和梯度上升boosting演算法。
引用自:@AntZ
xgboost類似於gbdt的優化版,不論是精度還是效率上都有了提升。與gbdt相比,具體的優點有:
1.損失函式是用泰勒展式二項逼近,而不是像gbdt裡的就是一階導數 2.對樹的結構進行了正則化約束,防止模型過度複雜,降低了過擬合的可能性
3.節點分裂的方式不同,gbdt是用的gini係數,xgboost是經過優化推導後的
引用自:@Xijun LI
題目來源:七月線上官網(www.julyedu.com)——面試題庫——面試大題——機器學習
今日學習推薦
【Spark大資料實戰班】
開課時間:3月16日(本週六)
五位大廠架構師
只教工程實戰和實際應用
諮詢/報名/組團可新增微信客服
julyedukefu_02
掃描下方二維碼
檢視更多課程詳情
☟
長按識別二維碼
助力“金三銀四”
分享一套全體系人工智慧學習資料
600G資料 限時限額0元領
小夥伴們可以屯起來,慢慢學習喔~
掃描下方海報二維碼
立即領取
☟
▼往期推薦▼
神經網路P圖新神器:摘墨鏡戴美瞳都能搞定,加首飾換髮型真假難分 | 程式碼開源
一文詳解機器學習中最好用的提升方法:Boosting 與 AdaBoost
點
諮詢,檢視課程,請點選“閱讀原文”
給我【好看】
你也越好看!
相關文章
- ML《決策樹(四)Bagging 和 Random Forest》randomREST
- 最常用的決策樹演算法!Random Forest、Adaboost、GBDT 演算法演算法randomREST
- 今日面試題分享:解決bias和Variance問題的方法是什麼?面試題
- 今日面試題分享:什麼是最大熵面試題熵
- 今日面試題分享:為什麼xgboost要用泰勒展開,優勢在哪裡?面試題
- Cart迴歸樹、GBDT、XGBoost
- Python機器學習:決策樹001什麼是決策樹Python機器學習
- 今日面試題分享面試題
- 演算法金 | 決策樹、隨機森林、bagging、boosting、Adaboost、GBDT、XGBoost 演算法大全演算法隨機森林
- [機器學習 ]RandomForest、GBDT、XGBoost、lightGBM 原理與區別機器學習randomREST
- 淺談樹模型與整合學習-從決策樹到GBDT模型
- 【Java面試】Mybatis中#{}和${}的區別是什麼?Java面試MyBatis
- python is和==的區別是什麼?Python
- 什麼是決策智慧?
- 什麼是DMN決策模型和符號?模型符號
- 面試官靈魂三問:什麼是SOA?什麼是微服務?SOA和微服務有什麼區別?面試微服務
- 面試題: Webpack 的 plugin 和 loader 有什麼區別面試題WebPlugin
- 什麼是滲透測試?與安全測試的區別是什麼?
- Machine Learning(13)- Random ForestMacrandomREST
- ArrayList和LinkedList的區別是什麼
- cat和vim的區別是什麼?
- reactjs和vuejs的區別是什麼ReactJSVue
- 127.0.0.1和0.0.0.0的區別是什麼?127.0.0.1
- GBDT、XGBoost、LightGBM比較
- 什麼是PCB?什麼是PCBA?PCB和PCBA的區別?
- Python培訓分享:PyQT是什麼?PyQt4和PyQt5的區別是什麼?PythonQT
- 請解釋下href="javascript:void(0)"和href="#"的區別是什麼?JavaScript
- JSONP的原理是什麼?解決什麼問題?JSON
- Mssql和Mongodb區別是什麼SQLMongoDB
- powershell和cmd區別是什麼
- cookie是什麼?和session有什麼區別?CookieSession
- Java和Python是什麼?有什麼區別?JavaPython
- 什麼是 MicroPython?和CPython有什麼區別?Python
- 決策樹減支問題(優化)dfs減支問題優化
- 什麼是HTTP? HTTP 和 HTTPS 的區別?HTTP
- decimal,float和double的區別是什麼?Decimal
- getElementById和querySelector方法的區別是什麼?
- 前端和後端的區別是什麼?前端後端