1. 程式人生 > >XGBOOST—eXtreme Gradient Boosting演算法原理

XGBOOST—eXtreme Gradient Boosting演算法原理

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