全稱:extreme gradient boosting
基礎:gbdt
所屬:boosting迭代型、樹類演算法。
適用範圍:分類、回歸
優點:速度快、效果好、能處理大規模資料、支援多種語言、支 持自定義損失函式等等。
缺點:發布時間短(2014),工業領域應用較少,待檢驗
xgboost是在gbdt的基礎上對boosting演算法進行的改進,內部決策樹使用的是回歸樹,簡單回顧gbdt如下:
回歸樹的**結點對於平方損失函式,擬合的就是殘差;對於一般損失函式(梯度下降),擬合的就是殘差的近似值,**結點劃分時列舉所有特徵的值,選取劃分點。
最後**的結果是每棵樹的**結果相加。
3.1 定義樹的複雜度
把樹拆分成結構部分q和葉子權重部分w。
樹的複雜度函式和樣例:
定義樹的結構和複雜度的原因很簡單,這樣就可以衡量模型的複雜度了啊,從而可以有效控制過擬合。
3.2 xgboost中的boosting tree模型
和傳統的boosting tree模型一樣,xgboost的提公升模型也是採用的殘差(或梯度負方向),不同的是**結點選取的時候不一定是最小平方損失。
3.3 對目標函式的改寫
最終的目標函式只依賴於每個資料點的在誤差函式上的一階導數和二階導數。這麼寫的原因很明顯,由於之前的目標函式求最優解的過程中只對平方損失函式時候方便求,對於其他的損失函式變得很複雜,通過二階泰勒展開式的變換,這樣求解其他損失函式變得可行了。很讚!
當定義了**候選集合的時候,
求解:
3.4 樹結構的打分函式
obj代表了當指定乙個樹的結構的時候,在目標上面最多減少多少。(structure score)
對於每一次嘗試去對已有的葉子加入乙個分割
這樣就可以在建樹的過程中動態的選擇是否要新增乙個結點。
假設要列舉所有x < a 這樣的條件,對於某個特定的分割a,要計算a左邊和右邊的導數和。對於所有的a,我們只要做一遍從左到右的掃瞄就可以列舉出所有分割的梯度和gl、gr。然後用上面的公式計算每個分割方案的分數就可以了。
3.5 尋找**結點的候選集
1、暴力列舉
2、近似方法 ,近似方法通過特徵的分布,按照百分比確定一組候選**點,通過遍歷所有的候選**點來找到最佳**點。
兩種策略:全域性策略和區域性策略。在全域性策略中,對每乙個特徵確定乙個全域性的候選**點集合,就不再改變;而在區域性策略中,每一次** 都要重選一次**點。前者需要較大的**集合,後者可以小一點。對比補充候選集策略與**點數目對模型的影響。 全域性策略需要更細的**點才能和區域性策略差不多
3、weighted quantile sketch
陳天奇提出並從概率角度證明了一種帶權重的分布式的quantile sketch。
1、目標函式通過二階泰勒展開式做近似
2、定義了樹的複雜度,並應用到目標函式中
3、**結點處通過結構打分和分割損失動態生長
4、**結點的候選集合通過一種分布式quantile sketch得到
5、可以處理稀疏、缺失資料
6、可以通過特徵的列取樣防止過擬合
xgboost 有很多可調引數,具有極大的自定義靈活性。比如說:
(1)objective [ default=reg:linear ] 定義學習任務及相應的學習目標,可選的目標函式如下:
「reg:linear」 –線性回歸。
「reg:logistic」 –邏輯回歸。
「binary:logistic」 –二分類的邏輯回歸問題,輸出為概率。
「multi:softmax」 –處理多分類問題,同時需要設定引數num_class(類別個數)
(2)』eval_metric』 the choices are listed below,評估指標:
「rmse」: root mean square error
「logloss」: negative log-likelihood
(3)max_depth [default=6] 數的最大深度。預設值為6 ,取值範圍為:[1,∞]
Xgboost演算法梳理
目錄 1 演算法思想 2 演算法原理 3 損失函式 4 結點演算法 5 正則化 6 對缺失值處理 7 優缺點 8 應用場景 9 sklearn引數 官方文件 引數調整注意事項 python 包介紹 10 參考文章 該演算法思想就是不斷地新增樹,不斷地進行特徵 來生長一棵樹,每次新增乙個樹,其實是學習...
xgboost原理及應用 轉
說到xgboost,不得不說gbdt。了解gbdt可以看我這篇文章 位址,gbdt無論在理論推導還是在應用場景實踐都是相當完美的,但有乙個問題 第n顆樹訓練時,需要用到第n 1顆樹的 近似 殘差。從這個角度來看,gbdt比較難以實現分布式 ps 雖然難,依然是可以的,換個角度思考就行 而xgboos...
分類演算法(五) xgboost 安裝
win7下 xgboost安裝踩了一堆坑,記錄一下 總體概述,掃一眼,跳到下個鏈結 首先按照這個邏輯一步步安裝 具體一點看 後面繼續鏈結2後面的步驟。但是我還是遇到了其它問題,python版本,scipy版本問題等。正在解決中 我擦。解決了,居然下個whl直接就能安裝,網上寫的那麼複雜搞什麼。首先到...