lightgbm算法學習

主要組件

Boosting

?abstract?
Boosting
?abstract?
GBDTBase
GBDT
DART
RF
void GBDT::Init(const Config* gbdt_config, const Dataset* train_data,const ObjectiveFunction* objective_function,const std::vector<const Metric*>& training_metrics) override

初始化,主要是創建樣本采樣策略data_sample_strategy_,設置目標函數objective_function_,創建tree_learner_,創建train_score_updater_,配置training_metrics_

void GBDT::Train(int snapshot_freq, const std::string& model_output_path) override

訓練處理

bool GBDT::TrainOneIter(const score_t* gradients, const score_t* hessians) override

單次迭代訓練

void GBDT::Boosting()

計算梯度和海森矩陣

void UpdateScore(const Tree* tree, const int cur_tree_id)

樹訓練完后更新評分

TreeLearner

?abstract?
TreeLearner
SerialTreeLearner
LinearTreeLearner
FeatureParallelTreeLearner
DataParallelTreeLearner
VotingParallelTreeLearner
GPUTreeLearner
CUDASingleGPUTreeLearner

目標函數ObjectiveFunciton

ObjectiveFunction
BinaryLogLoss
MulticlassSoftmax
MulticlassOVA
RankingObjective
LambdarankNDCG
RankXENDCG
RegressionL2loss
RegressionL1loss
RegressionHuberloss
RegressionFairloss
RegressionPoissonloss
RegressionQuantileloss
RegressionMAPEloss
RegressionGammaloss
RegressionTweedieloss
CrossEntropy
CrossEntropyLambda

二分類對數損失

一般定義為
L(y,f(x))=log(1+exp(?y?f(x)))L(y, f(x))=log(1+exp(-y \cdot f(x)))L(y,f(x))=log(1+exp(?y?f(x)))
其中yyy是標簽,取值為{?1,1}\left \{-1,1\right \}{?1,1}f(x)f(x)f(x)是模型輸出的分數,令z=y?f(x)z=y\cdot f(x)z=y?f(x),則損失函數為L=log(1+exp(?z))L=log(1+exp(-z))L=log(1+exp(?z))
zzz求導有?L?z=?exp(?z)1+exp(?z)=?11+exp(z)\frac{\partial L}{\partial z} = \frac{-exp(-z)}{1+exp(-z)} = -\frac{1}{1+exp(z)}?z?L?=1+exp(?z)?exp(?z)?=?1+exp(z)1?,所以對f(x)f(x)f(x)求導有
?L?f(x)=?L?z??z?f(x)=?y1+exp(y?f(x))\frac{\partial L}{\partial f(x)} = \frac{\partial L}{\partial z} \cdot \frac{\partial z}{\partial f(x)} = - \frac{y}{1+exp(y \cdot f(x))}?f(x)?L?=?z?L???f(x)?z?=?1+exp(y?f(x))y?
BinaryLogloss中對損失函數添加了縮放因子sigmoid_,即
L(y,f(x))=log(1+exp(?y?σ?f(x)))L(y, f(x))=log(1+exp(-y \cdot \sigma \cdot f(x)))L(y,f(x))=log(1+exp(?y?σ?f(x)))
f(x)f(x)f(x)求導
?L?f(x)=?y?σ1+exp(y?σ?f(x))\frac{\partial L}{\partial f(x)}=-\frac{y \cdot \sigma}{1+exp(y\cdot \sigma \cdot f(x))}?f(x)?L?=?1+exp(y?σ?f(x))y?σ?
BinaryLogloss在計算梯度時添加了樣本權重weights_[i]和標簽權重label_weight

const double response = -label * sigmoid_ / (1.0f + std::exp(label * sigmoid_ * score[i]));
gradients[i] = static_cast<score_t>(response * label_weight * weights_[i]);

GBDT

GBDT
ObjectiveFunction
SampleStrategy
TreeLearner
Metric
ScoreUpdater

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

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

相關文章

安卓基于 FirebaseAuth 實現 google 登錄

