机器学习-lightgbm

1 GBDT的介绍

有监督的学习:分类,回归和排序,通过调整模型的参数使得损失函数最小,可以加正则

 Boosting 是多个模型的线性组合,子模型的增加使得损失函数最小,分为AdaBoosting和Gradient Boosting 

AdaBoosting:基于每个样本的误差大小来调整权重

Gradient Boosting : 修改样本的label。

GBDT : 当Gradient Boosting 中每个model 都是Decision Tree 的时候

 Decision Tree 的学习过程可以分为两种:

1 leaf -wise learning : 不断地寻找分裂后收益最大的叶子节点,快,节点生成是顺序的,不方便 加速

2  level-wise learning 数据的生长是按层,各个节点的分裂可以并行,更多的计算资源

最佳的分类特征是通过计算损失值

Xgboost:基于逆排序的方法,将每个unique feature value 来计算,可以找到特定的feature value 作为分割点,不好的是计算和存贮成本都比较高,特别准确的分割点可能存在过拟合,生长方法是按层生长,缺点没有必要对有的节点计算

LGB: 内存使用少,快,精度高,可并行,支持大规模的数据,支持序列化特征

数的生长方式:选择最大收益的节点,可以在最小的计算代价上建立需要的决策树,需要控制树的深度和每个叶子节点的数据量,降低overfiting 。XGB 是按层的方式去做,

分裂搜索的方法:XGB 是预排序,LGB 是Histogram 算法,将特征值分为很多小桶,在这些桶上分类,存储和计算代价会降低

 分桶优化:用bin 来代替特征。直方图带来了正则化的效果,内存使用量小,不用按照feature 排序,也不用对比feature的值

不用像 预排序那样存储排序的序列

leaf-wise 可以降低训练误差,得到更好的精度,但是可能长出很深的树,有最大深度的限制,

直方图做差: 直方图可以由父节点的直方图减去兄弟节点的直方图,可以用数据量少的直方图做差得到数据量大的直方图,达到加速效果。

不需要离散化,直接使用连续特征,更快。

并行化: feature 并行,data以及voting  并行

加速方法: Bagging(数据 sub-sampling)

Feature sub-sampling

使用连续特征

并行

更好的准确率: 小的学习率和更大的迭代次数,大的叶子节点数量(不过拟合的情况下),CV,更多数据,用dropout

防overfiting:

猜你喜欢

转载自blog.csdn.net/qq_16236875/article/details/89095607