lightgbm

华为云·垃圾分类亚军方案分享

允我心安 提交于 2019-11-30 18:01:35
导语 结束比赛有几天了,这几天一直在处理前段时间堆积的工作,今天得空对自己的方案进行梳理总结。今年7月多结束魔镜杯后,将之前的内容整理了一下,刚好看到华为垃圾分类比赛,由于我的工作内容还是偏图像,所以就想玩玩,有幸拿了一个亚军。 这次比赛是基于华为云的modelArts平台,免费的gpu硬件环境,全新的结果提交验证方法。感谢组织方华为云,喜欢打比赛的小伙伴也可以多留意该平台,会不定期举办各种数据类竞赛。这次我们队共有三人:谢赋(老虎)、舒欣(up)和文瑞(一休),大家交流分工合作,才能不断奋力前进。这次分享主要是针对决赛阶段,该阶段要求模型的推理时间不能大于100ms,不能使用融合和TTA。故关于模型融合和TTA技巧,本次不会涉及到,后面还会有图像分类的专题分享。 一 解题思路 拿到数据后,我们首先做了数据分析。统计数据样本分布,尺寸分布,图片形态等,基于分析可以做一些针对性的数据预处理算法,对后期的模型训练会有很大的帮助。 选择好的baseline。需要不断的尝试各种现有的网络结构,进行结果对比,挑选出适合该网络的模型结构,然后基于该模型进行不断的调参,调试出性能较好的参数。 做结果验证,分析badcase。将上述模型在验证集上做结果验证,找出错误样本,分析出错原因,然后针对性的调整网络和数据。 基于新数据和模型,再次进行模型调优 二 数据分析(EDA) 原始共有43个类别

XGBoost和LightGBM的参数以及调参

℡╲_俬逩灬. 提交于 2019-11-28 19:59:22
一、XGBoost参数解释 XGBoost的参数一共分为三类: 通用参数 :宏观函数控制。 Booster参数 :控制每一步的booster(tree/regression)。booster参数一般可以调控模型的效果和计算代价。我们所说的调参,很这是大程度上都是在调整booster参数。 学习目标参数 :控制训练目标的表现。我们对于问题的划分主要体现在学习目标参数上。比如我们要做分类还是回归,做二分类还是多分类,这都是目标参数所提供的。 Note: 我下面介绍的参数都是我觉得比较重要的, 完整参数请戳 官方文档 1.通用参数 booster :我们有两种参数选择, gbtree 和 gblinear 。gbtree是采用树的结构来运行数据,而gblinear是基于线性模型。 silent :静默模式,为 1 时模型运行不输出。 nthread : 使用线程数,一般我们设置成 -1 ,使用所有线程。如果有需要,我们设置成多少就是用多少线程。 2.Booster参数 n_estimator : 也作 num_boosting_rounds 这是生成的最大树的数目,也是最大的迭代次数。 learning_rate : 有时也叫作 eta ,系统默认值为 0.3 ,。 每一步迭代的步长,很重要。太大了运行准确率不高,太小了运行速度慢。我们一般使用比默认值小一点, 0.1 左右就很好。