安卓基于 FirebaseAuth 實現 google 登錄 文章目錄安卓基于 FirebaseAuth 實現 google 登錄1. 前期準備1.1 創建 Firebase 項目1.2 將 Android 應用連接到 Firebase1.3 在 Firebase 控制臺中啟用 Google 登錄2. 在 Android 應用中實現 Google 登錄2.1 初始化 GoogleSignInClien…

李宏毅(Deep Learning)--(三)

一.前向傳播與反向傳播的理解&#xff1a;二.模型訓練遇到的問題在模型訓練中&#xff0c;我們可能會遇到效果不好的情況&#xff0c;那么我們應該怎么思考切入&#xff0c;找到問題所在呢&#xff1f;流程圖如下&#xff1a;第一個就是去看訓練的損失函數值情況。如果損失較大…

android studio 運行,偶然會導致死機,設置Memory Settings嘗試解決

1、android studio導致死機 鼠標不能動&#xff0c;鍵盤沒有反應&#xff0c;只能硬重啟&#xff0c;但是內存并沒有用完&#xff0c;cpu也不是100% 2、可能的原因 android studio內存設置的問題&#xff0c;為了限制占用內存&#xff0c;所以手工設置內存最小的一個&#x…

HTB 賽季8靶場 - Outbound

Rustscan掃描我們開局便擁有賬號 tyler / LhKL1o9Nm3X2&#xff0c;我們使用rustscan進行掃描 rustscan -a 10.10.11.77 --range 1-65535 --scan-order "Random" -- -A Web服務漏洞探查 我們以賬號tyler / LhKL1o9Nm3X2登錄webmail&#xff0c;并快速確認版本信息。該…

動態組件和插槽

[Vue2]動態組件和插槽 動態組件和插槽來實現外部傳入自定義渲染 組件 <template><!-- 回復的處理進度 --><div v-if"steps.length > 0" class"gain-box-header"><el-steps direction"vertical"><div class"l…

Unreal5從入門到精通之如何實現UDP Socket通訊

文章目錄 一.前言二.什么是FSocket1. FSocket的作用2. FSocket關鍵特性三.創建Socket四.數據傳輸五.線程安全六.UDPSocketComponentUDPSocketComponent.hUUDPSocketComponent.cpp七.SocketTest測試八.最后一.前言 我們在開發UE 的過程中,會經常使用到Socket通訊,包括TCP,UD…

UI前端大數據處理新趨勢:基于邊緣計算的數據處理與響應

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩!一、引言&#xff1a;前端大數據的 “云端困境” 與邊緣計算的破局當用戶在在線文檔中實時協作…

Reading and Writing to a State Variable

本節是《Solidity by Example》的中文翻譯與深入講解&#xff0c;專為零基礎或剛接觸區塊鏈開發的小白朋友打造。我們將通過“示例 解說 提示”的方式&#xff0c;帶你逐步理解每一段 Solidity 代碼的實際用途與背后的邏輯。Solidity 是以太坊等智能合約平臺使用的主要編程語…

c# 深度解析:實現一個通用配置管理功能,打造高并發、可擴展的配置管理神器

文章目錄深入分析 ConfigManager<TKey, TValue> 類1. 類設計概述2. 核心成員分析2.1 字段和屬性2.2 構造函數3. 數據加載機制4. CRUD 操作方法4.1 添加數據4.2 刪除數據4.3 更新數據4.4 查詢數據4.5 清空數據5. 數據持久化6. 設計亮點7. 使用示例ConfigManager<TKey, …

運維打鐵: Python 腳本在運維中的常用場景與實現

文章目錄引言思維導圖常用場景與代碼實現1. 服務器監控2. 文件管理3. 網絡管理4. 自動化部署總結注意事項引言 在當今的 IT 運維領域&#xff0c;自動化和效率是至關重要的。Python 作為一種功能強大且易于學習的編程語言&#xff0c;已經成為運維人員不可或缺的工具。它可以幫…

【零基礎入門unity游戲開發——unity3D篇】3D光源之——unity反射和反射探針技術

文章目錄 前言實現天空盒反射1、新建一個cube2、全反射材質3、增加環境反射分辨率反射探針1、一樣把小球材質調成全反射2、在小球身上加添加反射探針3、設置靜態物體4、點擊烘培5、效果6、可以修改反射探針區域大小7、實時反射專欄推薦完結前言 當對象收到直接和間接光照后,它…

