【机器学习】 LightGBM——优于XGBoost提升的集成算法(安装+对比XGBoost改进+参数说明+python代码实例)
中文官方文档:http://lightgbm.apachecn.org/cn/latest/Installation-Guide.html
英文官方文档:https://lightgbm.readthedocs.io/en/latest/
一、lightGBM安装
在anaconda中输入:pip install lightGBM即可
输入import lightgbm as lgb做测试
二、lightGBM改进
原理推荐:原理讨论一、原理讨论二
XGB有什么优缺点
优点:
- 1、XGB利用了二阶梯度来对节点进行划分,相对其他GBM、GBDT来说,精度更加高。
- 2、利用局部近似算法对分裂节点的贪心算法优化,取适当的eps时,可以保持算法的性能且提高算法的运算速度。
- 3、在损失函数中加入了L1/L2项,控制模型的复杂度,提高模型的鲁棒性。
- 4、提供并行计算能力,主要是在树节点求不同的候选的分裂点的Gain Infomation(分裂后,损失函数的差值)
- 5、Tree Shrinkage,column subsampling等不同的处理细节。
缺点:
- 1、需要pre-sorted,这个会耗掉很多的内存空间(2 * #data * # features)
- 2、数据分割点上,由于XGB对不同的数据特征使用pre-sorted算法而不同特征其排序顺序是不同的,所以分裂时需要对每个特征单独做依次分割,遍历次数为#data * #features来将数据分裂到左右子节点上。
- 3、尽管使用了局部近似计算,但是处理粒度还是太细了
- 4、由于pre-sorted处理数据,在寻找特征分裂点时(level-wise),会产生大量的cache随机访问。
因此LightGBM针对这些缺点进行了相应的改进
- LightGBM基于histogram算法代替pre-sorted所构建的数据结构,利用histogram后,会有很多有用的tricks。例如histogram做差,提高了cache命中率(主要是因为使用了leaf-wise)
- 在机器学习当中,我们面对大数据量时候都会使用采样的方式(根据样本权值)来提高训练速度。又或者在训练的时候赋予样本权值来关于于某一类样本(如Adaboost)。LightGBM利用了GOSS来做采样算法
- 由于histogram算法对稀疏数据的处理时间复杂度没有pre-sorted好。因为histogram并不管特征值是否为0。因此我们采用了EFB来预处理稀疏数据
- 1.直方图差加速:直方图算法的基本思想是先把连续的浮点特征值离散化成k个整数,同时构造一个宽度为k的直方图。在遍历数据的时候,根据离散化后的值作为索引在直方图中累积统计量,当遍历一次数据后,直方图累积了需要的统计量,然后根据直方图的离散值,遍历寻找最优的分割点。内存消耗降低,计算上的代价也大幅降低
- 2.leaf-wise:每次从当前所有叶子中,找到分裂增益最大的一个叶子,然后分裂,如此循环。因此同Level-wise相比,在分裂次数相同的情况下,Leaf-wise可以降低更多的误差,得到更好的精度。可能会长出比较深的决策树,产生过拟合。因此LightGBM在Leaf-wise之上增加了一个最大深度限制,在保证高效率的同时防止过拟合。
- 3.特征并行和数据并行:特征并行的主要思想是在不同机器在不同的特征集合上分别寻找最优的分割点,然后在机器间同步最优的分割点。数据并行则是让不同的机器先在本地构造直方图,然后进行全局的合并,最后在合并的直方图上面寻找最优分割点。
- 4.直接支持类别特征:可以直接输入类别特征,不需要额外的0/1 展开,LightGBM 是第一个直接支持类别特征的 GBDT 工具。
三、常用参数解释
4.lightGBM使用
根据天池蒸汽赛代码进行使用和对比xgboost
天池大赛地址:https://tianchi.aliyun.com/competition/entrance/231693/information
import numpy as np
import pandas as pd
from lightgbm import LGBMRegressor
from xgboost import XGBClassifier,XGBRegressortrain = pd.read_csv('../xgboost算法/zhengqi_train.txt',sep = '\t')
test = pd.read_csv('../xgboost算法/zhengqi_test.txt',sep = '\t')X_train.head()X_train = train.iloc[:,:-1]
y_train = train['target']
X_train.shapetest.shape%%time
light = LGBMRegressor()
light.fit(X_train,y_train)
y_ = light.predict(test)
pd.Series(y_).to_csv('./submit_ligbm.txt',index = False)%%time
xbg = XGBRegressor(n_estimators=3,max_depth=100)
xbg.fit(X_train,y_train)
y_ = xbg.predict(test)
pd.Series(y_).to_csv('./submit_xgb2.txt',index = False)train.var().array# 协方差 ,两个属性之间的关系,
# 协方差绝对值越大,连个属性之间的关系越密切
cov = train.cov()
cov#删除波动数据后用 lightbgm算法
light = LGBMRegressor()
light.fit(X_train,y_train)
y_ = light.predict(test)
pd.Series(y_).to_csv('./submit_ligbm3.txt',index = False)#删除波动数据后用 xgb算法对比
from xgboost import XGBRegressor
xgb = XGBRegressor()xgb.fit(X_train,y_train)
y_ = xgb.predict(test)
pd.Series(y_).to_csv('./submit_xgb2.txt',index = False)
最终上传成绩提升了几个点无截图!
【机器学习】 LightGBM——优于XGBoost提升的集成算法(安装+对比XGBoost改进+参数说明+python代码实例)相关推荐
- MATLAB人工蜂群算法求解超市物流配送选址问题代码实例
MATLAB人工蜂群算法求解超市物流配送选址问题代码实例 MATLAB人工蜂群算法求解超市物流配送选址问题代码实例 人工蜂群算法编程问题实例: 在范围为(0,0)到(100,100)的矩形区域内,散布 ...
- 基于TextRank算法的文本摘要(附Python代码)
基于TextRank算法的文本摘要(附Python代码): https://www.jiqizhixin.com/articles/2018-12-28-18
- MATLAB灰狼优化算法求解超市物流配送中心选址问题代码实例
MATLAB灰狼算法求解超市物流配送选址问题实例 作者:麦哥 MATLAB灰狼优化算法求解超市物流配送中心选址问题代码实例 灰狼算法编程问题实例: 在范围为(0,0)到(100,100)的矩形区域内, ...
- 北极熊优化算法PBO的理论知识以及python代码实现
北极熊优化算法PBO的理论知识以及python代码实现 北极熊优化算法 1.条件假设 2.浮冰漂移 (全局搜索)策略 3.海豹捕捉 (局部搜索)策略 算法步骤 Python代码实现 参数设定 寻优函数 ...
- 手眼标定算法TSAI_LENZ,眼在手外python代码实现
手眼标定算法TSAI_LENZ,眼在手外python代码实现(未整理) 大家好,我是小智,今天来给大家看一看手在眼外的代码实现. #!/usr/bin/env python # coding: utf ...
- 灰狼优化算法GWO的理论知识以及python代码实现
灰狼优化算法GWO的理论知识以及python代码实现 GWO 算法的等级结构 GWO 算法的数学模型 灰狼算法的python实现 寻优结果 下载链接 GWO 算法的等级结构 灰狼优化算法是模拟食物链顶 ...
- 【集成学习】:Stacking原理以及Python代码实现
Stacking集成学习在各类机器学习竞赛当中得到了广泛的应用,尤其是在结构化的机器学习竞赛当中表现非常好.今天我们就来介绍下stacking这个在机器学习模型融合当中的大杀器的原理.并在博文的后面附 ...
- python 生成数组1:1:20_英特尔“演化算法”新框架:29个Python代码块,自动生成新算法...
点击上方 "码农真经" 关注,星标或者置顶 22点24分准时推送,第一时间送达 来源:公众号 新智元 | 编辑:真经君 码农真经(ID:coder_experience)第 133 ...
- 使用TextRank算法进行文本摘要提取(python代码)
文本摘要是自然语言处理(NLP)的一种应用,随着人工智能的发展文本提取必将对我们的生活产生巨大的影响.随着网络的发展我们处在一个信息爆炸的时代,通读每天更新的海量文章/文档/书籍会占用我们大量的时间, ...
最新文章
- 虚拟光驱xp版32位_001只有200M的WIN732位的系统复活你的老爷机
- python配置文件密码管理_python – 可以在django管理员中实现“下次登录时更改密码”类型功能吗?...
- 反向传播算法最全解读,机器学习进阶必看!
- 测试C#代码执行时间
- 美团算法专家:入门机器学习,比你想的要简单
- java flask_将Java与Python Flask连接
- vue 项目中 自定义过滤器 全局使用 filter
- C++ 析构函数不要抛出异常
- 小程序数据框有重影_关于拖动滚动条编辑框数据重影的问题
- Android SDK的安装教程
- 为什么 Redis 单线程能达到百万+QPS?
- Java算法面试题(008) 字符串反转
- google地图设置语言
- am大学计算机科学,美国大学本科计算机科学专业排名一览
- 浅谈制药企业安全供电系统的设计与应用
- 韦恩州立大学计算机科学,2019上海软科世界一流学科排名计算机科学与工程专业排名韦恩州立大学排名第301-400...
- 新浪公司总裁兼首席执行官 曹国伟
- 如何绕过强制门户——克隆 MAC 地址
- CSDN写作小技巧—— Markdown 语法排版
- 畅想计算机的未来50字,新学期畅想50字
热门文章
- 腾讯搜搜退出PC搜索领域:百度搜狗迎来双龙竞争
- 14种方法助你参与开源项目
- Apache RocketMQ:简单消息示例
- 《 Docker 进阶与实战 》 读书笔记
- 解决:-bash: unzip: command not found (Linux 中 unZip/Zip 的安装及使用)
- 【Quartz】Spring3.2.9 + Quqrtz2.2.1 实现定时实例
- Docker容器硬盘热扩容-centos6
- Vector:动态数组的使用和说明
- lineNumber: 1; columnNumber: 1; 前言中不允许有内容
- Django models模型