lightgbm原理、特殊點、參數分析


lightgbm:
一、位置:
相比XGB,LGBM有更高效的計算效率和更低的內存占用,并且面對高維數據,LGBM算法擁有更好的過擬合特性,這使得在建模數據量日趨增加的今天,LGBM會更適合作為前期探索性建模的模型
CatBoost算法同樣在訓練效率上比XGB更快,并且更加自動化——在特征衍生和超參數優化已經成為機器學習模型訓練標配的今天,CatBoost能夠(一定程度上)實現對輸入的特征進行自動特征衍生和對超參數進行自動超參數優化。
LGBM以犧牲極小的計算精度為代價,將GBDT的計算效率提升了近20倍
方法:
LGBM充分借鑒了XGB提出的一系列提升精度的優化策略,同時在此基礎之上進一步提出了一系列的數據壓縮和決策樹建模流程的優化策略。

二、優化點在三個方面:

數據壓縮:
1.全樣本上連續變量分箱(連續變量離散化):等寬分箱,
2.同時帶入離散特征和離散后的連續變量進行離散特征捆綁(合并)降維:互斥特征捆綁(Exclusive Feature Bundling, EFB)算法
降維且不讓精度下降太多
獨熱編碼逆向過程:
如果兩個變量互斥(我取1你就不取1,不會同時取得非0)
沖突比例:沖突樣本占非全0樣本比例
圖著色問題:如果兩個特征互斥比例小于設定的閾值,則沒有邊相連。然后對圖著色,用盡可能少的顏色對圖染色,相鄰節點不同色。
從度最大的點出發,開始著色。
最后賦予新特征取值:不同顏色取不同的值
原理思考:如果沖突比例過大,新生成的值會很多,特征壓縮效果太大


3.最終在每次構建一顆樹之前進行樣本下采樣:基于梯度的單邊采樣(Gradient-based One-Side Sampling, GOSS)的方法
目的:壓縮數據集并且不太降低精度。
計算樣本梯度,小梯度樣本進行抽樣,再結合大梯度樣本一起建模。
為了還原原始數據集梯度,用膨脹系數,最終數據集樣本梯度=大樣本梯度+小樣本梯度*膨脹系數
而膨脹系數=(1-大梯度樣本比例)/小梯度樣本閾值

注意點:
top_rate越大other_rate越小好一些。
以上方法只適用于lightgbm,不能單獨使用

建模優化方法:
1.直方圖優化算法:通過直方圖的形式更加高效簡潔的表示每次分裂前后數據節點的核心信息,并且父節點和子節點也可以通過直方圖減法計算直接算得,從而加速數據集分裂的計算過程
用直方圖代替原始數據集來訓練,大幅加快決策樹生長過程。
直方圖:每個特征的梯度和 、hess和圖

2.leaf wise tree growth的葉子節點優先的決策樹生長策略:LGBM則允許決策樹生長過程優先按照節點進行分裂,即允許決策樹“有偏”的生長
希望精度提升,過擬合風險更大些。
3.LGBM決策樹生長的增益計算公式
圖?

對于實際計算過程的優化:例如Voting Parallel(投票特征并行)方法、特征多線程并行處理方法、GPU加速方法和分布式計算

三、超參數
LGBMClassifier特殊參數:

Boosting過程控制超參數:boosting_type(提升類型,如gbdt、dart、goss、rf)
與之相關的是subsample_for_bin參數:subsample_for_bin:該參數表示對連續變量進行分箱時(直方圖優化過程)抽取樣本的個數,默認取值為200000,當實際抽樣個數大于輸入訓練數據樣本數量時,會帶入全部樣本進行計算。而如果boosting_type選擇的是goss,則在直方圖優化時會自動完成抽樣,具體抽樣策略是:會保留所有較小梯度的樣本(即那些已經被模型很好擬合的樣本),并對較大梯度的樣本進行采樣。這種策略能夠在加速訓練(大梯度樣本的貢獻)的同時有效防止過擬合(小梯度樣本的貢獻)。因此,如果boosting_type選擇的是 "goss",。則subsample_for_bin參數會失去作用,此時無論subsample_for_bin取值多少都不影響最終結果。

