DataWhale集成学习(中)——Task11 XGBoost算法分析与案例调参实例

目 录

  • XGBoost算法
  • XGBoost分类
  • LightGBM算法

XGBoost算法

XGBoost是GBDT算法的高效实现,并进行了算法和工程上的改进,即X(Extreme)GBoosted。
XGBoost是一个优化的分布式梯度增强库
XGBoost提供了并行树提升(也称为GBDT,GBM)
以CART决策树为子模型,通过Gradient Tree Boosting实现多棵CART树的集成学习,得到最终模型

XGBoost的参数设置(括号内的名称为sklearn接口对应的参数名字):
推荐博客:https://link.zhihu.com/?target=https%3A//blog.csdn.net/luanpeng825485697/article/details/79907149
推荐官方文档:https://link.zhihu.com/?target=https%3A//xgboost.readthedocs.io/en/latest/parameter.html
XGBoost的参数

  1. 通用参数:
    booster:弱学习器,gbtree(默认)、gblinear或dart
    nthread:并行线程数
    verbosity:有效信息的详细程度,0(静默),1(警告),2(信息),3(调试)
  2. 任务参数(用于控制理想的优化目标和每一步结果的度量方法)
    objective:默认=reg:squarederror,表示最小平方误差
    eval_metric:验证数据的评估指标,将根据目标分配默认指标(回归均方根,分类误差,排名的平均平均精度),用户可以添加多个评估指标
  3. 命令行参数(很少用)

XGBoost的调参的一般步骤:

  1. 确定学习速率和提升参数调优的初始值
  2. max_depth 和 min_child_weight 参数调优
  3. gamma参数调优
  4. subsample 和 colsample_bytree 参数优
  5. 正则化参数alpha调优
  6. 降低学习速率和使用更多的决策树

XGBoost分类

from sklearn.datasets import load_iris
import xgboost as xgb
from xgboost import plot_importance
from matplotlib import pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score   # 准确率
# 加载样本数据集
iris = load_iris()
X,y = iris.data,iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1234565) # 数据集分割

# 算法参数
params = {
     
    'booster': 'gbtree',
    'objective': 'multi:softmax',
    'num_class': 3,
    'gamma': 0.1,
    'max_depth': 6,
    'lambda': 2,
    'subsample': 0.7,
    'colsample_bytree': 0.75,
    'min_child_weight': 3,
    'silent': 0,
    'eta': 0.1,
    'seed': 1,
    'nthread': 4,
}

plst = params.items()

dtrain = xgb.DMatrix(X_train, y_train) # 生成数据集格式
num_rounds = 500
model = xgb.train(plst, dtrain, num_rounds) # xgboost模型训练

# 对测试集进行预测
dtest = xgb.DMatrix(X_test)
y_pred = model.predict(dtest)

# 计算准确率
accuracy = accuracy_score(y_test,y_pred)
print("accuarcy: %.2f%%" % (accuracy*100.0))

# 显示重要特征
plot_importance(model)
plt.show()

DataWhale集成学习(中)——Task11 XGBoost算法分析与案例调参实例_第1张图片

LightGBM算法

LightGBM也是一类集成算法,是在XGBoost的基础上进行了优化,算法本质没有很大的区别
LightGBM的优点:

  • 更快的训练效率
  • 内存使用
  • 更高的准确率
  • 支持并行化学习
  • 可以处理大规模数据
  1. 核心参数
    objective(objective,app ,application):损失函数
    boosting :默认gbdt,设置提升类型,选项有gbdt,rf,dart,goss
    data(train,train_data,train_data_file,data_filename):用于训练的数据或数据file
    valid (test,valid_data,valid_data_file,test_data,test_data_file,valid_filenames):验证/测试数据的路径,LightGBM将输出这些数据的指标

  2. 用于控制模型学习过程的参数
    对树模型的控制(max_depth、min_data_in_leaf、feature_fraction、bagging_fraction)
    early-stopping
    正则化系数(lambda_l1、lambda_l2)

  3. 度量参数
    metric
    train_metric(training_metric, is_training_metric):默认=False,如果你需要输出训练的度量结果则设置 true

  4. GPU参数
    gpu_device_id

参考资料:
1.DataWhale开源资料
2.机器学习集成学习之XGBoost(基于python实现)https://zhuanlan.zhihu.com/p/143009353
3.灵魂拷问,你看过Xgboost原文吗?https://zhuanlan.zhihu.com/p/86816771
4.无痛看懂LightGBM原文https://zhuanlan.zhihu.com/p/89360721
5.XGBoost官方文档:https://xgboost.readthedocs.io/en/latest/python/python_intro.html
6.XGBoost总结:https://zhuanlan.zhihu.com/p/143009353
7.XGBoost详细攻略:
具体的api请查看:https://xgboost.readthedocs.io/en/latest/python/python_api.html
推荐github:https://github.com/dmlc/xgboost/tree/master/demo/guide-python
8.LightGBM参数说明:
推荐文档1:https://lightgbm.apachecn.org/#/docs/6
推荐文档2:https://lightgbm.readthedocs.io/en/latest/Parameters.html

你可能感兴趣的:(Datawhale零基础入门,集成学习入门,机器学习)