一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

100天搞定機器學(xué)習(xí)|Day60 遇事不決,XGBoost

 ml_Py 2021-12-08

XGBoost 是一種集大成的機器學(xué)習(xí)算法,可用于回歸,分類和排序等各種問題,在機器學(xué)習(xí)大賽及工業(yè)領(lǐng)域被廣泛應(yīng)用。成功案例包括:網(wǎng)頁文本分類、顧客行為預(yù)測、情感挖掘、廣告點擊率預(yù)測、惡意軟件分類、物品分類、風(fēng)險評估、大規(guī)模在線課程退學(xué)率預(yù)測。

XGBoost是初學(xué)者最值得深度理解的模型之一,它將決策樹、boosting、GBDT 等知識點串聯(lián)起來,強烈建議大家都手?jǐn)]一波。本文我將從XGBoost淵源及優(yōu)點、模型原理及優(yōu)化推導(dǎo)、XGBoost模型參數(shù)解析、調(diào)參實例,XGBoost可視化等方面介紹XGBoost。提醒一下,XGBoost 是在 GBDT 基礎(chǔ)上的改進(jìn),閱讀本文需對 GBDT 有一定的了解,不熟悉的同學(xué)可以看一下前篇:100天搞定機器學(xué)習(xí)|Day58 機器學(xué)習(xí)入門:硬核拆解GBDT

XGBoost淵源及優(yōu)勢

在數(shù)據(jù)建模中,經(jīng)常采用Boosting方法,該方法將成百上千個分類準(zhǔn)確率較低的樹模型組合起來,成為一個準(zhǔn)確率很高的預(yù)測模型。這個模型會不斷地迭代,每次迭代就生成一顆新的樹。但在數(shù)據(jù)集較復(fù)雜的時候,可能需要幾千次迭代運算,這將造成巨大的計算瓶頸。

針對這個問題,華盛頓大學(xué)的陳天奇博士開發(fā)的XGBoost(eXtreme Gradient Boosting)基于C++通過多線程實現(xiàn)了回歸樹的并行構(gòu)建,并在原有Gradient Boosting算法基礎(chǔ)上加以改進(jìn),從而極大地提升了模型訓(xùn)練速度和預(yù)測精度。

XGBoost 主要優(yōu)勢如下

1、GBDT在優(yōu)化時只用到一階導(dǎo)數(shù)信息,XGBoost同時用到了一階和二階導(dǎo)數(shù),還支持自定義損失函數(shù),前提是損失函數(shù)可一階和二階求導(dǎo);

2、加入了正則項,用于控制模型的復(fù)雜度,防止過擬合;

3、借鑒了隨機森林的做法,支持列抽樣(隨機選擇特征),不僅能降低過擬合,還能減少計算;

4、尋找最佳分割點時,實現(xiàn)了一種近似法,還考慮了稀疏數(shù)據(jù)集、缺失值的處理,大大提升算法的效率;

5、支持并行;

6、近似直方圖算法,用于高效地生成候選的分割點;

7、在算法實現(xiàn)時做了很多優(yōu)化,大大提升了算法的效率,內(nèi)存空間不夠時,利用了分塊、預(yù)取、壓縮、多線程協(xié)作的思想。

XGBoost模型原理及優(yōu)化推導(dǎo)

XGBoost其實也是GBDT的一種,還是加性模型和前向優(yōu)化算法。

加法模型就是說強分類器由一系列弱分類器線性相加而成。一般組合形式如下:

其中,就是一個個的弱分類器,是弱分類器學(xué)習(xí)到的最優(yōu)參數(shù),就是弱學(xué)習(xí)在強分類器中所占比重,P是所有的組合。這些弱分類器線性相加組成強分類器。

前向分步就是說在訓(xùn)練過程中,下一輪迭代產(chǎn)生的分類器是在上一輪的基礎(chǔ)上訓(xùn)練得來的。也就是可以寫成這樣的形式:

XGBoost 的模型是什么樣子的呢?

  • 其中 K 是樹的棵數(shù)。
  • 是回歸樹,,滿足
  • q表示每棵樹的結(jié)構(gòu),它會將一個訓(xùn)練樣本實例映射到相對應(yīng)的葉子索引上。
  • T是樹中的葉子數(shù)。
  • 每個對應(yīng)于一個獨立的樹結(jié)構(gòu)q和葉子權(quán)重w。
  • 是所有回歸樹組成的函數(shù)空間。

