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])
lightGBM简述相关推荐
- 【第十一届泰迪杯B题产品订单的数据分析与需求预测产品订单的数据分析与需求预测 】第二大问代码分享+解题思路(EDA数据再探索+LightGBM模型)
[第十一届泰迪杯B题产品订单的数据分析与需求预测]第二大问代码分享+解题思路(EDA数据再探索+LightGBM模型) 写在前面: 拖了这么长时间,一方面是我在找实习面试准备.另一方面是在做第二问 ...
- LightGBM学习分享
LightGBM学习分享 1基本概念 1.1背景: GBDT一经提出,就得到了广泛的关注,其演变的算法很多,尤其是Xgboost更是被认为泛化能力最好的算法,其在各种问题中都表现出了优异的性能,但是在 ...
- 多分类 数据不平衡的处理 lightgbm
前言 数据不平衡问题在机器学习分类问题中很常见,尤其是涉及到"异常检测"类型的分类.因为异常一般指的相对不常见的现象,因此发生的机率必然要小很多.因此正常类的样本量会远远高于异常类 ...
- lightgbm 决策树 可视化 graphviz
决策树模型,XGBoost,LightGBM和CatBoost模型可视化 安装 graphviz 参考文档 http://graphviz.readthedocs.io/en/stable/manua ...
- lightgbm保存模型参数
20210205 params = {'task': 'train', # 执行的任务类型'boosting_type': 'gbrt', # 基学习器'objective': 'lambdarank ...
- xgboost lightgbm catboost 多分类 多标签
xgboost 与 lightgbm 官方均支持多分类任务,但不直接支持多标签分类任务,实现多标签任务的方法之一是结合sklearn 提供的 multiclass 子类,如OneVsRestClass ...
- 梯度提升决策树(GBDT)与XGBoost、LightGBM
20211224 [机器学习算法总结]XGBoost_yyy430的博客-CSDN博客_xgboost xgboost参数 默认:auto.XGBoost中使用的树构造算法.可选项:auto,exac ...
- 简述计算机科学的核心内容,北京大学-计算机科学与技术(2018秋)作业及复习
59.(第十章)外排序是指在排序前后,数据在外存上,排序时数据调入内存进行的排序方法. 60.(第十章)在选择排序.冒泡排序.归并排序中, 归并排序是空间复杂度最大的. 三.简答和程序题(共10题,每 ...
- 设计模式学习1:设计模式简述和设计模式原则
设计模式简述 什么是设计模式? 软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案. 设计模式的目的: 代码高可用(相同作用的代码能重复 ...
最新文章
- python算法书籍-有哪些用 Python 语言讲算法和数据结构的书?
- /usr/lib/ocf/resource.d/pacemaker/ping: line 296
- Android_神奇的android:clipChildren属性
- linux根文件系统创建过程
- mac安装vue-cli脚手架;脚手架安装报错Error: EACCES: permission denied, access ‘/usr/local/lib/node_modules
- api 微信内置浏览器js_微信小程序和HTML的区别
- 解决Office 365应用程序无法正常启动(0X0000142)
- 在同时使用animation和translate时,translate无效
- google Inception v1 - v4 papers 发展历程
- mac电脑上如何看java jdk文档
- c语言烟花表白程序代码,C语言实战之浪漫烟花表白程序代码
- 一个IT农民工分享互联网巨头公司面试流程
- MOF-74(Zn), CAS:1033723-90-8
- raid缓存策略设置
- 蝙蝠侠最新截图----光影的典型例证
- VS code 设置 代码缩进参考线
- hdu 1789 贪心算法
- PTA - 数据库合集19
- Java浅析电信数据采集
- python、Linux、MySQL学习笔记