吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

通過學習PPT地址和xgboost導讀和實戰地址來對xgboost原理和應用分析

c5Gh_DatamingHa ? 2018-01-02 10:18 ? 次閱讀

1、背景

關于xgboost的原理網絡上的資源很少,大多數還停留在應用層面,本文通過學習陳天奇博士的PPT地址和xgboost導讀和實戰地址,希望對xgboost原理進行深入理解。

2、xgboost vs gbdt

說到xgboost,不得不說gbdt。了解gbdt可以看我這篇文章地址,gbdt無論在理論推導還是在應用場景實踐都是相當完美的,但有一個問題:第n顆樹訓練時,需要用到第n-1顆樹的(近似)殘差。從這個角度來看,gbdt比較難以實現分布式(ps:雖然難,依然是可以的,換個角度思考就行),而xgboost從下面這個角度著手

通過學習PPT地址和xgboost導讀和實戰地址來對xgboost原理和應用分析

注:紅色箭頭指向的l即為損失函數;紅色方框為正則項,包括L1、L2;紅色圓圈為常數項。利用泰勒展開三項,做一個近似,我們可以很清晰地看到,最終的目標函數只依賴于每個數據點的在誤差函數上的一階導數和二階導數。

3、原理

(1)定義樹的復雜度對于f的定義做一下細化,把樹拆分成結構部分q和葉子權重部分w。下圖是一個具體的例子。結構函數q把輸入映射到葉子的索引號上面去,而w給定了每個索引號對應的葉子分數是什么。通過學習PPT地址和xgboost導讀和實戰地址來對xgboost原理和應用分析通過學習PPT地址和xgboost導讀和實戰地址來對xgboost原理和應用分析

通過學習PPT地址和xgboost導讀和實戰地址來對xgboost原理和應用分析

這一個目標包含了TT個相互獨立的單變量二次函數。我們可以定義

最終公式可以化簡為

通過學習PPT地址和xgboost導讀和實戰地址來對xgboost原理和應用分析

通過對

然后把

(2)打分函數計算示例

Obj代表了當我們指定一個樹的結構的時候,我們在目標上面最多減少多少。我們可以把它叫做結構分數(structure score)

通過學習PPT地址和xgboost導讀和實戰地址來對xgboost原理和應用分析

(3)枚舉不同樹結構的貪心法

貪心法:每一次嘗試去對已有的葉子加入一個分割

通過學習PPT地址和xgboost導讀和實戰地址來對xgboost原理和應用分析

對于每次擴展,我們還是要枚舉所有可能的分割方案,如何高效地枚舉所有的分割呢?我假設我們要枚舉所有x < a 這樣的條件,對于某個特定的分割a我們要計算a左邊和右邊的導數和。

通過學習PPT地址和xgboost導讀和實戰地址來對xgboost原理和應用分析

我們可以發現對于所有的a,我們只要做一遍從左到右的掃描就可以枚舉出所有分割的梯度和GL和GR。然后用上面的公式計算每個分割方案的分數就可以了。

觀察這個目標函數,大家會發現第二個值得注意的事情就是引入分割不一定會使得情況變好,因為我們有一個引入新葉子的懲罰項。優化這個目標對應了樹的剪枝, 當引入的分割帶來的增益小于一個閥值的時候,我們可以剪掉這個分割。大家可以發現,當我們正式地推導目標的時候,像計算分數和剪枝這樣的策略都會自然地出現,而不再是一種因為heuristic(啟發式)而進行的操作了。

4、自定義損失函數

在實際的業務場景下,我們往往需要自定義損失函數。這里給出一個官方的 鏈接地址

5、Xgboost調參

由于Xgboost的參數過多,使用GridSearch特別費時。這里可以學習下這篇文章,教你如何一步一步去調參。地址

6、python和R對xgboost簡單使用

任務:二分類,存在樣本不均衡問題(scale_pos_weight可以一定程度上解讀此問題)

通過學習PPT地址和xgboost導讀和實戰地址來對xgboost原理和應用分析

通過學習PPT地址和xgboost導讀和實戰地址來對xgboost原理和應用分析

7、Xgboost中比較重要的參數介紹

