【机器学习】 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针对这些缺点进行了相应的改进

  1. LightGBM基于histogram算法代替pre-sorted所构建的数据结构,利用histogram后,会有很多有用的tricks。例如histogram做差,提高了cache命中率(主要是因为使用了leaf-wise)
  2. 在机器学习当中,我们面对大数据量时候都会使用采样的方式(根据样本权值)来提高训练速度。又或者在训练的时候赋予样本权值来关于于某一类样本(如Adaboost)。LightGBM利用了GOSS来做采样算法
  3. 由于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)

 

 

最终上传成绩提升了几个点无截图!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

H.264简单总结

&#xff08;quan整理&#xff09;一、视频信息和信号的特点 < type"text/javascript">< type"text/javascript" src"http://pagead2.googlesyndication.com/pagead/show_ads.js"> 1&#xff0e;1直观性 利用人的视觉系统&am…

轻量级代码生成器-OnlyCoder 第一篇

程序猿利器&#xff1a;代码生成器&#xff0c;使用代码生成器已经好几年了&#xff0c;增删改查各种生成&#xff0c;从UI到DATA层均生成过。之前有使用过动软的&#xff0c;T4模板等.... T4生成实体还是没有问题的&#xff0c;但是生成MVC视图就有点烦杂了&#xff0c;动软给…

python中的元组操作

元组操作 元组也是一组有序数据的组合&#xff0c;和列表唯一的不同是&#xff0c;元组不可修改 列表 用铅笔写的清单(能擦能改) 元组 用钢笔写的清单(不能擦改) 创建元组 创建空元组 方式1&#xff1a;变量 ()方式2&#xff1a; 变量 tuple() 创建单个元素的元组 方式1…

从Java到Go面向对象--继承思想.md

2019独角兽企业重金招聘Python工程师标准>>> Go语言实现继承 我们都知道Java中通过extends来实现对象的继承&#xff0c;那么Go中怎么实现继承呢&#xff1f;Go语言没有继承&#xff0c;只有组合。我们知道&#xff0c;继承的目的是什么&#xff0c;是类的重用&…

电脑键盘练习_电脑新手最关心的:零基础如何快速掌握电脑打字的技巧?

随着计算机的普及&#xff0c;越来越多的人在工作和生活中需要使用计算机。有的朋友通过参与培训学会了键盘打字&#xff0c;有的朋友自学成才学会了键盘打字。这里笔者给大家分享在0基础的情况下&#xff0c;通过自学快速掌握键盘打字的一种方法。需要说明的是&#xff0c;键盘…

【解决】jupyter在deepin安装上的坑

报错&#xff1a;env: "wine": 没有那个文件或目录 jupyter打开之后无法直接跳转浏览器 解决方法&#xff1a; 1、 生成配置文件jupyter notebook --generate-config 2、打开jupyter_notebook_config.py&#xff0c;在文件最后添加以下代码 选择你的浏览器位置 …

盐城出台推进大数据产业发展实施意见

日前&#xff0c;盐城市政府印发了《关于推进大数据产业发展的实施意见》&#xff08;下称《实施意见》&#xff09;&#xff0c;从指导思想、推进原则、发展目标、发展方向、重点工程和保障措施六个方面明确了盐城市加快培育和发展大数据产业的具体实施意见&#xff0c;这是该…

json字符串转换成json对象

Json字符与Json对象的相互转换方式有很多&#xff0c;接下来将为大家一一介绍下&#xff0c;感兴趣的朋友可以参考下哈&#xff0c;希望可以帮助到你1>jQuery插件支持的转换方式&#xff1a; 代码如下:$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串…

python中的字典

字典操作 以键值对方式存在的无序数据的组合就是字典 创建字典 创建空字典 方式1&#xff1a;变量 {}方式2&#xff1a; 变量 dict() 创建多个元素的字典 方式1&#xff1a;变量 {键:值,键:值....}方式2&#xff1a;变量 dict({键:值,键:值....})方式3&#xff1a;变量 …

【深度学习】Win10安装TensorFlow_gpu(避坑必看)

不用gpu的tensorflow 是没有灵魂的Tensorflow 因为就是为了快&#xff01;快二十倍 FIRST Q&#xff1a;系统及显卡版本问题&#xff01;!!! 到官网看&#xff01;别看别的博客 ~链接&#xff1a; Windows端&#xff1a;https://tensorflow.google.cn/install/source_wind…

