1. 程式人生 > >Xgboost引數解釋及調參

Xgboost引數解釋及調參

首先xgboost有兩種介面,xgboost自帶API和Scikit-Learn的API,具體用法有細微的差別但不大。

在執行 XGBoost 之前, 我們必須設定三種類型的引數: (常規引數)general parameters,(提升器引數)booster parameters和(任務引數)task parameters。

  • 常規引數與我們用於提升的提升器有關,通常是樹模型或線性模型
  • 提升器引數取決於你所選擇的提升器
  • 學習任務的引數決定了學習場景, 例如迴歸任務可以使用不同的引數進行排序相關的任務
  • 命令列引數的行為與 xgboost 的 CLI 版本相關

本文只介紹xgboost自帶的API,Scikit-Learn的API可以對照參考。

xgboost.train(params, dtrain, num_boost_round=10, evals=(), \
obj=None, feval=None, maximize=False, early_stopping_rounds=None, \
evals_result=None, verbose_eval=True, learning_rates=None, \
xgb_model=None, callbacks=None)

params:這是一個字典,裡面包含著訓練中的引數關鍵字和對應的值,形式如下:

params = {
    'booster':'gbtree'
, 'min_child_weight': 100, 'eta': 0.02, 'colsample_bytree': 0.7, 'max_depth': 12, 'subsample': 0.7, 'alpha': 1, 'gamma': 1, 'silent': 1, 'objective': 'reg:linear', 'verbose_eval': True, 'seed': 12 }

其中具體的引數以下會介紹。

General Parameters

  • booster [default=gbtree]

    • 有兩中模型可以選擇gbtreegblineargbtree使用基於樹的模型進行提升計算,gblinear使用線性模型進行提升計算。預設值為gbtree
  • silent [default=0]

    • 取0時表示打印出執行時資訊,取1時表示以緘默方式執行,不列印執行時資訊。預設值為0。
  • nthread [default to maximum number of threads available if not set]

    • XGBoost執行時的執行緒數。預設值是當前系統可以獲得的最大執行緒數
  • num_pbuffer [set automatically by xgboost, no need to be set by user]

    • size of prediction buffer, normally set to number of training instances. The buffers are used to save the prediction results of last boosting step.
  • num_feature [set automatically by xgboost, no need to be set by user]

    • boosting過程中用到的特徵維數,設定為特徵個數。XGBoost會自動設定,不需要手工設定。

Booster Parameters

  • eta [default=0.3]

    • 為了防止過擬合,更新過程中用到的收縮步長。在每次提升計算之後,演算法會直接獲得新特徵的權重。 eta通過縮減特徵的權重使提升計算過程更加保守。預設值為0.3
    • 取值範圍為:[0,1]
  • gamma [default=0]

    • minimum loss reduction required to make a further partition on a leaf node of the tree. the larger, the more conservative the algorithm will be.
    • range: [0,∞]
  • max_depth [default=6]

    • 數的最大深度。預設值為6
    • 取值範圍為:[1,∞]
  • min_child_weight [default=1]

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

    • Maximum delta step we allow each tree’s weight estimation to be. If the value is set to 0, it means there is no constraint. If it is set to a positive value, it can help making the update step more conservative. Usually this parameter is not needed, but it might help in logistic regression when class is extremely imbalanced. Set it to value of 1-10 might help control the update
    • 取值範圍為:[0,∞]
  • subsample [default=1]

    • 用於訓練模型的子樣本佔整個樣本集合的比例。如果設定為0.5則意味著XGBoost將隨機的衝整個樣本集合中隨機的抽取出50%的子樣本建立樹模型,這能夠防止過擬合。
    • 取值範圍為:(0,1]
  • colsample_bytree [default=1]
    • 在建立樹時對特徵取樣的比例。預設值為1
    • 取值範圍:(0,1]

