lightGBM简述

lightGBM简介

     xgboost的出现,让数据民工们告别了传统的机器学习算法:RF、GBM、SVM ……..  现在微软推出了一个新的boosting框架,想要挑战xgboost的江湖地位。

顾名思义,lightGBM包含两个关键点:light即轻量级,GBM 梯度提升机

LightGBM 是一个梯度 boosting 框架,使用基于学习算法的决策树。

lightGBM特点

概括来说,lightGBM主要有以下特点:

  • 基于Histogram的决策树算法

  • 带深度限制的Leaf-wise的叶子生长策略

  • 直方图做差加速

  • 直接支持类别特征(Categorical Feature)

  • Cache命中率优化

  • 基于直方图的稀疏特征优化

  • 多线程优化

前2个特点使我们尤为关注的。

Histogram算法

    直方图算法的基本思想:先把连续的浮点特征值离散化成k个整数,同时构造一个宽度为k的直方图。遍历数据时,根据离散化后的值作为索引在直方图中累积统计量,当遍历一次数据后,直方图累积了需要的统计量,然后根据直方图的离散值,遍历寻找最优的分割点。

带深度限制的Leaf-wise的叶子生长策略

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

    Leaf-wise则是一种更为高效的策略:每次从当前所有叶子中,找到分裂增益最大的一个叶子,然后分裂,如此循环。因此同Level-wise相比,在分裂次数相同的情况下,Leaf-wise可以降低更多的误差,得到更好的精度。

    Leaf-wise的缺点:可能会长出比较深的决策树,产生过拟合。因此LightGBM在Leaf-wise之上增加了一个最大深度限制,在保证高效率的同时防止过拟合。

lightGBM主要参数说明

(1)num_leaves   LightGBM使用的是 leaf-wise 的算法,因此在调节树的复杂程度时,使用的是  num_leaves  而不是 max_depth。大致换算关系:num_leaves = 2^(max_depth)

(2)样本分布非平衡数据集:可以  param[‘is_unbalance’]=’true’

(3)Bagging参数:bagging_fraction+bagging_freq(必须同时设置)、feature_fraction

(4)min_data_in_leaf、min_sum_hessian_in_leaf

参数使用例子

// 01. train set and test set
train_data = lgb.Dataset(dtrain[predictors],label=dtrain[target],feature_name=list(dtrain[predictors].columns), categorical_feature=dummies)

test_data = lgb.Dataset(dtest[predictors],label=dtest[target],feature_name=list(dtest[predictors].columns), categorical_feature=dummies)

// 02. parameters
param = {
    'max_depth':6,
    'num_leaves':64,
    'learning_rate':0.03,
    'scale_pos_weight':1,
    'num_threads':40,
    'objective':'binary',
    'bagging_fraction':0.7,
    'bagging_freq':1,
    'min_sum_hessian_in_leaf':100
}

param['is_unbalance']='true'
param['metric'] = 'auc'

// 03. cv and train
bst=lgb.cv(param,train_data, num_boost_round=1000, nfold=3, early_stopping_rounds=30)

estimators = lgb.train(param,train_data,num_boost_round=len(bst['auc-mean']))

// 04. test predict
ypred = estimators.predict(dtest[predictors])


极端随机树是一种决策树的变体,它通过在每个节点上随机选择特征和切分点来构建树,并且在每个节点上使用随机的子样本来进行训练。它的优点在于可以减少过拟合,加快训练速度。 装袋法(Bagging)是一种集成学习方法,它通过随机有放回的抽样来生成多个训练集,然后在每个训练集上训练一个基模型,最终通过平均或投票的方式来进行预测。 随机森林是一种基于装袋法的集成学习算法,它通过构建多棵决策树来进行预测,每棵决策树都是在一个随机的子样本上进行训练,而且在每个节点上随机选择特征和切分点。 Adaboost是一种基于装袋法的集成学习算法,它通过加权的方式来训练多个基模型,每个基模型都是在上一个模型分类错误的样本集上进行训练的,最终通过加权投票的方式来进行预测。 GBRT(Gradient Boosting Regression Tree)是一种基于梯度提升框架的集成学习算法,它通过串行的方式来训练多个基模型,每个基模型都是在之前模型的残差上进行训练的,最终通过累加基模型的预测值来得到最终的预测结果。 XGBoost是一种基于GBRT算法的优化版本,它通过增加正则化项、使用特定的分裂点搜索策略和并行化等方式来提高模型的性能和训练速度。 LightGBM是一种基于GBDT算法的优化版本,它通过使用基于直方图的特征分裂算法、梯度单边采样等方式来提高模型的性能和训练速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值