特征和數據處理類超參數則主要與數據采樣有關:包含subsample(樣本子集的比例)、subsample_freq(進行子采樣的頻率)、colsample_bytree(列采樣的比例)
subsample:模型訓練時抽取的樣本數量,取值范圍為 (0, 1],表示抽樣比例,默認為1.0
subsample_freq:抽樣頻率,表示每隔幾輪進行一次抽樣,默認取值為0,表示不進行隨機抽樣(如果它為0,則不論subsample是多少,都不抽樣)
colsample_bytree:在每次迭代(樹的構建)時,隨機選擇特征的比例,取值范圍為 (0, 1],默認為1.0?
特征和數據處理類超參數:

注意:
LGBM和RF的不同特征抽樣(分配)規則:LGBM和隨機森林不同,隨機森林是每棵樹的每次分裂時都隨機分配特征,而LGBM是每次構建一顆樹時隨機分配一個特征子集,這顆樹在成長過程中每次分裂都是依據這個特征子集進行生長。

LGBMRegressor:
和LGBMClassifier只有兩點不同,其一是LGBMRegressor沒有class_weight參數,其二則是LGBMRegressor的損失函數和LGBMClassifier完全不同。
損失函數:包含了GBDT和XGB的各類回歸類損失函數
?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/79920.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79920.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/79920.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

車載軟件架構 --- 二級boot設計說明需求規范

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 周末洗了一個澡,換了一身衣服,出了門卻不知道去哪兒,不知道去找誰,漫無目的走著,大概這就是成年人最深的孤獨吧! 舊人不知我近況,新人不知我過…

Cpp實現window上cmd執行效果

Cpp實現window上cmd執行效果 文章目錄 Cpp實現window上cmd執行效果1.頭文件包含部分2.main 函數部分3. 獲取當前工作目錄部分4.主循環部分5.退出條件部分6.處理 cd 命令部分7.執行其他命令部分8.讀取命令輸出部分9.關閉管道并處理返回碼部分10.源碼 1.頭文件包含部分 #include…

STM32 HAL庫FreeRTOS 中斷管理

一、引言 在嵌入式系統開發中,STM32 微控制器憑借其高性能、低功耗和豐富的外設資源,被廣泛應用于各種領域。FreeRTOS 作為一款輕量級、開源且功能強大的實時操作系統,為多任務處理提供了良好的支持。中斷是嵌入式系統中實現實時響應外部事件…

在 UE5 編輯器中,由于游戲設置 -> EV100 設置,點擊播放前后的光照不同。如何保持點擊播放前后的光照一致?

?In Unreal Engine 5 (UE5), discrepancies in lighting between the editor and play modes are often due to auto exposure settings, particularly when using the EV100 system. To maintain consistent lighting across both modes, follow these steps:?YouTube1Epic …

[python] set

