xgboost全名叫(extreme gradient boosting)極端梯度提公升,經常被用在一些比賽中,其效果顯著。它是大規模並行boosted tree的工具,它是目前最快最好的開源boosted tree工具包。xgboost 所應用的演算法就是 gbdt(gradient boosting decision tree)的改進,既可以用於分類也可以用於回歸問題中。
一開始人們用決策樹做分類的時候,演算法往往是基於一棵樹的決策,而得到乙個得分,而這個得分不夠精確。這也是叫做弱分類器
後來把這些弱分類器整合,將他們每個人得到分數全部累加起來,就是整合思想
當我們在計算每個葉子節點的權值(**值)的時候:
w是其葉子的得分,x是葉子節點的下標
目標函式:
用來**真實值與**值的均方差,該值越小越好
再對比上面一節的,當我們在基於一顆決策樹(分類器)上再加入一顆決策樹的時候,我們希望是我們需要的葉子節點的得分是通過累加後越來越接近我們的期望值,所以說xgboost是乙個提公升的過程。
因為t棵樹的值,等於t-1得出的值與t得出的值累加,所以有以下推導
其中,每當插入一棵樹的時候,為了避免過擬合,還需要加入懲罰函式。計算方式如下
最終我們的整體表示式為
每次往模型中加入一棵樹,其損失函式便會發生變化。另外在加入第t棵樹時,則前面第t-1棵樹已經訓練完成,此時前面t-1棵樹的正則項和訓練誤差都成已知常數項
如果損失函式採用均方誤差時,其目標損失函式變為
殘差部分(圈出來的)
每次加入數的時候,都需要是殘差更小,效果就越好
最終化成這樣:
需要用到泰勒展開式:
這裡我們用泰勒展開式來近似原來的目標函式,將看作。則原目標函式可以寫成:
同時對於第t棵樹時
而複雜度等於
同時我們將目標函式全部轉換成在第t棵樹葉子節點的形式
所以對可以看做是每個樣本在第t棵樹的葉子節點得分值相關函式的結果之和,所以我們也能從第t棵樹的葉子節點上來表示
其中為第t棵樹中總葉子節點的個數
表示在第個葉子節點上的樣本,wj 第個 j 葉子節點的得分值。
則:希望目標函式最小,所以令其偏導等於0,再帶回目標函式
g1,h1都是可以根據上面的公式求出來,其他同理。
那我們應該怎麼應用呢?
其實我們上班得出來的公式是乙個得分標準的評分,我們還有一部分就是基於某個標準來判斷左右樹的切割點,每乙個切割點都要遍歷一下選取最優的切割點,而判斷的公式如下
分出來的左右數評分值(使用得出來的目標函式計算出來的)-分出來的左右數評分值(使用得出來的目標函式計算出來的)-每次加入樹的代價
這裡注意,因為目標函式前面帶有負號,所以實際計算出來的式子(如上圖所示)是(分出來的左右數評分值-分出來的左右數評分值)。
得出了的gain(增益值),哪個增益最大,就選哪種方法切割
到此,xgboost的演算法完成了自己的使命。
DGA系列之MLP(二)
針對機器學習對深度學習技術的發展過渡,發表一些個人的理解。一開始的機器學習,是基於特徵去實現讓機器具有識別工作,但需要識別的目標數量變得大的時候,機器學習所需要訓練的數量也會變大,而這個人們初期用的方法是在同乙個維度的橫向擴充套件 不斷地使用特徵資料訓練 這樣的確可以達到高的命中率,構造乙個完美的分...
xgboost系列一 xgboost是什麼?
首先我們 一下理解xgboost的核心的一件事。那就是xgboost的數學模型,想要理解它,這個數學是跳不過去的。xgboost是基於提公升樹的概念,這種思想就是說學習一棵樹可能效果很差,因為一棵樹比較不穩定,去除某些特徵或者樣本以後,重新訓練樹的結構會變化,這就導致 的結果不穩定。為了讓模型的效果...
機器學習之XGBOOST全面理解
一 目標函式 訓練損失和正則化項兩部分 1 l 代表損失函式,常見的損失函式 平方損失函式 邏輯回歸損失函式 2 y xgboost是乙個加法模型,因此 得分是每棵樹打分之和。3 正則項 k棵數的複雜度之和。第t棵樹 第t次迭代馴練的模型是ft x 泰勒展開式 x 對應前t 1棵數,x相當於第t棵樹...