High AUC but bad predictions with imbalanced data

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-28 10:11:50
I am trying to build a classifier with LightGBM on a very imbalanced dataset. Imbalance is in the ratio 97:3 , i.e.: Class 0 0.970691 1 0.029309 Params I used and the code for training is as shown below. lgb_params = { 'boosting_type': 'gbdt', 'objective': 'binary', 'metric':'auc', 'learning_rate': 0.1, 'is_unbalance': 'true', #because training data is unbalance (replaced with scale_pos_weight) 'num_leaves': 31, # we should let it be smaller than 2^(max_depth) 'max_depth': 6, # -1 means no limit 'subsample' : 0.78 } # Cross-validate cv_results = lgb.cv(lgb_params, dtrain, num_boost_round=1500,

从结构到性能,一文概述XGBoost、Light GBM和CatBoost的同与不同

*爱你&永不变心* 提交于 2019-11-27 19:01:11
尽管近年来神经网络复兴并大为流行,但是 boosting 算法在训练样本量有限、所需训练时间较短、缺乏调参知识等场景依然有其不可或缺的优势。本文从算法结构差异、每个算法的分类变量时的处理、算法在数据集上的实现等多个方面对 3 种代表性的 boosting 算法 CatBoost、Light GBM 和 XGBoost 进行了对比;虽然本文结论依据于特定的数据集,但通常情况下,XGBoost 都比另外两个算法慢。 最近,我参加了 kaggle 竞赛 WIDS Datathon,并通过使用多种 boosting 算法,最终排名前十。从那时开始,我就对这些算法的内在工作原理非常好奇,包括调参及其优劣势,所以有了这篇文章。尽管最近几年神经网络复兴,并变得流行起来,但我还是更加关注 boosting 算法,因为在训练样本量有限、所需训练时间较短、缺乏调参知识的场景中,它们依然拥有绝对优势。 2014 年 3 月,XGBOOST 最早作为研究项目,由陈天奇提出 2017 年 1 月,微软发布首个稳定版 LightGBM 2017 年 4 月,俄罗斯顶尖技术公司 Yandex 开源 CatBoost 由于 XGBoost(通常被称为 GBM 杀手)已经在机器学习领域出现了很久,如今有非常多详细论述它的文章,所以本文将重点讨论 CatBoost 和 LGBM,在下文我们将谈到: 算法结构差异

High AUC but bad predictions with imbalanced data

試著忘記壹切 提交于 2019-11-27 03:26:11
问题 I am trying to build a classifier with LightGBM on a very imbalanced dataset. Imbalance is in the ratio 97:3 , i.e.: Class 0 0.970691 1 0.029309 Params I used and the code for training is as shown below. lgb_params = { 'boosting_type': 'gbdt', 'objective': 'binary', 'metric':'auc', 'learning_rate': 0.1, 'is_unbalance': 'true', #because training data is unbalance (replaced with scale_pos_weight) 'num_leaves': 31, # we should let it be smaller than 2^(max_depth) 'max_depth': 6, # -1 means no

Task4 LightGBM算法梳理

别来无恙 提交于 2019-11-27 02:16:35
文章目录 Task4 LightGBM算法梳理 1. LightGBM 2. LightGBM的起源 3. Histogram VS pre-sorted 4. leaf-wise VS level-wise 5. 特征并行和数据并行 6. 顺序访问梯度 7. 支持类别特征 8. 应用场景 9. sklearn参数 10. CatBoost(了解) Task4 LightGBM算法梳理 1. LightGBM 2. LightGBM的起源 3. Histogram VS pre-sorted 4. leaf-wise VS level-wise 5. 特征并行和数据并行 6. 顺序访问梯度 7. 支持类别特征 8. 应用场景 9. sklearn参数 10. CatBoost(了解) 来源: https://blog.csdn.net/qq1003944124/article/details/99285741

通俗理解LightGBM算法

元气小坏坏 提交于 2019-11-26 21:48:54
机器学习是世界上发展最快的领域之一,经常会有一系列的新算法发布,最近发现微软之前推出的一个boosting框架– LightGBM ,已经被广泛应用在 kaggle 数据竞赛中,看来是想要挑战xgboost的江湖地位,但对于数据挖掘(竞赛)爱好者来说,又多了一项好工具。本文将用通俗易懂的方式介绍什么是 LightGBM算法以及如何使用LightGBM进行实战? 什么是LightGBM? LightGBM 是一个梯度提升 boosting 框架,使用基于学习算法的决策树。它旨在实现分布式和高效率,具有以下优点: 更快的训练效率 低内存使用 更好的准确率 支持并行学习和 GPU 学习 可处理大规模数据 分类特征支持 随着数据量与日俱增,传统的数据科学算法运行的速度有点跟不上节奏,而LightGBM的高速度并支持GPU学习等优点,使得数据科学家们广泛使用此算法进行数据科学应用的开发。 与其他基于树的算法有什么不同? LightGBM 算法垂直生长树,而其他算法水平生长树,这意味着 LightGBM 算法按树叶顺序生长,而其他算法按水平顺序生长,它会选择损失最大的叶子生长,在同一片叶子上生长时,分叶算法比分层算法减少了更多的损失。 下图可以直观的看出 LightGBM 和其他 boosting 算法的主要不同: LightGBM很容易过拟合小数据,在小型数据集上不建议使用LightGBM

原生xgboost中如何输出feature_importance

这一生的挚爱 提交于 2019-11-25 19:24:45
网上教程基本都是清一色的使用sklearn版本,此时的XGBClassifier有自带属性feature_importances_,而特征名称可以通过model._Booster.feature_names获取,但是对应原生版本,也就是通过DMatrix构造,通过model.train训练的模型,如何获取feature_importance?而且,二者获取的feature_importance又有何不同? 1.通过阅读官方文档https://xgboost.readthedocs.io/en/latest/python/python_api.html,发现sklearn版本初始化时会指定一个默认参数 显而易见,最后获取的feature_importances_就是gain得到的 2.而原生版本初始化时没有importance_type参数,真正获取feature_importance时通过model.get_score(importance_type="gain")获取,(另外一个方法get_fscore()就是get_score(importance_type="weight"),二者实现一样。) 注意这里默认参数是"weight",就是指每个特征被用于分割的使用次数。如果对标skelearn版本需要指定“gain”,这里gain是指平均增益,另外