【機器學習】--xgboost從初識到應用

LHBlog發表於2018-06-14

一、前述

在 Kaggle 的很多比賽中,我們可以看到很多 winner 喜歡用 xgboost,而且獲得非常好的表現,今天就來看看 xgboost 到底是什麼以及如何應用。Gradient boosting 是 boosting 的其中一種方法,所謂 Boosting ,就是將弱分離器 f_i(x) 組合起來形成強分類器 F(x) 的一種方法。

二、具體

1、舉例

說明:在tree1和tree2裡面 男孩的得分值是2.9,實際是將不同的權重值加和 。 相當於將不同的弱分類器組合起來,這種思想就是整合思想。

2、案例分析

舉列子:比如比銀行借錢,假設想向銀行借1000塊錢 ,第一次銀行借給我們950塊錢,與我們想要的差1000-950=50元 ,然後加一顆決策樹,讓銀行再多借30元,這時銀行借給我們950+30=980元 ,差1000-980=20元,然後再加一顆決策樹,讓銀行多借15元,與最終目標差5元,即每一次不斷擬合殘差,達到最後效果。

我們希望每加一個樹能夠對預測值提升,所以保留之前的預測值,然後再這基礎上再加上新的函式來預測,改變預測值,但是新函式的效果必須是朝著提升之前的預測結果目標(即減少誤差,使目標函式越來越小)來的,這是xgboost的目標。

為了防止過擬合,我們需要對目標函式加上正則項,在決策樹裡面,葉子結點越多,越容易過擬合,所以我們需要對葉子節點個數加上正則化,決策越多,加上的懲罰越大,同時我們還要對葉子結點權重加上懲罰項,最終表現形式如下。T代表一棵樹。

那麼我們如何選擇每一輪加入什麼f呢?答案是非常直接的,選取一個f來使得我們的目標函式儘量最大地降低、最終損失函式的表示如下。希望在t-1顆樹的基礎上,新加一個樹來優化這一個目標。

 

 

目標函式接著轉換:

 

 

目標函式應用例項:

對於每次擴充套件,遍歷所有的分割方案,選擇基尼係數最大的一個分類來擴充套件。

 

 

 

 

 

相關文章