Add MAPE metric (#6119)
This commit is contained in:
committed by
GitHub
parent
47350f6acb
commit
33577ef5d3
@@ -168,6 +168,18 @@ struct EvalRowMAE {
|
||||
}
|
||||
};
|
||||
|
||||
struct EvalRowMAPE {
|
||||
const char *Name() const {
|
||||
return "mape";
|
||||
}
|
||||
XGBOOST_DEVICE bst_float EvalRow(bst_float label, bst_float pred) const {
|
||||
return std::abs((label - pred) / label);
|
||||
}
|
||||
static bst_float GetFinal(bst_float esum, bst_float wsum) {
|
||||
return wsum == 0 ? esum : esum / wsum;
|
||||
}
|
||||
};
|
||||
|
||||
struct EvalRowLogLoss {
|
||||
const char *Name() const {
|
||||
return "logloss";
|
||||
@@ -369,6 +381,10 @@ XGBOOST_REGISTER_METRIC(MAE, "mae")
|
||||
.describe("Mean absolute error.")
|
||||
.set_body([](const char* param) { return new EvalEWiseBase<EvalRowMAE>(); });
|
||||
|
||||
XGBOOST_REGISTER_METRIC(MAPE, "mape")
|
||||
.describe("Mean absolute percentage error.")
|
||||
.set_body([](const char* param) { return new EvalEWiseBase<EvalRowMAPE>(); });
|
||||
|
||||
XGBOOST_REGISTER_METRIC(MPHE, "mphe")
|
||||
.describe("Mean Pseudo Huber error.")
|
||||
.set_body([](const char* param) { return new EvalEWiseBase<EvalRowMPHE>(); });
|
||||
|
||||
Reference in New Issue
Block a user