大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

机器学习blog發表於2019-09-11

An Experimental Evaluation of Large Scale GBDT Systems

Fangcheng Fu, Jiawei Jiang, Yingxia Shao, Bin Cui

Peking University, Beijing University of Posts and Telecommunications, Tencent

VLDB 2019

https://arxiv.org/pdf/1907.01882.pdf

GBDT是一種廣泛應用的機器學習演算法,該演算法不僅廣泛應用於資料分析競賽中,而且在工業界也廣泛應用。由於資料量的快速增長,部分研究人員試圖利用分散式來訓練GBDT,進而支撐大規模工作負載。

然而,現有系統在管理訓練資料方面方式各異,而且他們都未曾研究資料管理所帶來的影響。這篇文章旨在研究多種資料管理方法的優劣,並對這些分散式GBDT的效能進行比較。

這篇文章基於資料分割槽和資料儲存對資料管理策略進行了象限劃分。然後進行深度系統分析,並對各個象限的適用場景進行總結。基於以上分析,這篇文章提出一種新的分散式GBDT系統,名曰Vero,該系統採用了縱向分割槽行式儲存,這種組合適用於很多大規模資料的情景。

為了驗證本文的分析,作者們基於同樣程式碼實現了多個象限,並且在大量工作負載下對比了這些象限,最終在多個資料集上將Vero跟其他STOA系統進行對比。

根據本文的理論分析和實驗結果,在給定工作負載的前提下,可以對如何選擇適當的資料管理方式進行指導。

上面所提到的縱向分割槽即為基於特徵的類別對資料進行列式分割槽,而橫向分割槽即為按樣本進行分割槽。而所謂行式儲存即為以(特徵下標, 特徵值)對的方式進行儲存,即Compressed Sparse Row (CSR) 格式,而列式儲存即為以(樣本下標, 特徵值)對的方式進行儲存,即Compressed Sparse Column (CSC)格式。

幾種方法對應的象限如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

XGBoost是橫向分割槽,列式儲存的,即按樣本進行分割槽,並且每個樣本的所有特徵存在一起; LightGBM和DimBoost是橫向分割槽,行式儲存的,即按樣本進行分割槽,並且每個樣本的特徵是按(特徵下標,特徵值)對儲存的,並不是一個樣本的所有特徵都在一個分割槽;Yggdrasil是縱向分割槽,列式儲存的,即按特徵進行分割槽,並且樣本的同一個特徵存在一起

GBDT結構圖示如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

小知識點1:LogitBoost會利用二階泰勒展開。

小知識點2:ID3 利用決定分割點,CART利用基尼係數決定分割點。 

對於每個特徵如何選擇分割點有多種方法,比較常用的是基於直方圖的方法,圖示如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

小知識點3: 直方圖分割的初始分割常用的方法是基於分位數

小知識點4: 父節點的梯度等於兩個葉節點的梯度之和,因此,右子節點的梯度可以用父節點的梯度減去左子節點的梯度。

橫向分割槽時構建直方圖和最佳分割的通訊方法圖示如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

縱向分割槽情形下計算直方圖和最優分割的通訊方式圖示如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

行儲存與列儲存的區別如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

直方圖的規模跟三個因素相關

1 特徵數(D)    由於直方圖需要計算一階梯度和二階梯度,所以直方圖的規模跟2D呈正比

2 候選分割的個數(q)  跟候選分割個數q呈正比

3 類別數(C)   跟類別數C呈正比

橫向分割槽時每個worker都需要計算所有特徵的直方圖,所需儲存空間為大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

而縱向分割槽時,每個worker只需要計算一部分特徵的直方圖,所需儲存空間為大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

橫向分割槽時通訊成本為大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

主要耗在各個worker之間通訊直方圖

縱向分割槽時通訊成本為大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

示例對比如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

不同的index方法對比圖示如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

列式節點到例項的索引更新圖示如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

不同象限適用場景對比如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

Vero概覽如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)其中橫向分割槽轉為縱向分割槽需要五步

1 針對每個特徵計算分位數

2 生成候選分割

3 列分組

4 列分組重分割槽

5 廣播樣本標籤

列組成塊與二階段索引圖示如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

不同象限對比圖如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

其中包含了樣本數的影響,特徵維度的影響,樹深度的影響,類別數的影響,儲存空間的對比等。

資料集資訊統計如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

不同資料集上幾種方法的耗時對比如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

幾種方法的效果對比圖示如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

小知識點5:DimBoost是用Java實現的,而XGBoost 和 LightGBM是C++實現的

小總結:LightGBM 比較適用於低維資料集,Vero 比較適用於高維或多分類資料集。

環境及資源如下

每個機器64GB RAM, 24 cores, 10Gbps Ethernet. 

20GB memory,10 cores for each container

資料集

年齡分為9段

年齡模型和性別模型特徵數有33萬

口味偏好有100個標籤,特徵數有1萬5千

小知識點6:LightGBM由於環境限制不適用於生產環境, 沒有跟hadoop整合

三個工業級資料集上的效果對比如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

每個樹的執行時間對比如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

資料載入及預處理耗時對比如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

機器數的影響如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

低維資料集上幾種方法速度對比如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

跟LightGBM速度對比如下

大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)

XGBoost對應的論文為

Xgboost: A scalable tree boosting system. SIGKDD 2016

程式碼地址

https://github.com/dmlc/xgboost

特性

Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C++ and more. Runs on single machine, Hadoop, Spark, Flink and DataFlow

DimBoost對應的論文為

Dimboost: Boosting gradient boosting decision tree to higher dimensions, ICMD 2018

LightGBM對應的論文為

Lightgbm: A highly efficient gradient boosting decision tree, NIPS 2017

程式碼地址

https://github.com/Microsoft/LightGBM

簡介

A fast, distributed, high performance gradient boosting (GBT, GBDT, GBRT, GBM or MART) framework based on decision tree algorithms, used for ranking, classification and many other machine learning tasks. It is under the umbrella of the DMTK(http://github.com/microsoft/dmtk) project of Microsoft.

相關文章