(1)objective [ default=reg:linear ] 定義學習任務及相應的學習目標,可選的目標函數如下:

  • “reg:linear” –線性回歸。

  • “reg:logistic” –邏輯回歸。

  • “binary:logistic” –二分類的邏輯回歸問題,輸出為概率。

  • “binary:logitraw” –二分類的邏輯回歸問題,輸出的結果為wTx。

  • “count:poisson” –計數問題的poisson回歸,輸出結果為poisson分布。 在poisson回歸中,max_delta_step的缺省值為0.7。(used to safeguard optimization)

  • “multi:softmax” –讓XGBoost采用softmax目標函數處理多分類問題,同時需要設置參數num_class(類別個數)

  • “multi:softprob” –和softmax一樣,但是輸出的是ndata * nclass的向量,可以將該向量reshape成ndata行nclass列的矩陣。沒行數據表示樣本所屬于每個類別的概率。

  • “rank:pairwise” –set XGBoost to do ranking task by minimizing the pairwise loss

(2)’eval_metric’ The choices are listed below,評估指標:

  • rmse”: root mean square error

  • “logloss”: negative log-likelihood

  • “error”: Binary classification error rate. It is calculated as #(wrong cases)/#(all cases). For the predictions, the evaluation will regard the instances with prediction value larger than 0.5 as positive instances, and the others as negative instances.

  • “merror”: Multiclass classification error rate. It is calculated as #(wrong cases)/#(all cases).

  • “mlogloss”: Multiclass logloss

  • “auc”: Area under the curve for ranking evaluation.

  • “ndcg”:Normalized Discounted Cumulative Gain

  • “map”:Mean average precision

  • “ndcg@n”,”map@n”: n can be assigned as an integer to cut off the top positions in the lists for evaluation.

  • “ndcg-“,”map-“,”ndcg@n-“,”map@n-“: In XGBoost, NDCG and MAP will evaluate the score of a list without any positive samples as 1. By adding “-” in the evaluation metric XGBoost will evaluate these score as 0 to be consistent under some conditions.

(3)lambda [default=0]L2 正則的懲罰系數

(4)alpha [default=0]L1 正則的懲罰系數

(5)lambda_bias在偏置上的L2正則。缺省值為0(在L1上沒有偏置項的正則,因為L1時偏置不重要)

(6)eta [default=0.3]為了防止過擬合,更新過程中用到的收縮步長。在每次提升計算之后,算法會直接獲得新特征的權重。 eta通過縮減特征的權重使提升計算過程更加保守。缺省值為0.3取值范圍為:[0,1]

(7)max_depth [default=6]數的最大深度。缺省值為6 ,取值范圍為:[1,∞]

(8)min_child_weight [default=1]孩子節點中最小的樣本權重和。如果一個葉子節點的樣本權重和小于min_child_weight則拆分過程結束。在現行回歸模型中,這個參數是指建立每個模型所需要的最小樣本數。該成熟越大算法越conservative取值范圍為: [0,∞]


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85040
  • GBDT
    +關注

    關注

    0

    文章

    13

    瀏覽量

    3917

原文標題:數據科學家工具箱|xgboost原理以及應用詳解

