之前對於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對於訓練模型沒有影響,即使我們不定義這個函數模型也可以正常訓練。