xgboost全名叫(extreme gradient boosting)極端梯度提公升,gbdt(gradient boosting decision tree)的改進
xgboost的核心演算法思想:
1、不斷地新增樹,不斷地進行特徵**來生長一棵樹,每次新增乙個樹,其實是學習乙個新函式f(x),去擬合上次**的殘差。
2、當我們訓練完成得到k棵樹,我們要**乙個樣本的分數,其實就是根據這個樣本的特徵,在每棵樹中會落到對應的乙個葉子節點,每個葉子節點就對應乙個分數
3、最後只需要將每棵樹對應的分數加起來就是該樣本的**值。
關於xgboost演算法目標函式推導如下:
xgboost與gbdt二者的不同與共同點:
1、gbdt是機器學習演算法,xgboost是該演算法的工程實現
2、在使用cart作為基分類器時,xgboost顯示的加入了正則項來控制模型的複雜度,有利於防止過擬合,從而提高模型的泛化能力【在adaboost與gbdt中也有正則化,只不過是以係數的形式出現】
3、gbdt在模型訓練時只使用了代價函式的一階導數資訊,xgboost對代價函式進行二階泰勒展開,可以同時使用一階和二階導數
4、傳統的gbdt採用cart作為基分類器,xgboost支援多種型別的基分類器,比如線性分類器
5、傳統的gbdt在每輪迭代時使用全部的資料,xgboost則採用了與隨機森林相似的策略,支援對資料的取樣
6、傳統的gbdt沒有設計對缺失值的處理,xgboost能夠自動學習出缺失值的處理策略
7、在尋找最佳分割點時,考慮傳統的列舉每個特徵的所有可能分割點的貪心法效率太低,xgboost 實現了一種近似的演算法。大致的思想是根據百分位法列舉幾個可能成為分割點的候選者,然後從候選者中根據上面求分割點的公式計算找出最佳的分割點。同時當**時遇到乙個負損失時,gbm 會停止**。xgboost 會一直**到指定的最大深度(max_depth),然後回過頭來剪枝。如果某個節點之後不再有正值,它會去除這個**。這種做法的優點,當乙個負損失(如-2)後面有個正損失(如+10)的時候,就顯現出來了。gbm 會在-2處停下來,因為它遇到了乙個負值。但是 xgboost 會繼續**,然後發現這兩個**綜合起來會得到+8,因此會保留這兩個**。
8、xgboost 還考慮了當資料量比較大,記憶體不夠時怎麼有效的使用磁碟,主要是結合多執行緒、資料壓縮、分片的方法,盡可能的提高演算法的效率。
正則項的目的:是通過控制基學習器的複雜度來防止過擬合
XGBoost演算法 學習筆記
學習背景 最近想要學習和實現一下xgboost演算法,原因是最近對專案有些想法,準備做個回歸 作為當下比較火的回歸 演算法,準備直接套用試試效果。一 基礎知識 1 泰勒公式 泰勒公式是乙個用函式在某點的資訊描述其附近取值的公式。具有區域性有效性。基本形式如下 由以上的基本形式可知泰勒公式的迭代形式為...
機器學習 xgboost演算法過程推導
xgboost是boosting演算法的其中一種,該演算法思想就是不斷地新增樹,不斷地進行特徵 來生長一棵樹,每次新增乙個樹,其實是學習乙個新函式,去擬合上次 的殘差。具體的目標函式如下 主要就是找到ft來優化這一目標函式,通過乙個簡單的例子來形象的理解該目標函式。例如是小明真實有100個糖果,現在...
xgboost演算法原理
全稱 extreme gradient boosting 基礎 gbdt 所屬 boosting迭代型 樹類演算法。適用範圍 分類 回歸 優點 速度快 效果好 能處理大規模資料 支援多種語言 支 持自定義損失函式等等。缺點 發布時間短 2014 工業領域應用較少,待檢驗 xgboost是在gbdt的...