論文筆記:XGBoost: A Scalable Tree Boosting System
1 人贊了文章
論文鏈接
XGBoost: A Scalable Tree Boosting System
基礎知識
參見Boosted Trees
Shrinkage and Column Subsampling
這是另外兩個防止過擬合的技術
Shrinkage給新加的權重* ,類似於梯度下降方法中的學習率。
Column Subsampling在隨機森林中被採用過,能防止過擬合,提高運算速度。
SPLIT FINDING ALGORITHMS
樹學習的關鍵問題是找到最佳的split點。
Basic Exact Greedy Algorithm
暴力窮舉
遍歷所有feature的所有可能split點
演算法1有兩層for循環,時間複雜度為
Approximate Algorithm
演算法2隻有一層for循環,所以時間複雜度為
演算法2比演算法1花費時間少的原因是:對feature 進行等分,對每個分區進行求和,然後在一個分區一個分區大粒度進行遍歷。
Sparsity-aware Split Finding
找split的方法:為了適用於稀疏數據,給樹節點加默認方向,當數據的某個feature缺失時,則沿著這個樹節點的默認方向走下去。詳見下圖
從訓練數據中學習默認方向,從大到小遍歷,從小到大遍歷,然後選取max gain為默認方向,具體演算法如下:
Sparsity-aware Split Finding方法的效果是處理sparsity數據速度更快
訓練默認方向時只使用non-missing entries,所以速度更快。
SYSTEM DESIGN
Column Block for Parallel Learning
訓練之前將每一列進行單獨排序,存在內存中。Cache-aware Access
問題
對於exact greedy algorithm
在每個線程里分配內部的緩存效果
對於大數據,速度提升明顯
對於approximate algorithms
選取合適的block大小,block大小選為block中包含的最大example數量block size太小,每個線程的壓力很小,但是整體的效率很低
block size太大,每個線程的緩存會溢出
block size為 時,能最好的平衡緩存問題跟並行效率
Blocks for Out-of-core Computation
Block Compression
按列進行壓縮,當讀入內存時解壓Block Sharding
在多個硬碟中共享數據
推薦閱讀:
TAG:機器學習 | 深度學習DeepLearning | xgboost |