机器学习训练营LightGBM学习笔记

  • 学习知识点概要

1.LightGBM

2.LightGBM的实现

  • 学习内容

1.LightGBM

LightGBM可以看作是XGBoost的升级豪华版,在获得与XGBoost近似精度的同时,又提供了更快的训练速度与更少的内存消耗。

其优缺点和XGBoost相似

LightGBM底层实现了GBDT算法,并且添加了一系列的新特性:

  1. 基于直方图算法进行优化,使数据存储更加方便、运算更快、鲁棒性强、模型更加稳定等。
  2. 提出了带深度限制的 Leaf-wise 算法,抛弃了大多数GBDT工具使用的按层生长 (level-wise) 的决策树生长策略,而使用了带有深度限制的按叶子生长策略,可以降低误差,得到更好的精度。
  3. 提出了单边梯度采样算法,排除大部分小梯度的样本,仅用剩下的样本计算信息增益,它是一种在减少数据量和保证精度上平衡的算法。
  4. 提出了互斥特征捆绑算法,高维度的数据往往是稀疏的,这种稀疏性启发我们设计一种无损的方法来减少特征的维度。通常被捆绑的特征都是互斥的(即特征不会同时为非零值,像one-hot),这样两个特征捆绑起来就不会丢失信息。

LightGBM是基于CART树的集成模型,它的思想是串联多个决策树模型共同进行决策。

2.LightGBM的实现

采用了英雄联盟的数据

对数据进行了,分布分析等来判断特征的影响

比较详细的调参

  1. num_leaves参数 这是控制树模型复杂度的主要参数,一般的我们会使num_leaves小于(2的max_depth次方),以防止过拟合。由于LightGBM是leaf-wise建树与XGBoost的depth-wise建树方法不同,num_leaves比depth有更大的作用。、

  2. min_data_in_leaf 这是处理过拟合问题中一个非常重要的参数. 它的值取决于训练数据的样本个树和 num_leaves参数. 将其设置的较大可以避免生成一个过深的树, 但有可能导致欠拟合. 实际应用中, 对于大数据集, 设置其为几百或几千就足够了.

  3. max_depth 树的深度,depth 的概念在 leaf-wise 树中并没有多大作用, 因为并不存在一个从 leaves 到 depth 的合理映射。

 针对训练速度的参数调整

  1. 通过设置 bagging_fraction 和 bagging_freq 参数来使用 bagging 方法。
  2. 通过设置 feature_fraction 参数来使用特征的子抽样。
  3. 选择较小的 max_bin 参数。
  4. 使用 save_binary 在未来的学习过程对数据加载进行加速。

 针对准确率的参数调整

  1. 使用较大的 max_bin (学习速度可能变慢)
  2. 使用较小的 learning_rate 和较大的 num_iterations
  3. 使用较大的 num_leaves (可能导致过拟合)
  4. 使用更大的训练数据
  5. 尝试 dart 模式

 针对过拟合的参数调整

  1. 使用较小的 max_bin
  2. 使用较小的 num_leaves
  3. 使用 min_data_in_leaf 和 min_sum_hessian_in_leaf
  4. 通过设置 bagging_fraction 和 bagging_freq 来使用 bagging
  5. 通过设置 feature_fraction 来使用特征子抽样
  6. 使用更大的训练数据
  7. 使用 lambda_l1, lambda_l2 和 min_gain_to_split 来使用正则
  8. 尝试 max_depth 来避免生成过深的树
  • 学习问题与解答

1.这里看到有bin的出现是否表示有分箱?

2.串联决策树,思想和XGBoost是一样的,不同之处在哪里?(CART回归树)

  • 学习思考与总结

这两个模型(XGB和LIGHTXGB)经常在竞赛中同时出现值得研究

你可能感兴趣的:(天池学习笔记,逻辑回归,python,机器学习)