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进行处理,非常感谢!