ML(12) - XGBoost / LightGBM 参数及用法详解

本文介绍了XGBoost和LightGBM两种算法的原始接口和Sklearn接口,包括各自的主要参数和使用方法。在参数搜索策略部分,详细阐述了如何通过调整min_child_weight、max_depth、gamma、subsample、colsample_bytree、reg_alpha、reg_lambda、scale_pos_weight、num_leaves、min_child_samples、feature_fraction、bagging_fraction、bagging_freq、is_unbalance或scale_pos_weight等参数进行模型优化,并给出了调低学习率和增加迭代次数的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


  • 对于两种算法,官方都提供了两种形式的接口,不同接口的参数有许多别名但作用等价而且对于两种接口都通用。

XGBoost

原始接口

  1. 原始参数
参数名 参数含义
booster ‘gbtree’ 基于树,‘gblinear’基于线性方程,默认:‘gbtree’
verbosity 显示训练资讯详细程度(0~3),默认:1
nthread 训练使用的线程数,默认:取最大空闲可用
eta (别名:learning_rate) 学习率,默认:0.3
gamma (别名:min_split_loss) 树在叶节点上进一步区分所需减少的损失最小值,默认:0。越大越保守,越容易欠拟合,也可避免过拟合。
max_depth 每棵树最大深度,默认:6
min_child_weight 叶节点样本权重小于此值,停止分列,默认1。越大越保守,越容易欠拟合,也可避免过拟合。
subsample 训练样本的采样率,默认1
colsample_bytree 样本特征的采样率,默认1
lambda(别名:reg_lambda) L2正则项,默认1。越大越保守,越容易欠拟合,也可避免过拟合。
alpha(别名:reg_alpha) L1正则项,默认0。越大越保守,越容易欠拟合,也可避免过拟合。
treee_method 树的构建方式,exact/approx/hist/gpu_hist,默认:auto
scale_pos_weight 对于类别数量极度不平衡,建议调整,默认1,通常可采用sum(negative)/sum(postive)。
objective 目标函数,需根据分类或回归等不同任务指定,默认:reg:squarederror 损失平方回归。
eval_metric 评估指标,rmse/auc/aucpr等
seed 随机种子
  1. 主要方法

Train方法:返回booster模型。

参数名 参数含义
params 定义的原始参数,以字典形式传入。
dtrain 训练数据,以DMatrix形式传入。
num_boost_round 迭代提升次数,即树的个数。
evals 训练过程中被观测的评估验证集,与early_stop关联。以list(DMatrix,String)形式传入。
obj 使用自定义目标函数,以function形式传入。
feval 使用自定义评估方式,以function形式传入。
early_stopping_rounds 提早停止,以evals中list的最后一个数据集作为评估
verbose_eval 指定间隔几次显示一次训练资讯。

CV方法: 返回cv过程及结果信息(list)。

参数名 参数含义
params 定义的原始参数,以字典形式传入。
dtrain 训练数据,以DMatrix形式传入。
num_boost_round 迭代提升次数,即树的个数。
nfold cv次数。
metrics 评估指标,与params中的eval_metrics相同。
obj 使用自定义目标函数,以function形式传入。
feval 使用自定义评估方式,以function形式传入。
early_stopping_rounds 提早停止,以evals中list的最后一个数据集作为评估
verbose_eval 指定间隔几次显示一次训练资讯。
seed 随机种子

predict方法:输出概率结果。

  • 使用方式
import xgboost as xgb

'''Train'''
params={
   'booster':'gbtree',
    	'eta': 0.3,
    	'max_depth':10,   
    	'min_child_weight':1,
    	'gamma':0.3, 
    	'subsample':0.8,
    	'colsample_bytree':0.8,
    	'objective': 'binary:logistic',
    	'eval_metric': 'auc',
    	'scale_pos_weight': 1,
    	'lambda':1,  
    	'alpha':1,
   		'seed':666	}
   		
d_train = xgb.DMatrix(X_train, label=y_train)
d_valid = xgb.DMatrix(X_valid, label=y_valid)
d_test = xgb.DMatrix(X_test)
 
model = xgb.train(params, d_train, num_boost_round = 100, 
					  evals = [(d_train, 'train'), (d_valid, 'valid')], 
					  early_stopping_rounds=200, verbose_eval=200)
					  
y_test= model.predict(d_test)

'''CV'''
cvresult = xgb.cv(params, d_train, num_boost_round=100, nfold=3,
                  metrics='auc', early_stopping_rounds=200,verbose_eval=200)
# 最佳迭代次数即num_boost_round
print(cvresult.shape[0])

Sklearn接口

  1. 主要参数
参数名 参数含义
booster ‘gbtree’ 基于树,‘gblinear’基于线性方程,默认:‘gbtree’
verbosity 显示训练资讯详细程度(0~3),默认:1
n_jobd 训练使用的线程数,默认:取最大空闲可用
learning_rate 学习率,默认:0.3
n_estimators 原始接口中的num_boost_round,迭代提升次数,即树的个数。
gamma 别名:min_split_loss。树在叶节点上进一步区分所需减少的损失最小值,默认:0。越大越保守,越容易欠拟合,也可避免过拟合。
max_depth 每棵树最大深度,默认:6
min_child_weight 叶节点样本权重小于此值,停止分列,默认1。越大越保守,越容易欠拟合,也可避免过拟合。
subsample 训练样本的采样率,默认1
colsample_bytree 样本特征的采样率,默认1
reg_lambda L2正则项,默认1。越大越保守,越容易欠拟合,也可避免过拟合。
reg_alpha L1正则项,默认0。越大越保守,越容易欠拟合,也可避免过拟合。
scale_pos_weight 对于类别数量极度不平衡,建议调整,默认1,通常可采用sum(negative)/sum(postive)。
objective 目标函数,需根据分类或回归等不同任务指定,默认:reg:squarederror 损失平方回归。
random_state 随机种子
  1. 主要方法

fit方法:

参数名 参数含义
X 训练样本,以array形式传入。
Y 训练样本label,以array形式传入。
eval_set 训练过程中被观测的评估验证集,与early_stop关联。以list(X,Y)形式传入。
eval_metric 评估指标,也可使用自定义的评估函数
early_stopping_rounds 提早停止,以evals中list的最后一个数据集作为评估
verbose_eval 指定间隔几次显示一次训练资讯。

predict方法: 输出分类结果。
predict_proba方法: 输出样本对应每个类别的概率。

  • 使用方式
from xgboost.sklearn import XGBClassifier

clf = xgb.XGBClassifier( booster='gbtree',n_estimators=100,learning_rate=0.3
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值