LightGBM原理与参数

核心参数

  • num_leaves 叶节点数
    • 结果对最终效果影响较大,越大值越好,太大会出现过拟合,与模型复杂度直接相关(leaf-wise)
  • num_iterations 迭代次数
    • num_iterations, num_round, num_boost_round, num_trees, num_tree
    • 对于多分类问题,LightGBM会构建num_class*num_iterations的树
    • early_stopping_rounds N round后自动停止迭代
  • learning_rate 学习率/步长
    • shrinkage
  • metric 评价函数
    • {‘binary_logloss’, ‘auc’}
  • objective 任务目标
    • 回归regression
      • regression_l1,加了l1正则的回归,等同于绝对值误差
      • regression_l2,等同于均方误差
      • huber,Huber Loss
      • fair,Fair Loss
      • poisson,泊松回归
    • 分类
      • binary,二分类
      • multiclass,多分类
    • 排序
      • lambdarank
  • boosting 模型
    • gbdt,传统的梯度提升决策树
    • rf,随机森林
    • dart,Dropouts meet Multiple Additive Regression Trees
    • goss,Gradient-based One-Side Sampling
  • tree_learner 树的训练方式
    • 主要用来控制树是否并行化训练
    • serial,单机的树学习器
    • feature,特征并行的树学习器
    • data,数据并行的树学习器
  • num_threads 线程数
  • device,设备使用cpu还是gpu
    • cpu
    • gpu

训练控制参数

防止过拟合

  • 树的最大深度max_depth
    • 主要用来避免模型的过拟合,设为负数值则表明不限制
  • 叶节点的最少样本数min_data_in_leaf
  • 叶节点的最小海森值之和min_sum_hessian_in_leaf
  • 列采样feature_fraction,每棵树的特征子集占比,设置在0~1之间,可以加快训练速度,避免过拟合
  • 行采样bagging_fraction,不进行重采样的随机选取部分样本数据,此外需要设置参数bagging_freq来作为采样的频率,即多少轮迭代做一次bagging;
  • 早停止early_stopping_roung,在某一验证数据的某一验证指标当前最后一轮迭代没有提升时停止迭代
  • 正则化
  • lambda_l1
  • lambda_l2
  • 切分的最小收益min_gain_to_split

IO参数

直方图相关
最大直方图数max_bin,特征值装载的最大直方图数目,一般较小的直方图数目会降低训练的准确性但会提升整体的表现,处理过拟合
直方图中最少样本数min_data_in_bin,设置每个直方图中样本数的最小值,同样防止过拟合
特征相关

是否预排序is_pre_partition
是否稀疏is_sparse
类别特征列categorical_feature,声明类别特征对应的列(通过索引标记),仅支持int类型
声明权重列weight,指定一列作为权重列
内存相关

分阶段加载数据two_round,一般LightGBM将数据载入内存进行处理,这样会提升数据的加载速度,但是对于数据量较大时会造成内存溢出,所以此时需要分阶段载入
保存数据为二进制save_binary,将数据文件导出为二进制文件,下次加载数据时就会更快一些
缺失值

是否处理缺失值use_missing
是否将0值作为缺失值zeros_as_missing
目标参数

sigmoid,sigmoid函数中的参数,用于二分类和排序任务
scale_pos_weight,设置正例在二分类任务中的样本占比
初始化为均值boost_from_average,调整初始的分数为标签的均值,加速模型训练的收敛速度,仅用于回归任务
样本类别是否不平衡is_unbalance
num_class,用于多分类

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LightGBM是一种基于决策树的梯度提升框架,它采用了一些优化策略来提高训练速度和准确性。其主要原理如下: 1.决策树算法:LightGBM使用决策树作为基础模型,通过不断迭代来提高模型的准确性。 2.梯度提升算法:LightGBM使用梯度提升算法来训练模型,即通过不断迭代来逐步提高模型的准确性。 3.直方图算法:LightGBM使用直方图算法来加速决策树的训练过程,即将连续的特征值离散化成一个个的区间,然后对每个区间进行统计,从而减少了决策树的分裂次数,提高了训练速度。 4.GOSS算法:LightGBM使用GOSS算法来减少梯度提升算法中的过拟合问题,即通过保留梯度较大的样本来训练模型,从而提高模型的泛化能力。 5.EFB算法:LightGBM使用EFB算法来进一步提高模型的训练速度,即通过对特征进行分组来减少决策树的分裂次数,从而提高训练速度。 下面是一个使用LightGBM训练模型的例子: ```python import lightgbm as lgb import numpy as np import pandas as pd from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split # 加载数据集 data = load_breast_cancer() X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42) # 将数据转换为LightGBM需要的数据格式 train_data = lgb.Dataset(X_train, label=y_train) test_data = lgb.Dataset(X_test, label=y_test) # 设置参数 params = { 'boosting_type': 'gbdt', 'objective': 'binary', 'metric': 'binary_logloss', 'num_leaves': 31, 'learning_rate': 0.05, 'feature_fraction': 0.9 } # 训练模型 model = lgb.train(params, train_data, valid_sets=[test_data]) # 预测结果 y_pred = model.predict(X_test) # 计算准确率 accuracy = np.mean((y_pred > 0.5) == y_test) print('Accuracy:', accuracy) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值