文章出處:【微信號:DatamingHacker,微信公眾號:深度學習與數據挖掘實戰】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何通過XGBoost解釋機器學習

    本文為大家介紹用XGBoost解釋機器學習。 這是一個故事,關于錯誤地解釋機器學習模型的危險以及正確解釋所帶來的價值。如果你發現梯度提升或隨機森林之類的集成樹模型具有很穩定的準確率,但還是需要對其
    發表于 10-12 11:48 ?1850次閱讀
    如何<b class='flag-5'>通過</b><b class='flag-5'>XGBoost</b>解釋機器<b class='flag-5'>學習</b>

    PyInstaller打包xgboost算法包等可能出現問題是什么

    PyInstaller 打包 xgboost算法包等可能出現問題
    發表于 07-16 14:35

    基于xgboost的風力發電機葉片結冰分類預測 精選資料下載

    xgboost中文叫做極致梯度提升模型,官方文檔鏈接:https://xgboost.readthedocs.io/en/latest/tutorials/model.html2018年9月6日筆記
    發表于 07-12 06:44

    面試中出現有關Xgboost總結

    介紹 Xgboost是GB算法的高效實現,xgboost中的基學習器除了可以是CART(gbtree)也可以是線性分類器(gblinear)
    發表于 03-20 16:48 ?4492次閱讀

    XGBoost原理概述 XGBoost和GBDT的區別

    相比于經典的GBDT,xgboost做了一些改進,從而在效果和性能上有明顯的提升。
    的頭像 發表于 07-16 18:54 ?7.9w次閱讀
    <b class='flag-5'>XGBoost</b>原理概述 <b class='flag-5'>XGBoost</b>和GBDT的區別

    在幾個AWS實例上運行的XGBoost和LightGBM的性能比較

    XGBoost(eXtreme Gradient Boosting)是一個在Gradient Boosting Decision Tree(GBDT)框架下的開源機器學習庫(https://github.com/dmlc/xgboost
    的頭像 發表于 10-24 10:24 ?1506次閱讀

    XGBoost超參數調優指南

    對于XGBoost來說,默認的超參數是可以正常運行的,但是如果你想獲得最佳的效果,那么就需要自行調整一些超參數來匹配你的數據,以下參數對于XGBoost非常重要
    的頭像 發表于 06-15 18:15 ?867次閱讀
    <b class='flag-5'>XGBoost</b>超參數調優指南

    XGBoost中無需手動編碼的分類特征

    XGBoost 中無需手動編碼的分類特征
    的頭像 發表于 07-05 16:30 ?721次閱讀

    XGBoost 2.0介紹

    XGBoost是處理不同類型表格數據的最著名的算法,LightGBM 和Catboost也是為了修改他的缺陷而發布的。近日XGBoost發布了新的2.0版,本文除了介紹讓XGBoost的完整歷史以外
    的頭像 發表于 11-03 10:12 ?535次閱讀
    <b class='flag-5'>XGBoost</b> 2.0介紹

    xgboost超參數調優技巧 xgboost在圖像分類中的應用

    一、XGBoost超參數調優技巧 XGBoost(eXtreme Gradient Boosting)是一種基于梯度提升決策樹(GBDT)的高效梯度提升框架,在機器學習競賽和實際業務應用中取得了卓越
    的頭像 發表于 01-31 15:16 ?86次閱讀

    xgboost在圖像分類中的應用

    XGBoost(eXtreme Gradient Boosting)是一種高效的機器學習算法,它基于梯度提升框架,通過構建多個弱學習器(通常是決策樹)
    的頭像 發表于 01-19 11:16 ?371次閱讀

    xgboost的并行計算原理

    之一。 XGBoost簡介 XGBoost是一種基于梯度提升框架的集成學習算法,它通過構建多個決策樹提高模型的預測性能。與傳統的梯度提升樹
    的頭像 發表于 01-19 11:17 ?376次閱讀

    xgboost與LightGBM的優勢對比

    在機器學習領域,集成學習算法因其出色的性能和泛化能力而受到廣泛關注。其中,XGBoost和LightGBM是兩種非常流行的梯度提升框架。 1. 算法基礎 XGBoost(eXtreme
    的頭像 發表于 01-19 11:18 ?389次閱讀

    使用Python實現xgboost教程

    首先,你需要確保已經安裝了 xgboost 庫。你可以使用 pip 來安裝它: bash復制代碼pip install xgboost 如果你使用的是Anaconda,也可以通過conda來安
    的頭像 發表于 01-19 11:21 ?400次閱讀

    常見xgboost錯誤及解決方案

    XGBoost(eXtreme Gradient Boosting)是一種流行的機器學習算法,用于解決分類和回歸問題。盡管它非常強大和靈活,但在使用過程中可能會遇到一些常見的錯誤。以下是一些常見
    的頭像 發表于 01-19 11:22 ?459次閱讀
    百家乐官网视频象棋| 百家乐官网流水打法| 百家乐官网注册平台排名| 大地百家乐官网的玩法技巧和规则| 乐百家乐彩现金开户| 喜洋洋水果机遥控器| 二八杠生死门| 百家乐官网赌场详解| 百家乐游戏打水方法| 大发888娱乐客户端| 百家乐官网类游戏网站| 百家乐官网博彩免费体验金3| 威尼斯人娱乐城演唱会| 百家乐官网娱乐城彩金| 诺贝尔百家乐官网的玩法技巧和规则 | 百家乐怎么玩最保险| 博亿线上娱乐城| 百家乐官网小路是怎么画的| 百家乐翻牌规则| 博彩娱乐城| 百家乐官网的玩法技巧和规则| 送彩金百家乐平台| 水富县| 赌场风云国语| 百家乐官网试玩1000元| 查找百家乐群| 网上百家乐官网能作弊吗| 澳门百家乐庄闲的玩法| 瑞博娱乐| 百家乐官网筹码14克| 百家乐公式书| 广宁县| 百家乐游戏玩法技巧| bet365娱乐| 嘉年华百家乐官网的玩法技巧和规则| 大发888娱乐城网址| 百家乐官网大路图| 威尼斯人娱乐城图| 足球百家乐官网投注| 百家乐专业赌| 博狗百家乐官网真实|