與決策樹不同的是,每棵回歸樹包含了在每個葉子上的一個連續(xù)分值,我們使用來表示第i個葉子上的分值。對于一個給定樣本實例,我們會使用樹上的決策規(guī)則(由q給定)來將它分類到葉子上,并通過將相應(yīng)葉子上的分值(由w給定)做求和,計算最終的預(yù)測值。

XGBoost的學(xué)習(xí)

為了在該模型中學(xué)到這些函數(shù)集合,我們會對下面的正則化目標(biāo)函數(shù)做最小化

其中: 是損失函數(shù),常見的有 2 種:
平方損失函數(shù):
邏輯回歸損失函數(shù):

: 正則化項,用于懲罰復(fù)雜模型,避免模型過分?jǐn)M合訓(xùn)練數(shù)據(jù)。常用的正則有L1正則與L2正則:
L1正則(lasso):
L2正則:

下一步就是對目標(biāo)函數(shù)進(jìn)行學(xué)習(xí),每一次保留原來的模型不變,加入一個新的函數(shù)到我們的模型中。

其中,為第i個實例在第t次迭代時的預(yù)測,我們需要添加樹 ,然后最小化下面的目標(biāo)函數(shù):

假設(shè)損失函數(shù)使用的是平方損失 ,則上式進(jìn)一步寫為:

現(xiàn)在,我們采用泰勒展開來定義一個近似的目標(biāo)函數(shù):

其中:

分別是loss function上的一階梯度和二階梯度。

忘記基礎(chǔ)知識的同學(xué)順便重溫一下泰勒公式

泰勒公式(Taylor’s Formula)是一個用函數(shù)在某點的信息描述其附近取值的公式。其初衷是用多項式來近似表示函數(shù)在某點周圍的情況。

函數(shù)處的基本形式如下

還有另外一種常見的寫法,,將處進(jìn)行泰勒展開,得:

現(xiàn)在,我們?nèi)サ舫A?,然后重新認(rèn)識一下我們新的目標(biāo)函數(shù)

定義是葉子 j 的實例集合。將正則項帶入,展開目標(biāo)函數(shù):

看起來有點復(fù)雜,令:,,上式簡化為:

上式中是相互獨立的,是平方項。對于一個確定的結(jié)構(gòu),我們可以計算最優(yōu)的權(quán)重:

帶入上式,計算得到的loss最優(yōu)解

可以作為一個得分函數(shù)(scoring function)來衡量一棵樹結(jié)構(gòu)的質(zhì)量。

我們有了一個方法來衡量一棵樹有多好,現(xiàn)在來看XGBoost優(yōu)化的第二個問題:如何選擇哪個特征和特征值進(jìn)行分裂,使最終我們的損失函數(shù)最???

XGBoost特征選擇和切分點選擇指標(biāo)定義為:

具體如何分裂?

XGBoost每一步選能使分裂后增益最大的分裂點進(jìn)行分裂。而分裂點的選取之前是枚舉所有分割點,這稱為完全貪婪算法(exact greedy algorithm),在所有特征上,枚舉所有可能的劃分。

  • 基于當(dāng)前節(jié)點嘗試分裂決策樹,默認(rèn)分?jǐn)?shù)score=0,G和H為當(dāng)前需要分裂的節(jié)點的一階二階導(dǎo)數(shù)之和。
  • 對特征序號 k=1,2...K:
  • 將樣本按特征k從小到大排列,依次取出第i個樣本,依次計算當(dāng)前樣本放入左子樹后,左右子樹一階和二階導(dǎo)數(shù)和:
  • 嘗試更新最大的分?jǐn)?shù):
  • 基于最大score對應(yīng)的劃分特征和特征值分裂子樹。
  • 如果最大score為0,則當(dāng)前決策樹建立完畢,計算所有葉子區(qū)域的, 得到弱學(xué)習(xí)器,更新強學(xué)習(xí)器,進(jìn)入下一輪弱學(xué)習(xí)器迭代.如果最大score不是0,則繼續(xù)嘗試分裂決策樹。

當(dāng)數(shù)據(jù)量十分龐大時,Exact Greedy 算法就會很慢,因此XGBoost引入了近似的算法,和Exact Greedy很類似,這里就不再展開講了。


