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: