【機器學習】 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.pswp.cn/news/456056.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456056.shtml
英文地址,請注明出處:http://en.pswp.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;并產生張量作為輸出。一種類型的節點是一個常數。…