原理推導(dǎo)(精簡版)

下面是XGBoost原理推導(dǎo)的精簡版,方便同學(xué)們復(fù)習(xí)使用。

Xgboost@sklearn模型參數(shù)解析

XGBoost的實現(xiàn)有原生版本,同時也有Scikit-learn版本,兩者在使用上有一些微差異,這里給出xgboost.sklearn 參數(shù)解釋。XGBoost使用key-value字典的方式存儲參數(shù):

#部分重要參數(shù)
params = {
    'booster''gbtree',
    'objective''multi:softmax',  # 多分類的問題
    'num_class': 10,               # 類別數(shù),與 multisoftmax 并用
    'gamma': 0.1,                  # 用于控制是否后剪枝的參數(shù),越大越保守,一般0.1、0.2這樣子。
    'max_depth': 12,               # 構(gòu)建樹的深度,越大越容易過擬合
    'lambda': 2,                   # 控制模型復(fù)雜度的權(quán)重值的L2正則化項參數(shù),參數(shù)越大,模型越不容易過擬合。
    'subsample': 0.7,              # 隨機采樣訓(xùn)練樣本
    'colsample_bytree': 0.7,       # 生成樹時進(jìn)行的列采樣
    'min_child_weight': 3,
    'silent': 1,                   # 設(shè)置成1則沒有運行信息輸出,最好是設(shè)置為0.
    'eta': 0.007,                  # 如同學(xué)習(xí)率
    'seed': 1000,
    'nthread': 4,                  # cpu 線程數(shù)
}
xgboost完整參數(shù)解析

篇幅原因,調(diào)參實例及XGBoost可視化且聽下回分解。
如有收獲,還請不吝給個在看、收藏、轉(zhuǎn)發(fā)

參考

https://www.cnblogs.com/pinard/p/10979808.html
https://www./xgboost.html https://www./vivounicorn/note/446479 https://www.cnblogs.com/chenjieyouge/p/12026339.html

也可以加一下老胡的微信
圍觀朋友圈~~~

推薦閱讀

(點擊標(biāo)題可跳轉(zhuǎn)閱讀)

麻省理工學(xué)院計算機課程【中文版】
【清華大學(xué)王東老師】現(xiàn)代機器學(xué)習(xí)技術(shù)導(dǎo)論.pdf
機器學(xué)習(xí)中令你事半功倍的pipeline處理機制
機器學(xué)習(xí)避坑指南:訓(xùn)練集/測試集分布一致性檢查
機器學(xué)習(xí)深度研究:特征選擇中幾個重要的統(tǒng)計學(xué)概念

老鐵,三連支持一下,好嗎?↓↓↓

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    成年午夜在线免费视频| 免费午夜福利不卡片在线 视频| 中文字幕日韩欧美亚洲午夜 | 欧美国产日韩在线综合| 中文字幕乱码亚洲三区| 中文字幕佐山爱一区二区免费| 国产精品丝袜美腿一区二区| 亚洲专区中文字幕在线| 国产韩国日本精品视频| 国产精品日韩精品最新| 国产精品尹人香蕉综合网 | 日韩国产亚洲欧美激情| 国产成人精品国产亚洲欧洲| 亚洲熟妇av一区二区三区色堂| 男人大臿蕉香蕉大视频| 国内午夜精品视频在线观看| 久一视频这里只有精品| 欧美成人免费夜夜黄啪啪| 激情五月激情婷婷丁香| 成人午夜爽爽爽免费视频| 国产一区在线免费国产一区| 日韩人妻中文字幕精品| 99久久精品免费精品国产| 九九热精品视频在线观看| 亚洲欧美中文字幕精品| 久久99青青精品免费观看| 日本免费熟女一区二区三区| 91欧美亚洲视频在线| 天海翼高清二区三区在线| 色婷婷久久五月中文字幕| 国产福利一区二区久久| 欧美日韩精品久久亚洲区熟妇人| 日本国产欧美精品视频| 国产一区二区精品高清免费| 国产精品色热综合在线| 亚洲国产av在线视频| 国产又大又黄又粗的黄色| 亚洲国产成人精品福利| 亚洲最新的黄色录像在线| 日韩精品视频免费观看| 伊人久久青草地综合婷婷|