XGBoost之切分點算法(貪婪算法、分位點算法、權重分位點算法、稀疏數據切分算法)之一(含例子解釋)

 

需要注意是:引入的分割不一定會使得情況變好,因爲在引入分割的同時也引入新葉子的懲罰項。所以通常需要設定一個閾值,如果引入的分割帶來的增益小於一個閥值的時候,我們可以剪掉這個分割。此外在XGBoost的具體實踐中,通常會設置樹的深度來控制樹的複雜度,避免單個樹過於複雜帶來的過擬合問題。

關於精確貪心算法和近似分割算法的小結
QA:爲什麼近似分割算法比精確貪心算法要快?
首先我們得捋一下這兩個尋找最佳分裂點的時候都有哪些公共的時間開銷

預排序:每個特徵都是按照排序好的順序存儲的,這一部分在存儲的時候就已經完成了
計算所有樣本的一階導G和二階導L,這個過程只需要進行一次
對樣本的G和L累加求和,這個過程也只需要進行一次,爲了後續做差加速
精確貪心算法中是將所有樣本G、L累加
近似分割算法中是按桶累加
算法中的兩個for循環,第一個循環是遍歷所有特徵,這一步兩個算法相同
不同的開銷在於,兩個算法中第二個for循環中:

精確貪心算法遍歷的所有樣本 O(#feature x # samples)
近似貪心算法遍歷了所有桶 : O(#feature x # bins )
因爲桶的數目遠小於樣本數,所以得以加速
轉載:https://blog.csdn.net/dpengwang/article/details/87910480

XGBoost之切分點算法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章