LightGBM原始碼閱讀

2021-08-29 00:00:23 字數 915 閱讀 1457

lightgbm中二分類問題採用了類似gbdt中的負二項對數似然損失函式,具體形式為:

l (y

,f)=

ln(1

+e−y

f),y

∈l(y, f)=ln(1+e^), y\in \left\

l(y,f)

=ln(

1+e−

yf),

y∈一階和二階導數如下,

l^&=&\frac}\\\\ l^&=&\frac})^2} \end\right.

⎩⎪⎨⎪⎧​

l′l′

′​==

​1+e

yf−y

​(1+

eyf)

2eyf

​​相關原始碼見lightgbm專案c++原始碼「binary_objective.hpp」中96~125行。

lightgbm中goss演算法的實現步驟:

1)對每個樣本求g=a

bs(g

rad∗

hess

)g=abs(grad*hess)

g=abs(

grad

∗hes

s);2)按照g

gg對所有樣本從大到小排序;

3)取前a%大梯度樣本;

4)對剩下的樣本隨機選擇b%,得到小梯度樣本;

5)對小梯度樣本乘以權重1−a

b\frac

b1−a​。

相關原始碼見lightgbm專案c++原始碼「gooss.hpp」中88~135行。

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...

原始碼閱讀 Glide原始碼閱讀之with方法(一)

前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...

原始碼閱讀 Glide原始碼閱讀之load方法(二)

原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 首先,load方法有以下幾個過載方法 public requestbuilder load nullable bitmap bitmap public requestbuilder load nu...