Task Parameters

  • 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
  • base_score [ default=0.5 ]

    • the initial prediction score of all instances, global bias
  • eval_metric [ default according to objective ]
    • 校驗資料所需要的評價指標,不同的目標函式將會有預設的評價指標(rmse for regression, and error for classification, mean average precision for ranking)
    • 使用者可以新增多種評價指標,對於Python使用者要以list傳遞引數對給程式,而不是map引數list引數不會覆蓋’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
    • [email protected],[email protected]: n can be assigned as an integer to cut off the top positions in the lists for evaluation.
    • “ndcg-”,”map-”,[email protected],[email protected]: 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. training repeatively
    • “gamma-deviance”: [residual deviance for gamma regression]
  • seed[ default=0 ]

    • random number seed.

    • 隨機數的種子。預設值為0

  • dtrain:訓練的資料

  • num_boost_round:這是指提升迭代的次數,也就是生成多少基模型

  • evals:這是一個列表,用於對訓練過程中進行評估列表中的元素。形式是evals = [(dtrain,'train'),(dval,'val')]或者是evals = [(dtrain,'train')],對於第一種情況,它使得我們可以在訓練過程中觀察驗證集的效果

  • obj:自定義目的函式

  • feval:自定義評估函式

  • maximize:是否對評估函式進行最大化

  • early_stopping_rounds:早期停止次數 ,假設為100,驗證集的誤差迭代到一定程度在100次內不能再繼續降低,就停止迭代。這要求evals 裡至少有 一個元素,如果有多個,按最後一個去執行。返回的是最後的迭代次數(不是最好的)。如果early_stopping_rounds存在,則模型會生成三個屬性,bst.best_scorebst.best_iterationbst.best_ntree_limit

  • evals_result:字典,儲存在watchlist中的元素的評估結果。

  • verbose_eval :(可以輸入布林型或數值型),也要求evals裡至少有 一個元素。如果為True,則對evals中元素的評估結果會輸出在結果中;如果輸入數字,假設為5,則每隔5個迭代輸出一次。

  • learning_rates:每一次提升的學習率的列表,

  • xgb_model:在訓練之前用於載入的xgb model。

相關推薦

Xgboost引數解釋調

首先xgboost有兩種介面,xgboost自帶API和Scikit-Learn的API,具體用法有細微的差別但不大。 在執行 XGBoost 之前, 我們必須設定三種類型的引數: (常規引數)general parameters,(提升器引數)boos

XGBoost演算法原理簡介調

簡介 當模型沒有達到預期效果的時候,XGBoost就是資料科學家的最終武器。XGboost是一個高度複雜的演算法,有足夠的能力去學習資料的各種各樣的不規則特徵。 用XGBoost建模很簡單,但是提升XGBoost的模型效果卻需要很多的努力。因為這個演

lightgbm的sklearn接口和原生接口數詳細說明調指點

