日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【数据挖掘】XGBoost面试题:与GBDT的区别?为什么使用泰勒二阶展开?为什么可以并行训练?为什么快?防止过拟合的方法?如何处理缺失值?

發(fā)布時(shí)間:2023/12/20 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据挖掘】XGBoost面试题:与GBDT的区别?为什么使用泰勒二阶展开?为什么可以并行训练?为什么快?防止过拟合的方法?如何处理缺失值? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、簡(jiǎn)單介紹XGB

是一種基于boosting增強(qiáng)策略的加法模型,訓(xùn)練的時(shí)候采用前向分布算法進(jìn)行貪婪的學(xué)習(xí),每次迭代都學(xué)習(xí)一棵CART樹(shù)來(lái)擬合之前 t-1 棵樹(shù)的預(yù)測(cè)結(jié)果與訓(xùn)練樣本真實(shí)值的殘差。XGB對(duì)GBDT進(jìn)行了一系列優(yōu)化,比如損失函數(shù)進(jìn)行了二階泰勒展開(kāi)、目標(biāo)函數(shù)加入正則項(xiàng)、支持并行和默認(rèn)缺失值處理等,在可擴(kuò)展性和訓(xùn)練速度上有了巨大的提升,但其核心思想沒(méi)有大的變化。

2、XGB與GBDT的區(qū)別

  • 基分類器:XGB的基分類器不僅支持CART決策樹(shù),還支持線性分類器。
  • 導(dǎo)數(shù)信息:XGB對(duì)損失函數(shù)做了二階泰勒展開(kāi),GBDT只用了一階導(dǎo)數(shù)信息,并且XGB還支持自定義損失函數(shù),只要損失函數(shù)一階、二階可導(dǎo)。
  • 正則項(xiàng):XGB的目標(biāo)函數(shù)加了正則項(xiàng), 相當(dāng)于預(yù)剪枝,使得學(xué)習(xí)出來(lái)的模型更加不容易過(guò)擬合。
  • 列抽樣:XGB支持列采樣,與隨機(jī)森林類似,用于防止過(guò)擬合。
  • 缺失值處理:對(duì)樹(shù)中的每個(gè)非葉子結(jié)點(diǎn),XGB可以自動(dòng)學(xué)習(xí)出它的默認(rèn)分裂方向。如果某個(gè)樣本該特征值缺失,會(huì)將其劃入默認(rèn)分支。
  • 并行化:注意不是tree維度的并行,而是特征維度的并行。XGBt預(yù)先將每個(gè)特征按特征值排好序,存儲(chǔ)為塊結(jié)構(gòu),分裂結(jié)點(diǎn)時(shí)可以采用多線程并行查找每個(gè)特征的最佳分割點(diǎn),極大提升訓(xùn)練速度。

3、XGBoost為什么使用泰勒二階展開(kāi)

  • 精準(zhǔn)性:相對(duì)于GBDT的一階泰勒展開(kāi),XGB采用二階泰勒展開(kāi),可以更為精準(zhǔn)的逼近真實(shí)的損失函數(shù)
  • 可擴(kuò)展性:損失函數(shù)支持自定義,只需要新的損失函數(shù)二階可導(dǎo)。

4、XGBoost為什么可以并行訓(xùn)練

  • XGB的并行,并不是說(shuō)每棵樹(shù)可以并行訓(xùn)練,XGB本質(zhì)上仍然采用boosting思想,每棵樹(shù)訓(xùn)練前需要等前面的樹(shù)訓(xùn)練完成才能開(kāi)始訓(xùn)練。
  • XGBoost的并行,指的是特征維度的并行。在訓(xùn)練之前,每個(gè)特征按特征值對(duì)樣本進(jìn)行預(yù)排序,并存儲(chǔ)為Block結(jié)構(gòu),在后面查找特征分割點(diǎn)時(shí)可以重復(fù)使用,而且特征已經(jīng)被存儲(chǔ)為一個(gè)個(gè)block結(jié)構(gòu),那么在尋找每個(gè)特征的最佳分割點(diǎn)時(shí),可以利用多線程對(duì)每個(gè)block并行計(jì)算。

5、XGBoost為什么快

  • 分塊并行:訓(xùn)練前每個(gè)特征按特征值進(jìn)行排序并存儲(chǔ)為Block結(jié)構(gòu),后面查找特征分割點(diǎn)時(shí)重復(fù)使用,并且支持并行查找每個(gè)特征的分割點(diǎn)
  • 候選分位點(diǎn):每個(gè)特征采用常數(shù)個(gè)分位點(diǎn)作為候選分割點(diǎn)
  • CPU cache 命中優(yōu)化: 使用緩存預(yù)取的方法,對(duì)每個(gè)線程分配一個(gè)連續(xù)的buffer,讀取每個(gè)block中樣本的梯度信息并存入連續(xù)的Buffer中。
  • Block 處理優(yōu)化:Block預(yù)先放入內(nèi)存;Block按列進(jìn)行解壓縮;將Block劃分到不同硬盤(pán)來(lái)提高吞吐。

6、XGBoost防止過(guò)擬合的方法

XGB在設(shè)計(jì)時(shí),為了防止過(guò)擬合做了很多優(yōu)化,具體如下:

  • 目標(biāo)函數(shù)添加正則項(xiàng):葉子節(jié)點(diǎn)個(gè)數(shù)+葉子節(jié)點(diǎn)權(quán)重的L2正則化
  • 列抽樣:訓(xùn)練的時(shí)候只用一部分特征(不考慮剩余的block塊即可)
  • 子采樣:每輪計(jì)算可以不使用全部樣本,使算法更加保守
  • shrinkage: 可以叫學(xué)習(xí)率或步長(zhǎng),在XGB 進(jìn)行完一次迭代后,會(huì)將葉子節(jié)點(diǎn)的權(quán)重乘上該系數(shù),主要是為了削弱每棵樹(shù)的影響,讓后面有更大的學(xué)習(xí)空間。

7、XGBoost如何處理缺失值

XGB模型的一個(gè)優(yōu)點(diǎn)就是允許特征存在缺失值。對(duì)缺失值的處理方式如下:

  • 在特征k上尋找最佳分割點(diǎn)時(shí),不會(huì)對(duì)該列特征缺失的樣本進(jìn)行遍歷,而只對(duì)該列特征值為無(wú)缺失值的樣本上對(duì)應(yīng)的特征值進(jìn)行遍歷,通過(guò)這個(gè)技巧來(lái)減少了為稀疏離散特征尋找分割點(diǎn) 的時(shí)間開(kāi)銷。
  • 在邏輯實(shí)現(xiàn)上,為了保證完備性,會(huì)將該特征值缺失的樣本分別分配到左葉子結(jié)點(diǎn)和右葉子結(jié)點(diǎn),兩種情形都計(jì)算一遍后,選擇分裂后增益最大的那個(gè)方向(左分支或是右分支),作為預(yù)測(cè)時(shí)特征值缺失樣本的默認(rèn)分支方向。
  • 如果在訓(xùn)練中沒(méi)有缺失值而在預(yù)測(cè)中出現(xiàn)缺失,那么會(huì)自動(dòng)將缺失值的劃分方向放到右子結(jié)點(diǎn)。

總結(jié)

以上是生活随笔為你收集整理的【数据挖掘】XGBoost面试题:与GBDT的区别?为什么使用泰勒二阶展开?为什么可以并行训练?为什么快?防止过拟合的方法?如何处理缺失值?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。