React Three Fiber 實現 3D 模型點擊高亮交互的核心技巧

在 WebGL 3D 開發中&#xff0c;模型交互是提升用戶體驗的關鍵功能之一。本文將基于 React Three Fiber&#xff08;R3F&#xff09;和 Three.js&#xff0c;總結 3D 模型點擊高亮&#xff08;包括模型本身和邊框&#xff09;的核心技術技巧&#xff0c;幫助開發者快速掌握復雜…

卷積神經網絡實戰:MNIST手寫數字識別

夜漸深&#xff0c;我還在&#x1f618; 老地方 睡覺了&#x1f64c; 文章目錄&#x1f4da; 卷積神經網絡實戰&#xff1a;MNIST手寫數字識別&#x1f9e0; 4.1 預備知識?? 4.1.1 torch.nn.Conv2d() 三維卷積操作&#x1f4cf; 4.1.2 nn.MaxPool2d() 池化層的作用&#x1f4…

HarmonyOS應用無響應(AppFreeze)深度解析:從檢測原理到問題定位

HarmonyOS應用無響應&#xff08;AppFreeze&#xff09;深度解析&#xff1a;從檢測原理到問題定位 在日常應用使用中&#xff0c;我們常會遇到點擊無反應、界面卡頓甚至完全卡死的情況——這些都可能是應用無響應&#xff08;AppFreeze&#xff09; 導致的。對于開發者而言&am…

湖北設立100億元人形機器人產業投資母基金

湖北設立100億元人形機器人產業投資母基金 湖北工信 2025年07月08日 12:03 湖北 &#xff0c;時長01:20 近日&#xff0c;湖北設立100億元人形機器人產業投資母基金&#xff0c;重點支持人形機器人和人工智能相關產業發展。 人形機器人產業投資母基金由湖北省財政廳依托省政府…

時序預測 | Pytorch實現CNN-LSTM-KAN電力負荷時間序列預測模型

預測效果 代碼主要功能 該代碼實現了一個結合CNN&#xff08;卷積神經網絡&#xff09;、LSTM&#xff08;長短期記憶網絡&#xff09;和KAN&#xff08;Kolmogorov-Arnold Network&#xff09;的混合模型&#xff0c;用于時間序列預測任務。主要流程包括&#xff1a; 數據加…

OCR 識別:車牌識別相機的 “火眼金睛”

車牌識別相機在交通管理、停車場收費等場景中&#xff0c;需快速準確識別車牌信息。但實際環境中&#xff0c;車牌可能存在污漬、磨損、光照不均等情況&#xff0c;傳統識別方式易出現誤讀、漏讀。OCR 技術讓車牌識別相機如虎添翼。它能精準提取車牌上的字符&#xff0c;不管是…

Java面試基礎:面向對象(2)

1. 接口里可以定義哪些方法抽象方法&#xff1a;抽象方法是接口的核心部分&#xff0c;所有實現接口的類都必須實現這些方法。抽象方法默認是 public 和 abstract 修飾&#xff0c;這些修飾符可以省略。public interface Animal {void Sound(); }默認方法&#xff1a;默認方法是…

有哪些更加簡潔的for循環?循環語句?

目錄 簡潔的for循環 循環過程修改循環變量 循環語句 不同編程語言支持的循環語句 foreach 無限循環 for循環歷史 break和continue 循環判斷結束值 循環標簽 循環語句優化 循環表達式返回值 簡潔的for循環 如果需要快速枚舉一個集合的元素&#xff0c;盡管C語言可以…

RK3568/3588 Android 12 源碼默認使用藍牙mic錄音

遇到客戶一個需求&#xff0c;如果連接了帶mic的藍牙耳機&#xff0c;默認所有的錄音要走藍牙mic通道。這個功能搞了好久&#xff0c;終于搞定了。1. 向RK尋求幫助&#xff0c;先打通 bt sco能力。此時&#xff0c;還無法默認就切換到藍牙 mic通道&#xff0c;接下來我們需求默…