type eight ssi cti gradient sam tin 原生 decision class lightgbm.LGBMClassifier(boosting_type=‘gbdt‘, num_leaves=31, max_depth=-1, learnin

java-xx引數介紹調優總結

功能開關: 引數 預設值或限制 說明 引數 預設值 功能 -XX:-AllowUserSignalHandlers 限於Linux和Solaris,預設不啟用

kafka叢集Broker端引數設定調優準則建議-kafka 商業環境實戰

1 Distributed streaming platform Apache Kafka® is a distributed streaming platform. What exactly d

【sklearn】利用sklearn訓練LDA主題模型調詳解

人生苦短,我愛python,尤愛sklearn。sklearn不僅提供了機器學習基本的預處理、特徵提取選擇、分類聚類等模型介面,還提供了很多常用語言模型的介面,sklearn.decomposition.LatentDirichletAllocation就

JVM引數總結調

JVM引數總結 引數 描述 UseSeialGC 虛擬機器執行在client模式下的預設值;使用Serial+SerialOld的收集器組合進行記憶體回收 UseP

【opencv2操作之HoughLinesP引數解釋例項展示】

HoughLinesP原函式: 功能:將輸入影象按照給出引數要求提取線段,放在lines中。 lines:是一個vector<Vec4i>,Vec4i是一個包含4個int資料型別的結構體,

100天搞定機器學習|Day56 隨機森林工作原理調實戰(信用卡欺詐預測)

本文是對100天搞定機器學習|Day33-34 隨機森林的補充 前文對隨機森林的概念、工作原理、使用方法做了簡單介紹,並提供了分類和迴歸的例項。 本期我們重點講一下: 1、整合學習、Bagging和隨機森林概念及相互關係 2、隨機森林引數解釋及設定建議 3、隨機森林模型調參實戰 4、隨機森林模型優缺點總結 整

XGBoost-Python完全調指南-引數解釋

在analytics vidhya上看到一篇<Complete Guide to Parameter Tuning in XGBoost in Python>,寫的很好。因此打算翻譯一下這篇文章,也讓自己有更深的印象。具體內容主要翻譯文章的關鍵意思。 原文

深度學習 14. 深度學習調,CNN引數調,各個引數理解和說明以及調整的要領。underfitting和overfitting的理解,過擬合的解釋

本文為原創文章轉載必須註明本文出處以及附上 本文地址超連結以及 博主部落格地址:http://blog.csdn.NET/qq_20259459  和 作者郵箱( [email prot

XGBoost基本引數調

XGBoost基本引數理解與設定 本文討論XGBoost使用過程中除錯引數的基本意義與設定,參考於一篇國外大佬文章。連結在此。 一、基本引數 1. booster [default : gbtree] (1) gbtree:以樹為基礎的模型。

XGBoost調

zju blog gradient web tab www log .cn sting http://scikit-learn.org/stable/modules/ensemble.html#gradient-tree-boosting https://m.th7.cn/

xgboost回歸代碼lgb數說明

集成學習 算法 機器學習 了解xgboost 找到網絡一個圖 侵刪 感謝原作者提供圖https://pic3.zhimg.com/v2-07783eb41e619927e8911b85442b9e38_r.jpg xgboost訓練回歸模型很簡單,按照前面的博客安裝了xgboost庫之後: xgb

xgboost和lightgbm的理解及其調應該關註的點

analytic 精度 PE sam 訓練 pick import 構建 oos 這兩個算法都是集成學習了分類回歸樹模型,先討論是怎麽集成的。集成的方法是 Gradient Boosting比如我要擬合一個數據如下: 第一次建了一個模型如上圖中的折線,效果不是很理想,然後要

XGBoost調思路

最近在上手XGBoost,看到一篇非常棒的部落格,在此分享給大家,同時感謝原作者。 原文出處:https://segmentfault.com/a/1190000014040317   我前面所做的工作基本都是關於特徵選擇的,這裡我想寫的是關於XGBoost引數調整的一些小經驗

XGBoost引數調優完全指南碰到的小問題

其中有三個地方需要注意一下 首先是要對資料進行預處理 # -*- coding: utf-8 -*- """ Created on Wed Sep 19 14:16:42 2018 @author: Administrator """ #--*- coding:u

Xgboost原理、程式碼、調和上線實錄

對於一個演算法工程師而言,xgboost應該算的上是起手式,網上也有各式各樣的教程,這篇部落格主要從原理、程式碼、調參和上線進行覆蓋,進而構建一個直觀的演算法體系;       生成的二叉樹是滿二叉樹還是完全二叉樹?   調參方法

(轉)XGBoost引數調優完全指南

原文(英文)地址:https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/ 原文(翻譯)地址:https://www.2cto.com/kf/

XGBoost 模型 引數解釋

上篇博文介紹了xgboost這個演算法的推導,下面我們在調包使用這個演算法的時候,有一些引數是需要我們理解的。 這裡先講怎麼呼叫xgboost這個包進行運算 首先先引入這個包和資料(包可以用pip install xgboost進行下載) import pan