- 对于两种算法,官方都提供了两种形式的接口,不同接口的参数有许多别名但作用等价而且对于两种接口都通用。
XGBoost
原始接口
- 原始参数
参数名 | 参数含义 |
---|---|
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 | 随机种子 |
- 主要方法
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接口
- 主要参数
参数名 | 参数含义 |
---|---|
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 | 随机种子 |
- 主要方法
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