99精品亚洲国产_中国A级毛片基地_欧美高清av电影在线观看_中文国产三级自拍_色爱区综合激月婷婷激情五月_一级黄色片免费在线观看_涩涩片大全百度影音_国产精品视频2024年最新视频_天堂AV无码不卡_在线观看欧美韩日

pg娛樂電子游戲 珍藏版 | 20道XGBoost面試題

大家一定都聽說過XGBoost的名聲。它不僅是數(shù)據(jù)科學(xué)競賽的神器,而且在業(yè)界也得到了廣泛的應(yīng)用。本文與大家分享XGBoost多年收集的高頻面試題。希望它能夠加深您對XGBoost的理解,更重要的是,在尋找機(jī)會時(shí)提供一些幫助。

1. 簡單介紹XGBoost

首先,我們需要談?wù)凣BDT。它是一種基于boosting增強(qiáng)策略的加性模型。訓(xùn)練時(shí)采用前向分布算法進(jìn)行貪心學(xué)習(xí)。每次迭代都會學(xué)習(xí) CART 樹以適應(yīng)先前的 t-1 樹。預(yù)測結(jié)果與訓(xùn)練樣本真實(shí)值之間的殘差。

XGBoost對GBDT做了一系列優(yōu)化,如損失函數(shù)的二階泰勒展開、目標(biāo)函數(shù)添加正則項(xiàng)、支持并行和默認(rèn)缺失值處理等,極大地提高了可擴(kuò)展性和訓(xùn)練速度,但其核心思想并沒有發(fā)生明顯的變化。

2.XGBoost和GBDT有什么區(qū)別? 3、XGBoost為什么采用泰勒二階展開式? 4. XGBoost為什么可以并行訓(xùn)練? 5.為什么XGBoost很快? 6. XGBoost如何防止過擬合?

XGBoost在設(shè)計(jì)過程中,為了防止過擬合,做了很多優(yōu)化,如下:

7. XGBoost 如何處理缺失值

XGBoost 模型的優(yōu)點(diǎn)之一是它允許特征具有缺失值。缺失值處理如下:

640?wx_fmt=png

find_split時(shí)缺失值處理的偽代碼

8. XGBoost中如何計(jì)算葉子節(jié)點(diǎn)的權(quán)重

XGBoost目標(biāo)函數(shù)的最終推導(dǎo)形式如下:

640?wx_fmt=png

利用求二次函數(shù)最優(yōu)值的知識,當(dāng)目標(biāo)函數(shù)達(dá)到最小值Obj*時(shí),每個葉子節(jié)點(diǎn)的權(quán)重為wj*。

具體公式如下:

640?wx_fmt=png

9. XGBoost 中樹的停止生長條件 10. RF 和 GBDT 的區(qū)別

相似之處:

差異:

11. XGBoost 如何處理不平衡數(shù)據(jù)

對于不平衡的數(shù)據(jù)集,比如用戶購買行為,肯定是極度不平衡的,這對XGBoost的訓(xùn)練影響很大。 XGBoost 有兩種內(nèi)置方法來解決該問題:

首先,如果你關(guān)心AUC,并用AUC來評估模型的性能,可以通過設(shè)置scale_pos_weight來平衡正負(fù)樣本的權(quán)重。例如,當(dāng)正負(fù)樣本比例為1:10時(shí),scale_pos_weight可以為10;

其次,如果你關(guān)心概率(預(yù)測分?jǐn)?shù)的合理性),則無法重新平衡數(shù)據(jù)集(這會破壞數(shù)據(jù)的真實(shí)分布),并且應(yīng)該將 max_delta_step 設(shè)置為有限的數(shù)字以幫助收斂(當(dāng)基本型號為 LR)。

原話如下:

For?common?cases?such?as?ads?clickthrough?log,?the?dataset?is?extremely?imbalanced.?This?can?affect?the?training?of?xgboost?model,?
and?there?are?two?ways?to?improve?it.
??If?you?care?only?about?the?ranking?order?(AUC)?of?your?prediction
??????Balance?the?positive?and?negative?weights,?via?scale_pos_weight
??????Use?AUC?for?evaluation
??If?you?care?about?predicting?the?right?probability
??????In?such?a?case,?you?cannot?re-balance?the?dataset
??????In?such?a?case,?set?parameter?max_delta_step?to?a?finite?number?(say?1)?will?help?convergence

那么,源碼中是如何使用scale_pos_weight來平衡樣本的呢?是調(diào)整權(quán)重還是過采樣?請看源碼:

if?(info.labels[i]?==?1.0f)??w?*=?param_.scale_pos_weight

可見,應(yīng)增加少量樣本的權(quán)重。

此外,還可以通過上采樣、下采樣、SMOTE算法或自定義代價(jià)函數(shù)來解決正負(fù)樣本不平衡的問題。

