天天看點

學習C/C++實作的機器學習算法

lightgbm

<code>/data/project/framework/lightgbm/src/boosting/gbdt.cpp</code>

<code>gbdt::train</code>

學習C/C++實作的機器學習算法

<code>binarylogloss::getgradients</code>

<code>src/objective/binary_objective.hpp:101</code>

結點分裂的過程:

在<code>src/treelearner/feature_histogram.hpp:860</code>打斷點

首先根據grad和hess計算新的樹

<code>src/boosting/gbdt.cpp:367</code>

學習C/C++實作的機器學習算法

num_leaves=63

學習C/C++實作的機器學習算法
學習C/C++實作的機器學習算法
學習C/C++實作的機器學習算法

lgbm支援多種并行模式,如果設定線程數為1,則為 <code>serialtreelearner</code>

學習C/C++實作的機器學習算法

并行選特征(左葉子,右葉子)

學習C/C++實作的機器學習算法

論文提到的<code>總直方圖</code> - <code>小(左)直方圖</code> = <code>大(右)直方圖</code>

學習C/C++實作的機器學習算法

繼續閱讀