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,用于多分类

你可能感兴趣的:(#,推荐算法,机器学习,人工智能)