12.比較LR和GBDT,告訴我們什么情況下GBDT不如LR

我們先說一下LR和GBDT的區(qū)別:

在高維稀疏特征的場景下,LR一般表現(xiàn)優(yōu)于GBDT。原因如下:

我們先看一個例子:

假設(shè)一個二分類問題,標(biāo)簽為0和1,特征有100個維度。如果有1w個樣本,但是只有10個正樣本1,并且這些樣本的特征f1的值都是1,而剩下的9990個樣本的f1特征都是0(這在高維中很常見稀疏的情況)。

我們都知道pg娛樂電子游戲,在這種情況下,樹模型可以很容易地優(yōu)化出一棵使用f1特征作為重要分裂節(jié)點(diǎn)的樹,因?yàn)檫@個節(jié)點(diǎn)可以直接很好地劃分訓(xùn)練數(shù)據(jù)pg網(wǎng)賭軟件下載,但是當(dāng)測試的時(shí)候,會發(fā)現(xiàn)效果很差,因?yàn)檫@個特征 f1 恰好與 y 符合這個模式。這也是我們常說的過擬合。

這種情況下,如果使用LR,也會出現(xiàn)類似過擬合的情況:y = W1*f1 + Wi*fi+….,其中W1特別大,無法擬合這10個樣本。為什么此時(shí)樹模型過??擬合更加嚴(yán)重呢?

仔細(xì)想一想,你會發(fā)現(xiàn)現(xiàn)在的模型一般都有正則項(xiàng),而LR等線性模型的正則項(xiàng)就是對權(quán)重的懲罰。也就是說,一旦W1太大,懲罰就會很大pg棋牌,進(jìn)一步壓縮W1的值,使He不至于太大。然而,樹模型是不同的。樹模型的懲罰項(xiàng)通常是葉子節(jié)點(diǎn)數(shù)和深度等,而我們都知道,對于上述情況,樹只需要一個節(jié)點(diǎn)就可以完美劃分9990個和10個樣本。一個節(jié)點(diǎn),產(chǎn)生的懲罰項(xiàng)極小。

這就是為什么在高維稀疏特征方面線性模型比非線性模型更好的原因:具有正則化的線性模型不太可能過度擬合稀疏特征。

13. XGBoost 中如何剪枝樹 14. XGBoost 如何選擇最佳分割點(diǎn)?

XGBoost在訓(xùn)練前根據(jù)特征值對特征進(jìn)行預(yù)排序,并將其存儲為塊結(jié)構(gòu)。以后節(jié)點(diǎn)分裂時(shí)可以重用該結(jié)構(gòu)。

因此,可以采用特征并行的方法,利用多個線程計(jì)算每個特征的最優(yōu)分割點(diǎn),并根據(jù)每次分割后產(chǎn)生的增益,最終選擇增益最大的特征的特征值作為最優(yōu)分割點(diǎn)觀點(diǎn)。

如果在計(jì)算每個特征的最佳分割點(diǎn)時(shí)遍歷每個樣本,計(jì)算復(fù)雜度會非常大。這種全局掃描的方式不適合大數(shù)據(jù)場景。 XGBoost還提供了直方圖近似算法。對特征進(jìn)行排序后,只選擇常數(shù)個候選分割位置作為候選分割點(diǎn),大大提高了節(jié)點(diǎn)分割時(shí)的計(jì)算效率。

15、XGBoost如何體現(xiàn)其可擴(kuò)展性? 16. XGBoost如何評估特征的重要性?

我們使用三種方法來評估 XGBoost 模型中特征的重要性:

 官方文檔:	
(1)weight?-?the?number?of?times?a?feature?is?used?to?split?the?data?across?all?trees.?	
(2)gain?-?the?average?gain?of?the?feature?when?it?is?used?in?trees.?	
(3)cover?-?the?average?coverage?of?the?feature?when?it?is?used?in?trees.

注:這里的覆蓋率是指某個特征作為分割點(diǎn)后,受其影響的樣本數(shù)量,即有多少樣本被該特征分割成兩個子節(jié)點(diǎn)。

17. XGBooost 參數(shù)調(diào)整的一般步驟

首先需要初始化一些基本變量,例如:

(1) 確定學(xué)習(xí)率和估計(jì)器數(shù)量

您可以首先使用 0.1 作為學(xué)習(xí)率,然后使用 cv 來找到最佳估計(jì)量。

(2) max_深度和min_child_weight

我們調(diào)整這兩個參數(shù),因?yàn)檫@兩個參數(shù)對輸出結(jié)果影響很大。我們首先將這兩個參數(shù)設(shè)置為較大的數(shù)字,然后繼續(xù)迭代修改它們以縮小范圍。

max_depth,每個子樹的最大深度,從range(3,10,2)開始檢查。

