From ada2f6bb20784e90072a6518e74f04513a7d448e Mon Sep 17 00:00:00 2001 From: Maxwell Date: Fri, 17 Jun 2022 03:11:37 +0800 Subject: [PATCH] DOC Mention factor x2 between MAE and mean pinball loss (#23651) --- doc/modules/model_evaluation.rst | 2 +- sklearn/metrics/tests/test_regression.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/doc/modules/model_evaluation.rst b/doc/modules/model_evaluation.rst index 72ddf84350686..d4937497c7e87 100644 --- a/doc/modules/model_evaluation.rst +++ b/doc/modules/model_evaluation.rst @@ -2562,7 +2562,7 @@ performance of `quantile regression \text{pinball}(y, \hat{y}) = \frac{1}{n_{\text{samples}}} \sum_{i=0}^{n_{\text{samples}}-1} \alpha \max(y_i - \hat{y}_i, 0) + (1 - \alpha) \max(\hat{y}_i - y_i, 0) -The pinball loss is equivalent to :func:`mean_absolute_error` when the quantile +The value of pinball loss is equivalent to half of :func:`mean_absolute_error` when the quantile parameter ``alpha`` is set to 0.5. diff --git a/sklearn/metrics/tests/test_regression.py b/sklearn/metrics/tests/test_regression.py index 090bc64bf0fe4..b51012d6c1f1b 100644 --- a/sklearn/metrics/tests/test_regression.py +++ b/sklearn/metrics/tests/test_regression.py @@ -613,3 +613,15 @@ def test_dummy_quantile_parameter_tuning(): ).fit(X, y) assert grid_search.best_params_["quantile"] == pytest.approx(alpha) + + +def test_pinball_loss_relation_with_mae(): + # Test that mean_pinball loss with alpha=0.5 if half of mean absolute error + rng = np.random.RandomState(714) + n = 100 + y_true = rng.normal(size=n) + y_pred = y_true.copy() + rng.uniform(n) + assert ( + mean_absolute_error(y_true, y_pred) + == mean_pinball_loss(y_true, y_pred, alpha=0.5) * 2 + )