XGBoost作为机器学习的一个基础方法,在多因子模型中作为一个模型被使用,是一个非常有效的非线性训练方法。Python中也有很多库来帮助我们实现模型的训练过程。
这篇文章不介绍XGBoost的原理,主要介绍在多因子模型中,使用XGBoost模型训练时候的一些参数调整和问题。主要利用Python的函数包来实现。
一、模型参数
clf = XGBClassifier(learning_rate=0.05,
n_estimators=500, # 树的个数--1000棵树建立xgboost
max_depth=6, # 树的深度
min_child_weight = 1, # 叶子节点最小权重
gamma=0.1, # 惩罚项中叶子结点个数前的参数
subsample=0.8, # 随机选择80%样本建立决策树
colsample_btree=0.8, # 随机选择80%特征建立决策树
objective='binary:logistic',# 指定损失函数
scale_pos_weight=5, # 解决样本个数不平衡的问题
seed=1000,
nthread=20, # CPU线程数
)
clf.fit(X,y,eval_metric='auc')#训练clf
clf.predict(X_test) #输出预测结果
clf.predict_proba(x_test) #输出预测的概率值
(1)n_estimators:总迭代次数,决策树的个数
(2)learning_rate:学习率,控制每次迭代更新权重时的步长
-
值越小,训练越慢
默认0.3,典型值为0.01-0.2
(3)max_depth:决策树的深度
-
值越大,越容易过拟合;值越小,越容易欠拟合