min_child_weight,子節(jié)點(diǎn)的權(quán)重閾值,從range(1,6,2)檢查。

如果一個節(jié)點(diǎn)被分裂,并且其所有子節(jié)點(diǎn)的權(quán)重之和大于閾值,則葉子節(jié)點(diǎn)可以被分裂。

(3) 伽瑪

也稱為最小分割損失min_split_loss,取0.1到0.5之間的值,指的是分割一個葉子節(jié)點(diǎn)后??損失函數(shù)減少的閾值。

(4) 子樣本,colsample_bytree

subsample是訓(xùn)練的采樣比例

colsample_bytree 是特征的采樣比例

兩者都檢查從 0.6 到 0.9

(5) 正則化參數(shù)

alpha 是L1正則化系數(shù),嘗試1e-5, 1e-2, 0.1, 1, 100

lambda 是 L2 正則化系數(shù)

(6) 降低學(xué)習(xí)率

降低學(xué)習(xí)率,同時(shí)增加樹的數(shù)量。通常最終的學(xué)習(xí)率設(shè)置為0.01~0.1

18. XGBoost模型過擬合如何解決?

當(dāng)發(fā)生過擬合時(shí),有兩類參數(shù)可以緩解:

第一類參數(shù):用于直接控制模型的復(fù)雜度。包括max_depth、min_child_weight、gamma等參數(shù)

第二類參數(shù):用于增加隨機(jī)性,從而使模型在訓(xùn)練時(shí)對噪聲不敏感。包括子樣本,colsample_bytree

另一種選擇是直接降低學(xué)習(xí)率,但需要同時(shí)增加估計(jì)器參數(shù)。

19. 為什么XGBoost對缺失值的敏感度不如某些模型?

對于缺失值的特征,一般的解決方案是:

一些模型,例如SVM和KNN,在其模型原理中涉及樣本距離的測量。如果缺失值處理不當(dāng),最終會導(dǎo)致模型預(yù)測結(jié)果不佳。

樹模型對缺失值的敏感性較低,可以在大多數(shù)時(shí)候數(shù)據(jù)缺失的情況下使用。原因是,樹中每個節(jié)點(diǎn)在分裂時(shí),都是在尋找某個特征的最佳分裂點(diǎn)(特征值),完全沒有必要考慮缺失特征值的樣本。也就是說,如果某些樣本 缺失的特征值缺失,對于尋找最佳分割點(diǎn)影響不大。

XGBoost 有處理丟失數(shù)據(jù)的特定方法。

因此,對于缺失處理后有缺失值的數(shù)據(jù):

20.XGBoost和LightGBM的區(qū)別

640?wx_fmt=png

(1)樹生長策略:XGB采用level-wise分裂策略,LGB采用leaf-wise分裂策略。 XGB對每一層的所有節(jié)點(diǎn)進(jìn)行無差別的分裂,但有些節(jié)點(diǎn)的增益可能很小,這對結(jié)果影響不大,并帶來不必要的開銷。 Leaf-wise選擇所有葉子節(jié)點(diǎn)中分割利潤最大的節(jié)點(diǎn),但容易出現(xiàn)過擬合問題,因此需要限制最大深度。

(2)分割點(diǎn)搜索算法:XGB采用特征預(yù)排序算法,LGB采用基于直方圖的分割點(diǎn)算法。其優(yōu)點(diǎn)如下:

但實(shí)際上,xgboost的近似直方圖算法也和lightgbm的直方圖算法類似。為什么xgboost的近似直方圖算法還是比lightgbm慢很多?

xgboost 在每一層動態(tài)構(gòu)建直方圖。因?yàn)閤gboost的直方圖算法并不是針對特定的特征,而是所有的特征共享一個直方圖(每個樣本的權(quán)重是二階導(dǎo)數(shù)),所以每一層都要重構(gòu)直方圖,lightgbm中每個特征都有一個直方圖,所以構(gòu)建一次直方圖就足夠了。

(3)對離散變量的支持:分類變量無法直接輸入,因此需要提前對分類變量進(jìn)行編碼(如one-hot編碼),而LightGBM可以直接處理分類變量。

(4)緩存命中率:XGB使用Block結(jié)構(gòu)的一個缺點(diǎn)是,在獲取梯度時(shí),是通過索引來獲取的,而獲取這些梯度的順序是按照特征大小的順序,這會導(dǎo)致內(nèi)存不連續(xù)使用權(quán)??赡軙?dǎo)致CPU緩存命中率較低,從而影響算法效率。 LGB基于直方圖分裂特征,每個bin中存儲梯度信息,因此訪問梯度連續(xù),緩存命中率高。

(5)LightGBM和XGboost的并行策略不同:

參考:

1.

2.

關(guān)鍵詞:

客戶評論

我要評論