xgboost objective和eval_metric的區別

之前對於xgboost中的兩個參數objective和eval_metric一直分不清楚,不知道它們各自的作用。後來通過查找資料理清了他們之間的關係。這裏記錄一下。

1、objective

objective參數代表的是模型的損失函數,也就是我們進行優化的目標。

這裏要注意損失函數與目標函數的區別,一般情況下,我們說的損失函數就是目標函數,但是一些模型如xgboost要求目標函數要有一階導數和二階導數才能進行優化,而很多目標函數是沒有一階導數或二階導數的,所以這時就用具有相似結果的損失函數來代替(如果損失函數能夠很好地替代目標函數,這是最好的情況,如果替代效果不佳,則影響模型優化)。在模型優化中,我們使用的都是損失函數。
objective是訓練模型必備的函數,只有定義了objective模型才能進行訓練

2、eval_metric函數
eval_metric是評價函數,對模型的訓練沒有影響,而是在模型訓練完成之後評估模型效果。如我們經常使用logloss作爲objective,經常與之搭配的評價函數是auc、acc等。

爲什麼評價的時候不用objective呢?本來就是用objective來優化的,自己評價自己就沒多大意義了,所以一般需要來自另一個評分機制的eval_metric來評估模型效果。

eval_metric對於訓練模型沒有影響,即使我們不定義這個函數模型也可以正常訓練。

參考文獻:
xgboost中Objective和feval之間的差異
XGBoost自定義評價函數(feval)

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