今日面試題分享:為什麼xgboost要用泰勒展開,優勢在哪裡?

七月線上實驗室發表於2019-03-14

640?wx_fmt=png

今日面試題分享
為什麼xgboost要用泰勒展開,優勢在哪裡?


參考答案:


解析:

xgboost使用了一階和二階偏導, 二階導數有利於梯度下降的更快更準. 使用泰勒展開取得函式做自變數的二階導數形式, 可以在不選定損失函式具體形式的情況下, 僅僅依靠輸入資料的值就可以進行葉子分裂優化計算, 本質上也就把損失函式的選取和模型演算法優化/引數選擇分開了. 這種去耦合增加了xgboost的適用性, 使得它按需選取損失函式, 可以用於分類, 也可以用於迴歸。 


更進一步,引用的知乎答主宋佳慧的話,說: 實際上使用二階泰勒展開是為了xgboost能夠自定義loss function,如果按照最小二乘法的損失函式直接推導,同樣能夠得到xgboost最終的推導式子:

640?wx_fmt=gif640?wx_fmt=jpeg


二階泰勒展開實際不是 約等於 最小二乘法,平方損失函式的二階泰勒展開=最小二乘法。但為何想用二階泰勒展開呢,一方面是為了xgboost庫的可擴充套件性,因為任何損失函式只要二階可導即能複用xgboost所做的關於最小二乘法的任何推導。而且泰勒的本質是儘量去模仿一個函式,畢竟二階泰勒展開已經足以近似大量損失函式了,典型的還有基於分類的對數似然損失函式。 


這樣同一套程式碼就能完成迴歸或者分類了,而不是每次都推導一番,重寫訓練程式碼。 


此外,Xgboost官網上有說,當目標函式是MSE時,展開是一階項(殘差)+二階項的形式(官網說這是一個nice form),而其他目標函式,如log loss的展開式就沒有這樣的形式。為了能有個統一的形式,所以採用泰勒展開來得到二階項,這樣就能把MSE推導的那套直接複用到其他自定義損失函式上。


簡短來說,就是為了統一損失函式求導的形式以支援自定義損失函式。當然,這是從為什麼會想到引入泰勒二階的角度來說的。


題目來源:七月線上官網(www.julyedu.com)——面試題庫——面試大題——機器學習


640?wx_fmt=png



640?wx_fmt=gif

今日學習推薦

Spark大資料實戰班

開課時間:3月16日(本週六)

五位大廠架構師

只教工程實戰和實際應用

四大課程特色  十一大實戰專案

幫你清楚的知道如何在企業中實戰應用


640?wx_fmt=jpeg

諮詢/報名/組團可新增微信客服

julyedukefu_02


掃描下方二維碼

檢視更多課程詳情

640?wx_fmt=png

長按識別二維碼


往期推薦






【實戰分享】電影推薦系統專案實戰應用

萬字長文概述NLP中的深度學習技術

34個最優秀好用的Python開源框架

神經網路P圖新神器:摘墨鏡戴美瞳都能搞定,加首飾換髮型真假難分 | 程式碼開源

一文詳解機器學習中最好用的提升方法:Boosting 與 AdaBoost



諮詢,檢視課程,請點選“閱讀原文

給我【好看

你也越好看!

640?wx_fmt=png

相關文章