XGBoost和LightGBM的参数以及调参

更新时间:2023-05-15 07:18:51 阅读: 评论:0

站长统计
XGBoost和LightGBM的参数以及调参
⼀、XGBoost参数解释
XGBoost的参数⼀共分为三类:
1. 通⽤参数:宏观函数控制。
2. Booster参数:控制每⼀步的booster(tree/regression)。booster参数⼀般可以调控模型的效果和计算代价。我们所说的调
参,很这是⼤程度上都是在调整booster参数。
3. 学习⽬标参数:控制训练⽬标的表现。我们对于问题的划分主要体现在学习⽬标参数上。⽐如我们要做分类还是回归,做⼆分类还是
多分类,这都是⽬标参数所提供的。
Note: 我下⾯介绍的参数都是我觉得⽐较重要的, 完整参数请戳官⽅⽂档
1.通⽤参数
1. booster:我们有两种参数选择,gbtree和gblinear。gbtree是采⽤树的结构来运⾏数据,⽽gblinear是基于线性模型。
2. silent:静默模式,为1时模型运⾏不输出。
3. nthread: 使⽤线程数,⼀般我们设置成-1,使⽤所有线程。如果有需要,我们设置成多少就是⽤多少线程。
2.Booster参数
1. n_estimator: 也作num_boosting_rounds
这是⽣成的最⼤树的数⽬,也是最⼤的迭代次数。
2. learning_rate: 有时也叫作eta,系统默认值为0.3,。
每⼀步迭代的步长,很重要。太⼤了运⾏准确率不⾼,太⼩了运⾏速度慢。我们⼀般使⽤⽐默认值⼩⼀点,0.1左右就很好。
3. gamma:系统默认为0,我们也常⽤0。
在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。gamma指定了节点分裂所需的最⼩损失函数下降值。 这个参数的值越⼤,算法越保守。因为gamma值越⼤的时候,损失函数下降更多才可以分裂节点。所以树⽣成的时候更不容易分裂节点。范围: [0,∞]
给的拼音4. subsample:系统默认为1。
这个参数控制对于每棵树,随机采样的⽐例。减⼩这个参数的值,算法会更加保守,避免过拟合。但是,如果这个值设置得过⼩,它可能会导
注意不可取0
致⽋拟合。 典型值:0.5-1,0.5代表平均采样,防⽌过拟合. 范围: (0,1],注意不可取0
5. colsample_bytree:系统默认值为1。我们⼀般设置成0.8左右。
⽤来控制每棵随机采样的列数的占⽐(每⼀列是⼀个特征)。 典型值:0.5-1范围: (0,1]
6. colsample_bylevel:默认为1,我们也设置为1.
这个就相⽐于前⼀个更加细致了,它指的是每棵树每次节点分裂的时候列采样的⽐例
7. max_depth: 系统默认值为6
我们常⽤3-10之间的数字。这个值为树的最⼤深度。这个值是⽤来控制过拟合的。max_depth越⼤,模型学习的更加具体。设置为0代表没有限制,范围: [0,∞]
8. max_delta_step:默认0,我们常⽤0.
这个参数限制了每棵树权重改变的最⼤步长,如果这个参数的值为0,则意味着没有约束。如果他被赋予了某⼀个正值,则是这个算法更加保守。通常,这个参数我们不需要设置,但是当个类别的样本极不平衡的时候,这个参数对逻辑回归优化器是很有帮助的。
9. lambda:也称reg_lambda,默认值为0。
权重的L2正则化项。(和Ridge regression类似)。这个参数是⽤来控制XGBoost的正则化部分的。这个参数在减少过拟合上很有帮助。
10. alpha:也称reg_alpha默认为0,
权重的L1正则化项。(和Lasso regression类似)。 可以应⽤在很⾼维度的情况下,使得算法的速度更快。
11. scale_pos_weight:默认为1
在各类别样本⼗分不平衡时,把这个参数设定为⼀个正值,可以使算法更快收敛。通常可以将其设置为负样本的数⽬与正样本数⽬的⽐值。
3.学习⽬标参数
o bjec tive [缺省值=r eg:linea r]
r]
reg:linear– 线性回归
reg:logistic – 逻辑回归
binary:logistic – ⼆分类逻辑回归,输出为概率
binary:logitraw – ⼆分类逻辑回归,输出的结果为wTx
count:poisson – 计数问题的poisson回归,输出结果为poisson分布。在poisson回归中,max_delta_step的缺省值为0.7 (ud to safeguard optimization)
multi:softmax – 设置 XGBoost 使⽤softmax⽬标函数做多分类,需要设置参数num_class(类别个数)
multi:softprob – 如同softmax,但是输出结果为ndata*nclass的向量,其中的值是每个数据分为每个类的概率。
eva l_metr ic [缺省值=通过⽬标函数选择]
l_m etr
rm: 均⽅根误差
mae: 平均绝对值误差
logloss: negative log-likelihood
error: ⼆分类错误率。其值通过错误分类数⽬与全部分类数⽬⽐值得到。对于预测,预测值⼤于0.5被认为是正类,其它归为负类。 error@t:不同的划分阈值可以通过 ‘t’进⾏设置
merror: 多分类错误率,计算公式为(wrong cas)/(all cas)
mlogloss: 多分类log损失
auc: 曲线下的⾯积
ndcg: Normalized Discounted Cumulative Gain
核⼼参数,学习控制参数,度量参数等。更数,IO参数,⽬标参数,度量参数,⽹络参数,GPU参数,模型参数,这⾥我常修改的便是核⼼参数,学习控制参数,度量参数等。更数,IO参数,⽬标参数,度量参数,⽹络参数,GPU参数,模型参数,这⾥我常修改的便是
详细的请看LightGBM中⽂⽂档
1.核⼼参数
1. boosting:也称boost,boosting_type.默认是gbdt。
LGB⾥⾯的boosting参数要⽐xgb多不少,我们有传统的gbdt,也有rf,dart,doss,最后两种不太深⼊理解,但是试过,还是gbdt的效果⽐较经典稳定
gbdt, 传统的梯度提升决策树
rf, Random Forest (随机森林)
qq游戏象棋
dart, Dropouts meet Multiple Additive Regression Trees
goss, Gradient-bad One-Side Sampling (基于梯度的单侧采样)
2. num_thread:也称作num_thread,nthread.指定线程的个数。
这⾥官⽅⽂档提到,数字设置成cpu内核数⽐线程数训练效更快(考虑到现在cpu⼤多超线程)。并⾏学习不应该设置成全部线程,这反⽽使得训练速度不佳。
3. application:默认为regression。,也称objective, app这⾥指的是任务⽬标
regression
regression_l2, L2 loss, alias=regression, mean_squared_error, m
regression_l1, L1 loss, alias=mean_absolute_error, mae
huber, Huber loss
fair, Fair loss
poisson, Poisson regression
拔剑四顾心茫然上一句
quantile, Quantile regression
quantile_l2, 类似于 quantile, 但是使⽤了 L2 loss
binary, binary log loss classification application
multi-class classification
multiclass, softmax ⽬标函数, 应该设置好 num_class
multiclassova, One-vs-All ⼆分类⽬标函数, 应该设置好 num_class
cross-entropy application
xentropy, ⽬标函数为 cross-entropy (同时有可选择的线性权重), alias=cross_entropy
xentlambda, 替代参数化的 cross-entropy, alias=cross_entropy_lambda
标签是 [0, 1] 间隔内的任意值
lambdarank, lambdarank application
在 lambdarank 任务中标签应该为 int type, 数值越⼤代表相关性越⾼ (e.g. 0:bad, 1:fair, 2:good, 3:perfect)
label_gain 可以被⽤来设置 int 标签的增益 (权重)
4. valid:验证集选⽤,也称test,valid_data, test_data.⽀持多验证集,以,分割
5. learning_rate:也称shrinkage_rate,梯度下降的步长。默认设置成0.1,我们⼀般设置成0.05-0.2之间
6. num_leaves:也称num_leaf,新版lgb将这个默认值改成31,这代表的是⼀棵树上的叶⼦数精英的英文
7. num_iterations:也称num_iteration, num_tree, num_trees,num_round, num_rounds,num_boost_round。迭代次数
8. device:default=cpu, options=cpu, gpu
为树学习选择设备, 你可以使⽤ GPU 来获得更快的学习速度
班级文化建设内容Note: 建议使⽤较⼩的 max_bin (e.g. 63) 来获得更快的速度
Note: 为了加快学习速度, GPU 默认使⽤32位浮点数来求和. 你可以设置 gpu_u_dp=true 来启⽤64位浮点数, 但是它会使训练速度降低
Note: 请参考 安装指南 来构建 GPU 版本
2.学习控制参数
1. max_depth
default=-1, type=int限制树模型的最⼤深度. 这可以在 #data ⼩的情况下防⽌过拟合. 树仍然可以通过 leaf-wi ⽣长.
< 0 意味着没有限制.
2. feature_fraction:default=1.0, type=double, 0.0 < feature_fraction < 1.0, 也称sub_feature, colsample_bytree
如果 feature_fraction ⼩于 1.0, LightGBM 将会在每次迭代中随机选择部分特征. 例如, 如果设置为 0.8, 将会在每棵树训练之前选择80% 的特征
可以⽤来加速训练电脑城买笔记本
可以⽤来处理过拟合
月经疼3. bagging_fraction:default=1.0, type=double, 0.0 < bagging_fraction < 1.0, 也称sub_row, subsample
类似于 feature_fraction, 但是它将在不进⾏重采样的情况下随机选择部分数据
可以⽤来加速训练
可以⽤来处理过拟合
Note: 为了启⽤ bagging, bagging_freq 应该设置为⾮零值
4. bagging_freq: default=0, type=int, 也称subsample_freq
包饺子活动方案bagging 的频率, 0 意味着禁⽤ bagging. k 意味着每 k 次迭代执⾏bagging
Note: 为了启⽤ bagging, bagging_fraction 设置适当
5. lambda_l1:默认为0,也称reg_alpha,表⽰的是L1正则化,double类型
6. lambda_l2:默认为0,也称reg_lambda,表⽰的是L2正则化,double类型
7. cat_smooth: default=10, type=double

本文发布于:2023-05-15 07:18:51,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/898749.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:参数   设置   学习   分类   回归
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图