【机器学习】 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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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

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

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

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

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

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

Web开发基础

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

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

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

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

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

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

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

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

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

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

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

unity塔防游戏怪物转向_Unity官方新手游戏项目推荐合集

Unity官方新手游戏项目推荐合集今天给同学们介绍一些Unity官方发布过的一些游戏项目,这些项目都简化了游戏开发的入门学习过程,可以快速地制作出游戏,适合新手入门体验,下面就带同学们看一看:Unity Playground图片来源…

【BZOJ 4169】 4169: Lmc的游戏 (树形DP)

4169: Lmc的游戏 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 44 Solved: 25Description RHL有一天看到lmc在玩一个游戏。"愚蠢的人类哟,what are you doing",RHL说。"我在玩一个游戏。现在这里有一个有n个结点的有根树&#xff0…

【深度学习】Tensorflow完成线性回归对比机器学习LinearRegression()

首先构建一个线性的点状图 import warnings warnings.filterwarnings(ignore) import numpy as np import matplotlib.pyplot as plt %matplotlib inline from sklearn.linear_model import LinearRegression import tensorflow as tf X np.linspace(2,12,50).reshape(-1,1)w…

ajax同步和异步的区别_同步电机和异步电机区别

电工之家:www.dgzj.com QQ群:2179090关注电工之家官方微信公众号“电工之家”,收获更多经验知识。同步电机和异步电机之间从区别就在于转子内的励磁电流,同步电机的转子励磁电流来自外界直流电源,转速恒定只与电机定…

解决:TypeError: Value passed to parameter 'a' has DataType int64 not in list of allowed values: float1

报错: TypeError: Value passed to parameter a has DataType int64 not in list of allowed values: float16, float32, float64, int32, complex64, complex128原因 1.4.0版本 默认int64 代码内容: 改正 定义符合 格式

买电脑主要看什么配置_我的专业要买什么配置电脑可以用到毕业?

电脑是现代生活中不可缺少的工具智能手机的更新让许多轻量工作可以在手机上完成但复杂的文档办公、大型的音视频编辑专业的数据处理等等还是离不开电脑的操作高考结束后许多同学做的第一件事是买新手机、新电脑有的为了考后放松玩游戏有的出于兴趣学习新技能也有的同学还在考虑…

CSS3实现一束光划过图片、和文字特效

在打折图标里面 实现一道白光划过的动画效果 css: <!DOCTYPE html><html><head><meta charset"utf-8"> <style> p{ width:15%; margin:0 auto; line-height:50px; font-size:30px; text-align:center; transform-origin: 50px 50px;…

H.264编解码流程

编码&#xff1a; 蓝色的前向编码流程&#xff1a;以宏块为输入单位介绍优于以帧为单位介绍。Fn为即将进行编码的宏块&#xff0c;由原始图像中16*16像素构成。每个宏块要么采用帧内模式编码&#xff0c;要么采用帧间模式编码。不管是哪种编码模式&#xff0c;预测宏块P都是基…