SCL定时 1500_iPhone12开售当天黄牛加价1500,哪里买最划算?

10月23日&#xff0c;苹果iPhone12全系列正式开售。首批货源非常抢手&#xff0c;各地的苹果商店门口都排起了长队&#xff0c;现场黄牛甚至加价1500元收购用户手机。开卖首日热度高&#xff0c;官方最快一周发货据苹果官网介绍&#xff0c;此次iPhone12系列共有4款机型&#x…

H.264编解码

H.264是由ITU-T&#xff08;ITU Telecommunication Standardization Sector&#xff0c;国际电信联盟远程通信标准化组&#xff09;视频编码专家组&#xff08;VCEG&#xff09;和ISO/IEC动态图像专家组&#xff08;MPEG&#xff09;联合组成的联合视频组&#xff08;JVT&#…

Web开发基础

-------------------siwuxie095 HTML HTML 即 HyperText Markup Language&#xff0c;超文本标记语言 由服务器返回&#xff0c;浏览器呈现 服务器 即 HTTP 服务器&#xff0c;如&#xff1a;Apache、Nginx、Tomcat 一段 HTML 代码&#xff0c;可以是存放在 HTTP 服务器上的一个…

飞信即将归来:移动企业IM面临的三大难题

企业即时通讯(以下称“企业IM” ) 激战正酣&#xff0c;中国移动也有意搅局。中国移动方面日前向北京商报记者透露&#xff0c;中国移动的IM产品将于下月正式上线&#xff0c;此次中国移动拿出的是淡出人们视线许久的飞信。由于传统通信业务持续下滑&#xff0c;正在蓬勃发展的…

【FFmpeg】Win10环境下安装FFmpeg(实现视频音频提取裁剪等)

FFmpeg概述 在语音识别领域内&#xff0c;如何识别准确识别语音的第一步就是要将从音频文件中提取相关语音特征。同时对于各大语音接口如百度对于音频文件格式要求高&#xff0c;但是对于实际情况下&#xff0c;我们不可能都能拿到WAV文件&#xff0c;因此必须将首先将各种格式…

H.264

百科名片 H.264&#xff0c;同时也是MPEG-4第十部分&#xff0c;是由ITU-T视频编码专家组&#xff08;VCEG&#xff09;和ISO/IEC动态图像专家组&#xff08;MPEG&#xff09;联合组成的联合视频组&#xff08;JVT&#xff0c;Joint Video Team&#xff09;提出的高度压缩数字视…

个人财务管理系统有源码怎么用_微信里的客户怎么管理?用鱼汛微信管理系统...

鱼汛工作手机是一款[1]销售微信管理系统&#xff0c;具有微信分析、电话分析、客户分析、绩效分析、安全管控、使用管控等六大功能&#xff0c;真正实现安全&#xff0c;高效&#xff0c;可管理&#xff01;鱼汛手机能为企业带来什么价值&#xff1f;随着沟通方式的变革&#x…

另一个分区工具:GNU 的 parted(转)

利用 GNU 的 parted 进行分割行为 虽然你可以使用 fdisk 很快速的将你的分割槽切割妥当&#xff0c;不过 fdisk 却无法支持到高于 2TB 以上的分割槽&#xff01; 此时就得需要 parted 来处理了。不要觉得 2TB 你用不着&#xff01; 2009 年的现在已经有单颗硬盘高达 2TB 的容量…

《简明电路分析》——导读

本节书摘来自华章社区《简明电路分析》一书中的目录&#xff0c;作者钟洪声 吴 涛 孙利佳&#xff0c;更多章节内容可以访问云栖社区“华章社区”公众号查看 目 录 前  言教学建议第一部分 电阻电路分析第1章 电路基本约束关系 1.1 电路与电路模型 1.2 电学主要参数…

【深度学习】Tensorflow的基本操作

图 TensorFlow程序通常被组织成一个构建阶段和一个执行阶段. 在构建阶段, op的执行步骤被描述成一个图. 在执行阶段, 使用会话执行执行图中的op。我们来构建一个简单的计算图。每个节点采用零个或多个张量作为输入&#xff0c;并产生张量作为输出。一种类型的节点是一个常数。…