达观杯-文本智能处理挑战赛-05

一、LightGBM原理简介

传统的boosting算法(如GBDT和XGBoost)已经有相当好的效率,但是在如今的大样本和高维度的环境下,传统的boosting似乎在效率和可扩展性上不能满足现在的需求了,主要的原因就是传统的boosting算法需要对每一个特征都要扫描所有的样本点来选择最好的切分点,这是非常的耗时。为了解决这种在大样本高纬度数据的环境下耗时的问题,Lightgbm使用了如下两种解决办法:一是GOSS(Gradient-based One-Side Sampling, 基于梯度的单边采样),不是使用所用的样本点来计算梯度,而是对样本进行采样来计算梯度;二是EFB(Exclusive Feature Bundling, 互斥特征捆绑) ,这里不是使用所有的特征来进行扫描获得最佳的切分点,而是将某些特征进行捆绑在一起来降低特征的维度,是寻找最佳切分点的消耗减少。这样大大的降低的处理样本的时间复杂度,但在精度上,通过大量的实验证明,在某些数据集上使用Lightgbm并不损失精度,甚至有时还会提升精度。
大部分决策树的学习通过level-wise策略生长树,如下图所示:
在这里插入图片描述
lightGBM通过left-wise策略生长树。它将选取最大的delta-loss的叶子节点来生长,当生长相同的leaf,left-wise算法可以比level-wise算法减少更多的损失。
当delta较小时,left-wise算法可能会造成过拟合。所以lightGBM可以利用额外的参数max_depth来限制树的深度从而防止过拟合(树的生长仍然通过left-wise策略),如下图所示:
在这里插入图片描述

二、模型实现

lgb_train = lgb.Dataset(X_train, y_train)
lgb_eval = lgb.Dataset(X_train, y_test, reference=lgb_train)

model_lgb=lgb.sklearn.LGBMClassifier(num_leaves=30,learning_rate=0.1,n_estimators=20)
lgb.fit(X_train,y_train)

lgb_y_pred = lgb.predict(X_test)

f1_lgb = f1_score(y_test, y_pred_lgb,average='micro')

模型结果:
在这里插入图片描述

三、网络搜索调参

lgb_grid =lgb.sklearn.LGBMClassifier(num_leaves=30)
param_grid = {
    'learning_rate': [0.01, 0.05, 0.1, 0.5],
    'n_estimators': [20, 30, 40, 50]
}
re_model = GridSearchCV(lgb_grid, param_grid)
re_model.fit(X_train, y_train)

参数简单优化后得到的F1得分为:
在这里插入图片描述

参考:
https://zhuanlan.zhihu.com/p/35155992

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值