上一次修改时间:2018-06-03 22:03:04

LightGBM

  1. 大纲

    image.png

    image.png

  2. LightGBM

    image.png

    image.png

  3. LightGBM的优化

    image.png

    image.png

    image.png

    QQ图片20180603200453.png注:直方图算法是指将样本点离散化成n人箱子,分裂时,整个箱子一起分裂,即整个箱子在左边,或在右边;XGBoost的近似搜索也类似,但其用的是不直方图,而是分位数;

    image.png

    image.png

    image.png

    image.pngimage.png

    image.pngimage.png算法

    image.png

    注:level-wise(XGBoost采用的方式)是指分裂时按树的层数分裂出一个完整的决策树,如分裂的第一层为2个,第二层为4个,第三层为8个.......,第n层为2^n个;

    leaf-wise(LightGBM采用的方式)每次从当前所有叶子中,找到分裂增益最大(一般也是数据量最大)的叶子节点进行分裂。

    level-wise和leaf-wise的图示: 

    image.png

    image.png 

    注:leaf-wise分裂完成的有可能不是一棵完全树,且每次分裂时,都会忽略层数,从当前所有的叶子节点里进行筛选,如上图中第二个箭头右边的图里,筛选的叶子节点为,第三层的第一个,第四层的第一个和第二个,第二层的第二个; 

    image.png

    image.png 注:histogram做差加速是指,因为分裂后的左节点和右节点的样本数等于其父节点的样本数,所以父节点分裂时,左叶子节点分裂完后,右叶子节点里的样本不需要再次计算,而是直接用父节点的样本减去左叶子节点里的样本得到;

    image.png

    image.png image.png

    image.png 

  4. LightGBM的使用

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    注:max_bin是LightGBM相对XGBoost多出来的一个参数,表示直方图中,一共有多少个箱子,默认为255;

    weight为权重参数,可以对每个样本是否设置权重进行设置;

    image.png 

    注:categorical_feature(类别型特征),可以指定类别型特征的值,默认为auto,自动识别; 

    free_raw_data,默认为true,即生成直方图后,释放到原始数据,从而减小内存使用量;

    image.png 

    注:num_boost_round是弱学习器的数目,默认为100;

    valid_sets:是否有校验集,有的话可以以Datasets的形式放在这个参数中;

    fobj:目标函数;

    feval:评价指标;

    image.png    

    注:early_stopping_rounds同XGBoost,在有校验集时,可以设置过早停止; 

    evals_result:评价性能的结果;

    verbose_eval:是否打印中间结果, 可以设置成一个整数(如10,表示10个中间结果打印一次),如果每个中间结果都打印出来,打印的结果可能太多;

    image.png 

    注:learning_rates:迭代次数;

    训练完成后返回一个学习器;

  5. 交叉验证

    QQ图片20180603212119.png 注:metrics为评价指标;

    返回的结果的评价的历史记录;

    image.png

    image.png  

    注:fobj是指单独调用LightGBM时,参数的名称;objective是指在sklearn中调用LightGBM时,参数的名称;

    LightGBM支持的任务类型为regression(回归)、binary(两类分类)、lambdarank(排序)、multiclass(多类分类); 

    QQ图片20180603213440.png

    注:评价指标的取值;

    image.png

    image.png注:image.png,到这一步时,已经生成了直方图,且默认情况下原始数据也已经释放掉了; 

    image.png

    QQ图片20180603214153.png  注:boosting_type:弱学习器的类型;subsample_for_bin:直方图中,一个bin下面有多少个样本,例如,在均匀分布,可以用一部分样本来代表全部样本;min_split_gain:相当于XGBoost中的gamma,即分裂后,损失的减少小于该值时,停止分裂;min_child_samples:每个节点中最少有多少个样本;subsam-ple:行采样比例;subsample_freq:采样频率,即建多少棵树后,对样本再采一次样;colsample_bytree:列采样,即特征采样比例;

    image.png

    注:如果不使用交叉验证时,则需要使用校验集; 

    image.png

    image.png

    image.png 注:基于树的模型基本都支持feature_importances_(特征重要性),特征重要性可以用于特征选择;

    image.png

    image.png image.png

    image.pngimage.png

    image.png

    image.png

    image.png