今日面試題分享:為什麼xgboost要用泰勒展開,優勢在哪裡?
為什麼xgboost要用泰勒展開,優勢在哪裡?
參考答案:
解析:
xgboost使用了一階和二階偏導, 二階導數有利於梯度下降的更快更準. 使用泰勒展開取得函式做自變數的二階導數形式, 可以在不選定損失函式具體形式的情況下, 僅僅依靠輸入資料的值就可以進行葉子分裂優化計算, 本質上也就把損失函式的選取和模型演算法優化/引數選擇分開了. 這種去耦合增加了xgboost的適用性, 使得它按需選取損失函式, 可以用於分類, 也可以用於迴歸。
更進一步,引用的知乎答主宋佳慧的話,說: 實際上使用二階泰勒展開是為了xgboost能夠自定義loss function,如果按照最小二乘法的損失函式直接推導,同樣能夠得到xgboost最終的推導式子:
二階泰勒展開實際不是 約等於 最小二乘法,平方損失函式的二階泰勒展開=最小二乘法。但為何想用二階泰勒展開呢,一方面是為了xgboost庫的可擴充套件性,因為任何損失函式只要二階可導即能複用xgboost所做的關於最小二乘法的任何推導。而且泰勒的本質是儘量去模仿一個函式,畢竟二階泰勒展開已經足以近似大量損失函式了,典型的還有基於分類的對數似然損失函式。
這樣同一套程式碼就能完成迴歸或者分類了,而不是每次都推導一番,重寫訓練程式碼。
此外,Xgboost官網上有說,當目標函式是MSE時,展開是一階項(殘差)+二階項的形式(官網說這是一個nice form),而其他目標函式,如log loss的展開式就沒有這樣的形式。為了能有個統一的形式,所以採用泰勒展開來得到二階項,這樣就能把MSE推導的那套直接複用到其他自定義損失函式上。
簡短來說,就是為了統一損失函式求導的形式以支援自定義損失函式。當然,這是從為什麼會想到引入泰勒二階的角度來說的。
題目來源:七月線上官網(www.julyedu.com)——面試題庫——面試大題——機器學習
今日學習推薦
【Spark大資料實戰班】
開課時間:3月16日(本週六)
五位大廠架構師
只教工程實戰和實際應用
四大課程特色 十一大實戰專案
幫你清楚的知道如何在企業中實戰應用
諮詢/報名/組團可新增微信客服
julyedukefu_02
掃描下方二維碼
檢視更多課程詳情
☟
長按識別二維碼
▼
神經網路P圖新神器:摘墨鏡戴美瞳都能搞定,加首飾換髮型真假難分 | 程式碼開源
一文詳解機器學習中最好用的提升方法:Boosting 與 AdaBoost
點
諮詢,檢視課程,請點選“閱讀原文”
給我【好看】
你也越好看!
相關文章
- 今日面試題分享:什麼是最大熵面試題熵
- 今日面試題分享面試題
- 面試問你為什麼要用Spring怎麼答?面試Spring
- 面試每日一題002:什麼是題材優勢?怎麼發揮題材優勢(文案向)面試每日一題
- 大資料發展趨勢在哪裡?大資料
- 為什麼要用docker?Docker
- 為什麼要用dockerDocker
- 為什麼要用RedisRedis
- 區塊鏈鏈遊開發的優勢在哪裡?區塊鏈
- 多元泰勒展開的陷阱
- Android開發為什麼要用MVP?AndroidMVP
- 今日面試題分享:請問(決策樹、Random Forest、Booting、Adaboot)GBDT和XGBoost的區別是什麼?...面試題randomRESTboot
- MyBatis和Hibernate相比,優勢在哪裡?MyBatis
- jaas相對Filter的優勢在哪裡Filter
- 今日面試題分享:解決bias和Variance問題的方法是什麼?面試題
- 為什麼人工智慧要用Python?答案在這裡人工智慧Python
- Vue3.0裡為什麼要用 Proxy API 替代 defineProperty API ?VueAPI
- 為什麼要用SOCKS代理?
- 為什麼要用混合加密?加密
- 開發Web應用為什麼要用TypeScript?WebTypeScript
- 為什麼我要用 C 來開發遊戲?開發遊戲
- 淺談微積分以及泰勒展開
- 使用雲桌面的技術優勢在哪裡
- NB物聯網路卡的優勢在哪裡
- 區塊鏈鏈遊的優勢在哪裡?區塊鏈
- 為什麼要用Node.jsNode.js
- 我們為什麼要用RedisRedis
- 為什麼要用Redis叢集?Redis
- 為什麼要用資料中臺
- 為什麼要用 Node.jsNode.js
- 為什麼要用單例模式?單例模式
- 為什麼要用工廠模式模式
- java培訓分享:學習java開發的優勢是什麼Java
- Python優勢是什麼?為什麼要學習?Python
- 【知識分享】DHCP伺服器是什麼有什麼優勢伺服器
- cms企業建站系統的優勢在哪裡?
- 好程式設計師Java培訓分享Java有什麼優勢 為什麼學的人多程式設計師Java
- 為什麼要用Vue.js的元件化開發Vue.js元件化