R语言XGBoost参数详解

R语言XGBoost参数详解

  • 引言
  • XGBoost算法原理
  • 参数详解
  • 示例

引言

XGBoost算法在Kaggle和天池数据科学竞赛中备受数据科学竞赛者的推崇,据说在Kaggle数据科学竞赛中有一半的获奖者使用了XGBoost算法。下面主要介绍XGBoost算法的参数。

XGBoost算法原理

XGBoost算法的原理

参数详解

,.
对于主要参数的一些解读:
控制过拟合
:学习率是用来约束的预测值,比如在模型中第一个对第一个样本的预测值为4.0,如果设置的值为,那么对于第一个样本的预测在此学习率下是.
:控制树的深度,当树的深度过大时存在过拟合问题,同时会使用大量的内存.
:最小的叶节点的权重,如果在树的某一次分裂中使得分裂后叶节点的小于,则停止这一步的分裂.
:在一棵树的叶节点上创建一个新的分支时要求的最小loss减少值.
抽样使得模型更加稳健
:训练实例中的子样本比例,如果将设置为0.5,将意味着在训练过程中会随机抽取的数据进行训练.并且在之后的每次建立新的树模型时都会抽的样本.
:在创建一棵树的同时对列进行抽样.
:控制每一层的采样比例.
:控制叶节点分裂时的采样比例.
:在线性分类器中对权重的L2正则化的值.
:在线性分类器中对权重的L1正则化的值.
:在线性分类器中对偏差L1正则化的值.
学习任务参数
:均方根误差, 1 n ∑ i = 1 n ( y i ? y i ^ ) 2 sqrt{frac{1}{n}sum_{i=1}^{n}(y_{i}-hat{y_{i}})^{2}} n1?i=1n?(yi??yi?^?)2 ?.
:均方根对数误差, 1 n ∑ i = 1 n ( l o g ( y i + 1 ^ ) ? l o g ( y i + 1 ) ) 2 sqrt{frac{1}{n}sum_{i=1}^{n}(log(hat{y_{i}+1})-log(y_{i}+1))^{2}} n1?i=1n?(log(yi?+1^?)?log(yi?+1))2 ?.
:分类问题中的logistic函数.
:Pseudo Huber损失函数.
:二分类问题中逻辑回归输出概率.
:二分类问题中逻辑回归输出经过logistic转换前的值.
:svm的目标函数,其输出是0或者1.
:计数数据的泊松回归,输出为泊松分布的均值.
:半参数COX回归
:多分类问题中的softmax回归.
:softmax的输出为.
:pairwise模型
:listwise模型
:pointwise模型
:tweedie回归
:对于所有样本预测为正样本的全局偏置(the initial prediction score of all instances, global bia)。如果迭代次数够多,改变这个参数对结果不会有影响。
:验证数据的评估指标,具体请参考以下链接:
XGBoost参数
:打印信息的详细程度.
:并行计算的核数。默认使用最大.
:用于评估模型性能的训练集与测试集.
:基模型的数量.
:在每次的建立基模型之后会对基模型进行回调。其中包括参数,预测值等。
以上主要是回顾了中的一些主要参数,希望可以帮助到大家.

示例

> library(xgboost)> data(agaricus.train, package='xgboost')> data(agaricus.test, package='xgboost')> dtrain  with(agaricus.train, xgb.DMatrix(data, label = label))> dtest  with(agaricus.test, xgb.DMatrix(data, label = label))> watchlist  list(train = dtrain, eval = dtest)> > param  list(max_depth = 2, eta = 1, verbosity = 0, nthread = 2,+objective = "binary:logistic", eval_metric = "auc")> bst  xgb.train(param, dtrain, nrounds = 2, watchlist) [1]     train-auc:0.958228      eval-auc:0.960373 [2]     train-auc:0.981413      eval-auc:0.979930 > > str(bst)List of 9 $ handle        :Class 'xgb.Booster.handle' externalptr>  $ raw           : raw [1:5756] 7b 4c 00 00 ... $ niter         : num 2 $ evaluation_log:Classes ‘data.table’ and 'data.frame':        2 obs. of  3 variables:  ..$ iter     : num [1:2] 1 2  ..$ train_auc: num [1:2] 0.958 0.981  ..$ eval_auc : num [1:2] 0.96 0.98  ..- attr(*, ".internal.selfref")=externalptr>  $ call          : language xgb.train(params = param, data = dtrain, nrounds = 2, watchlist = watchlist) $ params        :List of 7  ..$ max_depth          : num 2  ..$ eta : num 1  ..$ verbosity          : num 0  ..$ nthread            : num 2  ..$ objective          : chr "binary:logistic"  ..$ eval_metric        : chr "auc"  ..$ validate_parameters: logi TRUE $ callbacks     :List of 2  ..$ cb.print.evaluation:function (env = parent.frame()).. ..- attr(*, "call")= language cb.print.evaluation(period = print_every_n)  .. ..- attr(*, "name")= chr "cb.print.evaluation"  ..$ cb.evaluation.log  :function (env = parent.frame(), finalize = FALSE).. ..- attr(*, "call")= language cb.evaluation.log()  .. ..- attr(*, "name")= chr "cb.evaluation.log" $ feature_names : chr [1:126] "cap-shape=bell" "cap-shape=conical" "cap-shape=convex" "cap-shape=flat" ... $ nfeatures     : int 126 - attr(*, "class")= chr "xgb.Booster"> bst$evaluation_log   iter train_auc  eval_auc1:    1 0.9582280 0.96037332:    2 0.9814132 0.9799301

来源:嘛里嘛里哄

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年8月1日
下一篇 2022年8月1日

相关推荐