XGBOOST—eXtreme Gradient Boosting演算法原理
阿新 • • 發佈:2019-02-06
XGBOOST演算法是由華盛頓大學陳天奇博士以GBDT和RandomForest為基礎提出的,並開發了C++版本。該演算法由於精度高、可並行化處理和可移植性,被廣泛應用於各個領域, 這也是Kaggle競賽者最常用的方法之一。
假設樣本集D = {(xi, yi)...} i = 1、...n
XGBOOST預測函式可表示為
我們使用分部加法,可將此式變換為
其中K代表迭代K輪;方程左側為預測值;對映fk如下:
目標函式:誤差函式+正則化
所以目標函式就可變化為
由前面的公式,我們可知道
我們可以使用泰勒二階展開:
接下來我們使用L2構建正則化函式:
最後目標函式可變換為:
對公式進行整理:
得到:
這裡為了找到wj,我們可以求導,並令導數等於0,可以得到:
這裡為了找出最優樹結構,定義了結構分數就是上邊的目標函式Obj,
利用列舉法來得到最優樹結構集合,其結構會很複雜的,所以通常選擇貪心法,對已有的葉節點,引入新的分裂點,這裡我們要定義一個增益
其中GL為原葉節點左兒子的誤差函式一階導數之和;GL為原葉節點右兒子的誤差函式一階導數之和;
例如分裂點a
但由於又引進了一個新的量複雜度代價,所以增益衡量是否引進行的分裂還有一些問題,我們可以設定一個閥值,小於於閥值不引入新的分裂,大於閥值引入新的分裂。
XGBOOST還採用了隨機森林的行隨機和列隨機,以及還針對缺失值的劃分做了詳細的討論,詳細瞭解可以看看陳天奇博士的論文。
XGBOOST的優缺點:
優點:
1、可分散式處理;
2、精度高;
3、可適應特徵維度高的情況;
4、可移植性;
5、可有效防止過擬合;
6、噪音的魯棒性強;
缺點:
1、調節引數複雜
參考
http://dataunion.org/15787.html