BAT面試題7和8:xgboost爲什麼用泰勒展開?是有放回選特徵嗎?

接下來,每天推送一道BAT面試題,日積月累,相信大家會從中學到一些東西。最後希望大家順利拿到自己期盼已久的OFFER.

今天連載兩題,都是關於XGBoost的。文中提到的陳大佬即是發明者:陳天奇。

7.爲什麼XGBoost要用泰勒展開,優勢在哪裏?

實際上使用二階泰勒展開是爲了xgboost能夠【自定義loss function】,如果按照最小二乘法的損失函數直接推導,同樣能夠得到陳大佬最終的推導式子:

二階泰勒展開實際不是最小二乘法,平方損失函數的二階泰勒展開=最小二乘法。但陳佬爲何想用二階泰勒展開呢,我猜是爲了xgboost庫的可擴展性,因爲任何損失函數只要二階可導即能【複用】陳大佬所做的關於最小二乘法的任何推導。而且泰勒的本質是儘量去模仿一個函數,我猜二階泰勒展開已經足以近似大量損失函數了,典型的還有基於分類的對數似然損失函數。嘿,這樣同一套代碼就能完成迴歸或者分類了,而不是每次都推導一番,重寫訓練代碼。

8.XGBoost如何尋找最優特徵?是有放回還是無放回的呢?

XGBoost在訓練的過程中給出各個特徵的評分,從而表明每個特徵對模型訓練的重要性。

XGBoost利用梯度優化模型算法, 樣本是不放回的,想象一個樣本連續重複抽出,梯度來回踏步,這顯然不利於收斂。

XGBoost支持子採樣, 也就是每輪計算可以不使用全部樣本。

參考:

https://www.zhihu.com/question/61374305

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章