1.添加元素 在 Python 中,向 set 添加一個元素可以使用 add() 方法。如果添加的元素已經存在于 set 中,add() 不會重復添加(因為 set 具有自動去重的特性)。 方法 1:add(element)(添加單個元素&#xff0…

第一期第18講26:23

shell腳本以 .sh為后綴,里面存放著一行行要運行的linux指令。 shell腳本第一行一定為 #!/bin/bash,表示使用bash。 shell文件舉例如下: #!/bin/bash echo "hello shell!" shell文件默認沒有可執行權限,因此 chmod 777 m…

解決 Ubuntu 下 VTune 無法收集 CPU 硬件時間計數數據的問題

解決 Ubuntu 下 VTune 無法收集 CPU 硬件時間計數數據的問題 在 Ubuntu 上使用 Intel VTune Profiler 時遇到無法收集 CPU 硬件性能計數器數據的問題,通常是由于權限和系統配置問題導致的。以下是解決方案: 1. 檢查并加載性能監控模塊 首先確保 Linux…

健康元 以韌性換彈性

拼韌性的時候到了! 一面是復雜的市場、政策環境與醫藥行業轉型所疊加形成的向下壓力;一面是AI技術深度賦能醫藥企業創新加速的向上機遇。 中國藥企在經歷了一輪群體性低潮期后,進入“結構性”分化的階段。 在這一階段上,一些財…

csv數據的讀取

在地理信息系統(GIS)項目中,CSV(Comma-Separated Values)文件是一種常見的數據格式,用于存儲表格數據。CSV 文件因其簡單易用、可被多種軟件讀取而廣泛應用于數據交換和存儲。ArcPy 提供了強大的功能&#…

android Stagefright框架

作為Android音視頻開發人員,學習Stagefright框架需要結合理論、源碼分析和實踐驗證。以下是系統化的學習路徑: 1. 基礎準備 熟悉Android多媒體體系 掌握MediaPlayer、MediaCodec、MediaExtractor等核心API的用法。 理解Android的OpenMAX IL&#xff08…

【基于WSAAsyncSelec模型的通信程序設計】

文章目錄 一、實驗背景與目的二、實驗設計與實現思路1. 設計思想2. 核心代碼實現 總結 一、實驗背景與目的 這次實驗主要是為了讓大家了解基于 WSAAsyncSelect 模型通信程序的編寫、編譯和執行過程。通過實踐操作,深入掌握這種模型在實現計算機之間通信時的應用。 …

JAVA:利用 Apache Tika 提取文件內容的技術指南

1、簡述 Apache Tika 是一個強大的工具,用于從各種文件中提取內容和元數據。??Tika 支持解析文檔、??圖像、??音頻、??視頻文件以及其他多種格式,非常適合構建??搜索引擎、??內容管理系統和??數據分析工具。 樣例代碼:https://gitee.com/lhdxhl/springboot-…

數碼管靜態顯示一位字符(STC89C52單片機)

#include <reg52.h> sbit ADDR0 P1^0; sbit ADDR1 P1^1; sbit ADDR2 P1^2; sbit ADDR3 P1^3; sbit ENLED P1^4; //用數組來存儲數碼管的真值表&#xff0c;數組將在下一章詳細介紹 unsigned char code LedChar[] { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82…

計算機視覺與深度學習 | 工業視覺缺陷檢測如何檢小缺陷?背景概述,原理,檢測難點,常用的檢測算法,算法評估指標,新項目算法選擇,算法部署

工業視覺小缺陷檢測技術解析 背景概述 工業視覺缺陷檢測是智能制造中質量控制的核心環節,而小缺陷檢測(如微米級劃痕、點狀污漬、細微裂紋等)因其目標小、易受干擾等特點,成為技術難點。隨著制造業對精度要求提升(如3C電子、半導體、精密零部件行業),傳統人工目檢和基…

OBS 日期時間.毫秒時間腳本 date-and-time.lua

文章目錄 OBS 日期時間.毫秒時間腳本&#xff1a;效果 OBS 日期時間.毫秒時間腳本&#xff1a; obs obslua source_name ""last_text "" format_string "" activated false-- 此函數用于獲取精確的毫秒級時間戳&#…

進程和線程(1)

前言&#xff1a; 在計算機中cpu就像一座工廠&#xff0c;這個工廠里面有許多的車間&#xff0c;但是假如工廠的電力有限&#xff0c;一次只能供給一個車間使用&#xff0c;也就是說當一個車間在進行工作的時候&#xff0c;其他車間是不能工作的&#xff08;單個cpu只能運行一…

入門-C編程基礎部分:16、 預處理器

飛書文檔https://x509p6c8to.feishu.cn/wiki/DzSJwsGiTiXkeCkyEYUcuXbKnbf C 預處理是編譯過程中一個單獨的步驟&#xff0c;是一個文本替換工具而已。所有的預處理命令都是以井號&#xff08;#&#xff09;開頭。 指令描述#define定義宏#ifdef如果宏已經定義&#xff0c;則返…

Ubuntu下安裝和卸載MySQL

Ubuntu下安裝和卸載MySQL 下面的演示系統版本&#xff1a;Ubuntu 24.04 更新系統軟件包 在開始安裝之前&#xff0c;建議先更新系統的軟件包列表&#xff0c;以確保所有依賴項是最新的。 sudo apt update && sudo apt upgrade -y安裝MySQL服務器 Ubuntu的官方軟件…

【Python爬蟲實戰篇】--爬取豆瓣電影信息(靜態網頁)

網站&#xff0c;&#xff1a;豆瓣電影 Top 250 爬取豆瓣前250電影的信息&#xff0c; F12打開網頁控制臺&#xff0c;查看網頁元素&#xff0c; 發現網頁數據直接可以查看到&#xff0c;為靜態網頁數據&#xff0c;較為簡單 目錄 1.第一步使用urllib庫獲取網頁 2.第二步使…

【Unity知識點詳解】Unity中泛型單例的使用,兼容WebGL

今天來講下Unity中泛型單例的使用&#xff0c;包含普通單例和繼承MonoBehaviour的單例。重點是需要兩種泛型單例兼容WebGL平臺&#xff0c;話不多說直接開始。 泛型單例的設計目標 作為泛型單例&#xff0c;需要實現以下幾個目標&#xff1a; 全局唯一&#xff0c;在程序的整個…