机器学习面试——XGBoost,GBDT,RF(上)
1、常見的集成思想
bagging:基學(xué)習(xí)器之間并行訓(xùn)練,且學(xué)習(xí)器之間沒有依賴,像是集體決策的過程,每個個體都進(jìn)行單獨(dú)學(xué)習(xí),再通過投票的方式做最后的集體決策。常見的算法有隨機(jī)森林
boosting:基學(xué)習(xí)器之間串行訓(xùn)練,且學(xué)習(xí)器之間存在依賴,將基學(xué)習(xí)器層層疊加,每一層在訓(xùn)練的時(shí)候,對前一層基學(xué)習(xí)器分錯的樣本給予更高的權(quán)重。類似于人類的學(xué)習(xí)過程,對于錯誤,進(jìn)行加強(qiáng)學(xué)習(xí),直到犯錯誤的次數(shù)減少到很低的程度。常見的算法有AdaBoost、GBDT、XGBoost。
Stacking:首先使用原始數(shù)據(jù)訓(xùn)練出一級學(xué)習(xí)器,將一級學(xué)習(xí)器的輸出作為輸入并使用對應(yīng)原始標(biāo)記作為新標(biāo)記,組成新的數(shù)據(jù)集來訓(xùn)練二級學(xué)習(xí)器(結(jié)合學(xué)習(xí)器)。常用于模型融合。
2、從偏差和方差的角度解釋Bagging和Boosting
偏差是由于分類器的表達(dá)能力有限導(dǎo)致的系統(tǒng)性錯誤;
方差是由于分類器對于樣本分布過于敏感,導(dǎo)致在訓(xùn)練樣本數(shù)較少時(shí),產(chǎn)生過擬合;
bagging是采用分而治之策略,通過對訓(xùn)練樣本進(jìn)行多次采樣,并分別訓(xùn)練出不同模型,然后做綜合,減小集成分類器之間的方差。
boosting是通過逐步聚焦于基學(xué)習(xí)器分錯的樣本,減小集成分類器的偏差。
2、隨機(jī)森林的隨機(jī)性?
數(shù)據(jù)集:有放回隨機(jī)取樣
特征:隨機(jī)選取特征,進(jìn)行分割點(diǎn)計(jì)算
3、Adboost、提升樹(boosting tree),梯度提升樹的異同?
相同:
- 加法模型:模型是基學(xué)習(xí)器進(jìn)行累加,得到一個最終的加法模型。
- 前向分步算法:從前向后,每一步只學(xué)習(xí)一個基函數(shù)及其系數(shù),逐步逼近優(yōu)化目標(biāo)函數(shù),簡化優(yōu)化的復(fù)雜度。
區(qū)別:
Adaboost的實(shí)現(xiàn)步驟:
(1)初始化權(quán)重分布,假設(shè)模型有均勻的權(quán)值分布。
(2)對數(shù)據(jù)進(jìn)行學(xué)習(xí),計(jì)算Gm(分類器)在訓(xùn)練數(shù)據(jù)集上的分類誤差率,
(3)計(jì)算Gm(分類器)系數(shù),系數(shù)代表在最終分類器上的重要性。
(4)更新權(quán)重(m步的權(quán)重分布),
(5)對基學(xué)習(xí)器進(jìn)行累加,組成線性組合,得到最終的分類器:
注釋:I(x)是指示函數(shù),sign(x)是符號函數(shù)。
,
提升樹(Boosting Tree)的實(shí)現(xiàn)步驟:
提升方法實(shí)際采用加法模型和前向分布算法,以決策樹為基函數(shù)的提升方法稱為提升樹,對分類問題決策樹是二叉分類樹,損失函數(shù)時(shí)指數(shù)損失,對于回歸問題決策樹是二叉回歸樹,損失函數(shù)是均方損失。
分析:
其中,r是當(dāng)前模型擬合數(shù)據(jù)的殘差。
梯度提升樹(Gradient boosting DT):
將當(dāng)前模型損失函數(shù)的負(fù)梯度作為殘差的近似替換值。
4、RF和GBDT的區(qū)別
相同點(diǎn):都用了集成思想
不同點(diǎn):
- RF是bagging思想,減小了方差,GBDT是boosting思想,減小了偏差
- RF是串行,GBDT是并行
- RF是分類和回歸樹,GBDT只能回歸樹
- RF是采用投票進(jìn)行最終決策,GBDT是多棵樹累加決策
- RF對異常值不敏感,且不需要?dú)w一化,GBDT對異常值敏感(串行),需要?dú)w一化(GBDT的樹是在上一顆樹的基礎(chǔ)上通過梯度下降求解最優(yōu)解,歸一化能收斂的更快,而隨機(jī)森林本來就是通過減少方差提高性能的,樹之間建立關(guān)系是獨(dú)立的,不需要?dú)w一化)
5、GBDT的缺點(diǎn)?
- 在高維稀疏的數(shù)據(jù)集上,表現(xiàn)性不好。
- 訓(xùn)練過程是串行,需要在決策樹內(nèi)部采用一些局部并行的手段提高訓(xùn)練速度。
6、GBDT和XGBoost的異同?
不同:
- GBDT用了一階導(dǎo)數(shù)信息,XGBoost用了一階、二階導(dǎo)數(shù)信息
- GBDT不執(zhí)行并行化,XGBoost在數(shù)據(jù)和特征方便增加了并行化處理,(數(shù)據(jù)采樣、特征重要性排序)
- GBDT對異常值敏感,XGBoost新增了缺失值處理策略
- GBDT只能是樹模型,XGBoost可以自定義基學(xué)習(xí)器
- XGBoost增加了正則化的策略
7、Xgboost 如何尋找最優(yōu)特征?是有放回還是無放回呢?
Xgboost在訓(xùn)練的過程中給出各個特征的增益評分,最大增益的特征會被選出來作為分裂依據(jù),從而記憶了每個特征對在模型訓(xùn)練時(shí)的重要性。從根到葉子中間節(jié)點(diǎn)涉及某特征的次數(shù)作為該特征重要性排序。Xgboost是不放回,還支持子采樣和列采樣。
8、Xgboost為什么要用泰勒展開,優(yōu)勢在哪里?
XGBoost使用了一階和二階偏導(dǎo),二階導(dǎo)數(shù)有利于梯度下降的更快更準(zhǔn),使用泰勒展開取得函數(shù)做自變量的二階導(dǎo)數(shù)形式,可以再不選定損失函數(shù)具體形式的情況下,僅僅依靠輸入數(shù)據(jù)的值就可以進(jìn)行葉子分裂優(yōu)化算法,本質(zhì)上將損失函數(shù)的選取和模型算法優(yōu)化/參數(shù)選擇分開,這種去耦合增強(qiáng)了XGBoost的適用性,使得模型按需選取損失函數(shù)。
9、RF如何處理缺失值?
方法一:將數(shù)值型變量中的缺失值用其所對應(yīng)類別中的中位數(shù)替換。把描述型變量缺失的部分用所對應(yīng)類別出現(xiàn)最多的數(shù)值替代。
方法二:在方法一的基礎(chǔ)上做了升級,引入了權(quán)重變量,即對需要替換的數(shù)據(jù)先和其他數(shù)據(jù)做相似度測量,如果是分類變量,則用沒有缺失的觀測實(shí)例相似度的權(quán)重投票,如果是連續(xù)型變量,則用加權(quán)平均和進(jìn)行填充。
10、XGBoost如何處理缺失值?
xgboost把缺失值當(dāng)做稀疏矩陣來對待,本身的在節(jié)點(diǎn)分裂時(shí)不考慮的缺失值的數(shù)值。缺失值數(shù)據(jù)會被分到左子樹和右子樹分別計(jì)算損失,選擇較優(yōu)的那一個。如果訓(xùn)練中沒有數(shù)據(jù)缺失,預(yù)測時(shí)出現(xiàn)了數(shù)據(jù)缺失,那么默認(rèn)被分類到右子樹。11、隨機(jī)森林如何評估特征重要性?
12、XGBoost如何給特征評分?
在CART樹中,通過基尼指數(shù)選取分離點(diǎn)的特征,一個特征被選中的次數(shù)越多,該特征的評分就越高。
在XGboost中,枚舉不同的樹結(jié)構(gòu),利用打分函數(shù)來尋找最優(yōu)的結(jié)構(gòu)樹。從樹深度0開始,每個節(jié)點(diǎn)遍歷所有特征,對于單個特征,首先對特征的值進(jìn)行排序,然后線性掃描該特征進(jìn)行選擇最好的切割點(diǎn),再比較所有的特征,選擇信息增益增高的特征為當(dāng)前節(jié)點(diǎn)。
假設(shè)年齡這個特征,我們首先對年齡進(jìn)行排序,設(shè)定閾值a,將小于閾值a的分為一類,大于閾值a的分為一類,計(jì)算該特征的基尼指數(shù),若存在多個閾值,就會出現(xiàn)多個基尼指數(shù)值,選擇最大的那個為當(dāng)前的閾值,并計(jì)算所有特征(年齡、性別、職業(yè)等),選擇最大的gini指數(shù)的特征為當(dāng)前節(jié)點(diǎn)。這種只看到當(dāng)前節(jié)點(diǎn)的思想就是greddy exact。
引入新葉子的懲罰項(xiàng)是為了優(yōu)化目標(biāo)函數(shù),對應(yīng)了樹的剪枝,當(dāng)分割閾值小于懲罰項(xiàng),就忽略這個分割。
總結(jié)
以上是生活随笔為你收集整理的机器学习面试——XGBoost,GBDT,RF(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下vi命令大全,linux系统
- 下一篇: C语言——关键字