LightGBM新特性總結


LightGBM提出兩種新方法:Gradient-based One-Side Sampling (GOSS) 和Exclusive Feature Bundling (EFB)(基於梯度的one-side采樣和互斥的特征捆綁)

 

Gradient-based One-Side Sampling

  針對數量大,GOSS保留所有的梯度較大的實例,在梯度小的實例上使用隨機采樣。為了抵消對數據分布的影響,計算信息增益的時候,GOSS對小梯度的數據引入常量乘數。GOSS首先根據數據的梯度絕對值排序,選取top a個實例。然后在剩余的數據中隨機采樣b個實例。接着計算信息增益時為采樣出的小梯度數據乘以(1-a)/b,這樣算法就會更關注訓練不足的實例,而不會過多改變原數據集的分布。

  在GOSS中,

  1. 首先根據數據的梯度將訓練降序排序。
  2. 保留top a個數據實例,作為數據子集A。
  3. 對於剩下的數據的實例,隨機采樣獲得大小為b的數據子集B。
  4. 最后我們通過以下方程估計信息增益:

  此處GOSS通過較小的數據集估計信息增益,將大大地減小計算量。更重要的是,理論表明GOSS不會丟失許多訓練精度。

 

Exclusive Feature Bundling 

  針對特征維度高,而高維的數據通常是稀疏的,能否設計一種無損地方法來減少特征的維度。特別的,稀疏特征空間中,許多特征是互斥的,例如他們從不同時為非零值。我們可以綁定互斥的特征為單一特征,通過仔細設計特征臊面算法,作者從特征捆綁中構建了與單個特征相同的特征直方圖。這種方式的間直方圖時間復雜度從O(#data * #feature)降到O(#data * #bundle),由於#bundle << # feature,我們能夠極大地加速GBDT的訓練過程而且損失精度。

  有兩個問題:

  1. 怎么判定哪些特征應該綁在一起(build bundled)?
  2. 怎么把特征綁為一個(merge feature)?

bundle(什么樣的特征被綁定)?

算法:

  1. 建立一個圖,每個邊有權重,其權重和特征之間總體沖突相關。
  2. 按照降序排列圖中的度數來排序特征。
  3. 檢查每個排序之后的每個特征,這個特征綁定到使得沖突最小的綁定,或者建立一個新的綁定。

為了繼續提高效率,LightGBM提出了一個更加高效的無圖的排序策略:將特征按照非零值個數排序,這和使用圖節點的度排序相似,因為更多的非零值通常會導致沖突,新算法在之前算法基礎上改變了排序策略。

merging features(特征合並)

  通過將互斥特征放在不同的箱中來構建bundle。這可以通過將偏移量添加到特征原始值中實現,例如,假設bundle中有兩個特征,原始特征A取值[0, 10],B取值[0, 20]。我們添加偏移量10到B中,因此B取值[10, 30]。通過這種做法,就可以安全地將A、B特征合並,使用一個取值[0, 30]的特征取代AB。算法見上圖算法4。

  EFB算法能夠將許多互斥的特征變為低維稠密的特征,就能夠有效的避免不必要0值特征的計算。實際,通過用表記錄數據中的非零值,來忽略零值特征,達到優化基礎的直方圖算法。通過掃描表中的數據,建直方圖的時間復雜度將從O(#data)降到O(#non_zero_data)。

 

參考

LightGBM原理-LightGBM: A Highly Efficient Gradient Boosting Decision Tree


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM