跳到主要内容

LightGBM回归使用文档

组件名称LightGBM回归
工具集机器学习/回归/LightGBM回归
组件作者雪浪云-燕青
文档版本1.0
功能LightGBM回归算法
镜像名称ml_components:3
开发语言Python

组件原理

GBDT (Gradient Boosting Decision Tree) 是机器学习中一个长盛不衰的模型,其主要思想是利用弱分类器(决策树)迭代训练以得到最优模型,该模型具有训练效果好、不易过拟合等优点。GBDT不仅在工业界应用广泛,通常被用于多分类、点击率预测、搜索排序等任务;在各种数据挖掘竞赛中也是致命武器,据统计Kaggle上的比赛有一半以上的冠军方案都是基于GBDT。而LightGBM(Light Gradient Boosting Machine)是一个实现GBDT算法的框架,支持高效率的并行训练,并且具有更快的训练速度、更低的内存消耗、更好的准确率、支持分布式可以快速处理海量数据等优点。

常用的机器学习算法,例如神经网络等算法,都可以以mini-batch的方式训练,训练数据的大小不会受到内存限制。而GBDT在每一次迭代的时候,都需要遍历整个训练数据多次。如果把整个训练数据装进内存则会限制训练数据的大小;如果不装进内存,反复地读写训练数据又会消耗非常大的时间。尤其面对工业级海量的数据,普通的GBDT算法是不能满足其需求的。

LightGBM提出的主要原因就是为了解决GBDT在海量数据遇到的问题,让GBDT可以更好更快地用于工业实践。

在Histogram算法之上,LightGBM进行进一步的优化。首先它抛弃了大多数GBDT工具使用的按层生长 (level-wise) 的决策树生长策略,而使用了带有深度限制的按叶子生长 (leaf-wise) 算法。

XGBoost 采用 Level-wise 的增长策略,该策略遍历一次数据可以同时分裂同一层的叶子,容易进行多线程优化,也好控制模型复杂度,不容易过拟合。但实际上Level-wise是一种低效的算法,因为它不加区分的对待同一层的叶子,实际上很多叶子的分裂增益较低,没必要进行搜索和分裂,因此带来了很多没必要的计算开销。

LightGBM采用Leaf-wise的增长策略,该策略每次从当前所有叶子中,找到分裂增益最大的一个叶子,然后分裂,如此循环。因此同Level-wise相比,Leaf-wise的优点是:在分裂次数相同的情况下,Leaf-wise可以降低更多的误差,得到更好的精度;Leaf-wise的缺点是:可能会长出比较深的决策树,产生过拟合。因此LightGBM会在Leaf-wise之上增加了一个最大深度的限制,在保证高效率的同时防止过拟合。

输入桩

支持单个csv文件输入。

输入端子1

  • 端口名称:训练数据
  • 输入类型:Csv文件
  • 功能描述: 输入用于训练的数据

输出桩

支持sklearn模型输出。

输出端子1

  • 端口名称:输出模型
  • 输出类型:sklearn模型
  • 功能描述: 输出训练好的模型用于预测

参数配置

增强类型

  • 功能描述:增强类型
  • 必选参数:是
  • 默认值:gbdt

树的最大叶节点数量

  • 功能描述:树的最大叶节点数量
  • 必选参数:是
  • 默认值:31

最大深度

  • 功能描述:树的最大深度
  • 必选参数:是
  • 默认值:500

学习率

  • 功能描述:增强学习率
  • 必选参数:是
  • 默认值:0.1

增强树的数量

  • 功能描述:需要拟合的增强树的数量
  • 必选参数:是
  • 默认值:100

构建分桶的样本数量

  • 功能描述:构建分桶的样本数量
  • 必选参数:是
  • 默认值:20000

最小损失减少

  • 功能描述:在树的叶节点上进行进一步分区所需的最小损失减少
  • 必选参数:是
  • 默认值:1

叶子节点所需的实例权重的最小和

  • 功能描述:叶子节点所需的实例权重的最小和
  • 必选参数:是
  • 默认值:0.001

叶子节点所需的最小样本数

  • 功能描述:叶子节点所需的最小样本数
  • 必选参数:是
  • 默认值:20

训练样本比例

  • 功能描述:训练样本比例
  • 必选参数:是
  • 默认值:1

样本的频率

  • 功能描述:小于0代表没有激活
  • 必选参数:是
  • 默认值:0

构建每棵树时列的样本比率

  • 功能描述:构建每棵树时列的样本比率
  • 必选参数:是
  • 默认值:1

L1正则化

  • 功能描述:L1正则化
  • 必选参数:是
  • 默认值:0

L2正则化

  • 功能描述:L2正则化
  • 必选参数:是
  • 默认值:0

特征重要性类型

  • 功能描述:特征重要性类型
  • 必选参数:是
  • 默认值:true

需要训练

  • 功能描述:该模型是否需要训练,默认为需要训练。
  • 必选参数:是
  • 默认值:true

特征字段

  • 功能描述:特征字段
  • 必选参数:是
  • 默认值:(无)

识别字段

  • 功能描述:识别字段
  • 必选参数:是
  • 默认值:(无)

使用方法

  • 将组件拖入到项目中
  • 与前一个组件输出的端口连接(必须是csv类型)
  • 点击运行该节点

测试用例

  • 模板

  • 右面板配置

  • 查看结果