1. 請(qǐng)問(決策樹、隨機(jī)森林,Boosting、Adaboot)GBDT和XGBoost的區(qū)別是什么?
Ans:①首先,隨機(jī)森林是一個(gè)包含多個(gè)決策樹的分類器;AdaBoost——即Adaptive Boosting(自適應(yīng)增強(qiáng)),經(jīng)典的AdaBoost算法只能處理采用指數(shù)損失函數(shù)的二分類學(xué)習(xí)任務(wù),對(duì)異常點(diǎn)outlier比較敏感;GBDT指梯度上升決策樹算法,相當(dāng)于融合決策樹和梯度上升的Boosting算法。
②xgboost類似gbdt的優(yōu)化版,在精度和效率上都有了提升,具體優(yōu)點(diǎn)包括:1.損失函數(shù)是用泰勒展開式二項(xiàng)逼近,而非gbdt的一階導(dǎo)數(shù);2.對(duì)樹的結(jié)構(gòu)進(jìn)行了正則化約束,防止模型過度復(fù)雜,降低過擬合的可能性;3.節(jié)點(diǎn)分裂的方式不同,gbdt用的gini系數(shù),xgboost是經(jīng)過優(yōu)化推導(dǎo)后的。
2. 為什么梯度提升方法傾向選擇決策樹 (通常是CART樹) 作為基學(xué)習(xí)器?
Ans:這與決策樹自身的優(yōu)點(diǎn)有關(guān)系:①?zèng)Q策樹可以認(rèn)為是if-then規(guī)則集合,易于理解,可解釋性強(qiáng),預(yù)測(cè)速度快。②相對(duì)于其他算法更少的特征工程,如可以不用做特征標(biāo)準(zhǔn)化,可處理缺失值,不用關(guān)心特征之間是否相互依賴。③決策樹能自動(dòng)組合多個(gè)特征,輕松處理特征之間的交互關(guān)系,并且是非參數(shù)化的,不必?fù)?dān)心異常值或是否線性可分。
3. 在GBDT中,如何抑制單棵決策樹的過擬合問題?
Ans:剪枝、限制樹的最大深度,限制葉子節(jié)點(diǎn)的最少樣本數(shù)量、限制幾點(diǎn)分裂時(shí)的最少樣本數(shù)量,吸收bagging思想對(duì)訓(xùn)練樣本采樣、在學(xué)習(xí)單棵決策樹時(shí)只使用一部分樣本、借鑒隨機(jī)森林的思路在學(xué)習(xí)時(shí)只采樣一部分特征、在目標(biāo)函數(shù)中添加正則項(xiàng)。
4. 為什么xgboost要用泰勒展開,優(yōu)勢(shì)在哪里?
Ans:xgboost使用了一階和二階偏導(dǎo),二階導(dǎo)數(shù)有利于梯度下降的更快更準(zhǔn),使用泰勒展開取得二階導(dǎo)數(shù)形式,可以再不選定損失函數(shù)具體形式的情況下,用于算法優(yōu)化分析。本質(zhì)上把損失函數(shù)的選取和模型算法優(yōu)化/參數(shù)選擇分開了,這種去耦合增加了xgboost的適用性。
5. Xgboost如何尋找最優(yōu)特征?是有放回的,還是無放回的?
Ans:xgboost在訓(xùn)練的過程中,給出各個(gè)特征的評(píng)分,以表明每個(gè)特征對(duì)模型訓(xùn)練的重要性。xgboost利用梯度優(yōu)化模型算法,樣本是不放回的。但xgboost支持子采樣——即每輪計(jì)算可以不使用全部樣本。
6. ID3和C4.5有什么區(qū)別?
Ans:①ID3采用信息熵的增益作為切分依據(jù),傾向于選取特征值較多的屬性進(jìn)行劃分;C4.5采用信息熵的增益比作為切分依據(jù),對(duì)較少特征數(shù)目的屬性有所偏好。
7.請(qǐng)談一談決策樹剪枝有哪些方法?
Ans:剪枝的作用是為了防止決策樹過擬合,有兩種思路:預(yù)剪枝(Pre-Pruning)和后剪枝(Post-Pruning)
①預(yù)剪枝——指在構(gòu)造決策樹的同時(shí)進(jìn)行剪枝。在創(chuàng)建分支的過程中,為了避免過擬合,可以設(shè)定一個(gè)閾值,熵減少小于閾值時(shí),則停止繼續(xù)創(chuàng)建分支。實(shí)際效果并不好
②后剪枝——指在決策樹構(gòu)建完成之后回溯,進(jìn)行剪枝。對(duì)擁有相同父節(jié)點(diǎn)的一組節(jié)點(diǎn)進(jìn)行檢查,判斷如果將其合并,熵增加量是否小于某一閾值?是,則合并為一個(gè)節(jié)點(diǎn),其中包含了所有可能的結(jié)果。后剪枝是刪除一些子樹,然后用葉子節(jié)點(diǎn)代替。此葉子節(jié)點(diǎn)的類別通過多數(shù)原則確定——用子樹中大多數(shù)訓(xùn)練樣本所屬的類別來標(biāo)識(shí)。算法包括Reduced-Error Pruning、Pessimistic Error Pruning(悲觀剪枝)
③預(yù)剪枝可能產(chǎn)生欠擬合的風(fēng)險(xiǎn),后剪枝由于需要先生成完整的樹,再自底向上進(jìn)行剪枝,因此花費(fèi)的時(shí)間要久的多。
8. 決策樹怎么處理連續(xù)值和缺失值?
Ans:①連續(xù)值處理——采用連續(xù)屬性離散化技術(shù),最簡(jiǎn)答的方法是采用二分法進(jìn)行處理(C4.5采用的機(jī)制)。對(duì)特征值進(jìn)行升序排序,取兩個(gè)特征值之間的中點(diǎn)作為可能的分裂點(diǎn),以此離散化。
②缺失值處理——包含兩個(gè)待解決的問題:1. 如何在屬性值缺失的情況下,進(jìn)行劃分屬性的選擇?顯然,僅課根據(jù)在各屬性上沒有缺失值的樣本來選擇。2.給定劃分屬性,若樣本在該屬性上的值缺失,如何對(duì)樣本進(jìn)行劃分?若樣本x在屬性A上的取值已知,則將x劃入與其取值對(duì)應(yīng)的子節(jié)點(diǎn),且樣本權(quán)重在子節(jié)點(diǎn)中保持為Wx;若樣本x在屬性A上取值未知,則將x劃入所有子節(jié)點(diǎn),且樣本權(quán)重與屬性值A(chǔ)v對(duì)應(yīng)的子節(jié)點(diǎn)中,調(diào)整為Rv*Wx。直觀上,就是讓同一個(gè)樣本以不同的概率劃入到不同的子節(jié)點(diǎn)去。
9. Adaboost的集成效果為什么會(huì)比單個(gè)學(xué)習(xí)器效果好?怎么最大化其優(yōu)勢(shì)?
Ans:①首先介紹一下boost的理論依據(jù)。假設(shè)單個(gè)學(xué)習(xí)器的錯(cuò)誤率為:

假設(shè)錯(cuò)誤率相互獨(dú)立,由Hoeffding不等式可以得到整體學(xué)習(xí)器的錯(cuò)誤率:

由不等式右邊可知:如果學(xué)習(xí)器的數(shù)目T逐漸增大,那么整個(gè)學(xué)習(xí)器的錯(cuò)誤率將指數(shù)級(jí)下降,甚至最終趨向于0
②最大化優(yōu)勢(shì)的核心在于:如何生成準(zhǔn)確性又不是很差,并能保證多樣性的個(gè)體學(xué)習(xí)器?(保證錯(cuò)誤率假設(shè)成立)。兩種方式:Boosting——個(gè)體學(xué)習(xí)器間存在強(qiáng)依賴關(guān)系,必須串行生成;Bagging——個(gè)體之間不存在強(qiáng)依賴關(guān)系,并行生成(如 隨機(jī)森林)