ML Atlas

04 · Ocena · 4 min czytania · Interaktywne · aktualizacja

Czym różnią się MAE, RMSE i R² i którą metrykę regresji wybrać?

W skrócie

MAE mierzy przeciętny błąd, RMSE mocniej karze duże pomyłki, a R² mówi, jaką część zmienności celu model wyjaśnia w porównaniu z przewidywaniem średniej.

Co to jest

Metryki regresji opisują, jak daleko przewidywania modelu leżą od prawdziwych wartości liczbowych. Najważniejsze to MAE (średni błąd bezwzględny: średnia z |y − ŷ|), RMSE (pierwiastek ze średniego błędu kwadratowego: √średnia((y − ŷ)²)), R² (współczynnik determinacji: 1 − suma kwadratów błędów modelu / suma kwadratów odchyleń od średniej) oraz MAPE (średni błąd bezwzględny w procentach wartości prawdziwej).

MAE i RMSE wyrażone są w jednostkach celu — złotówkach, stopniach, punktach skali — więc łatwo je zrozumieć: „przeciętnie mylimy się o 45 punktów”. R² jest bezwymiarowe i odpowiada na inne pytanie: o ile model jest lepszy od najprostszego możliwego przewidywania, czyli średniej.

Mechanizm — dlaczego tak działa

Różnica między MAE a RMSE to różnica w tym, jak karzemy duże błędy. W MAE błąd 20 kosztuje dwa razy więcej niż błąd 10. W RMSE, przez podniesienie do kwadratu, kosztuje cztery razy więcej. Dlatego RMSE ≥ MAE zawsze, a stosunek RMSE/MAE rośnie, gdy w błędach są pojedyncze duże pomyłki. Przy błędach o rozkładzie normalnym stosunek ten wynosi około 1,25; wyraźnie większy sygnalizuje ciężkie ogony lub obserwacje odstające.

Wybór metryki to też wybór tego, co model próbuje przewidzieć. Minimalizacja błędu kwadratowego prowadzi do przewidywania średniej warunkowej, minimalizacja błędu bezwzględnego — mediany warunkowej. Jeśli rozkład celu jest skośny (ceny, czasy, koszty), te dwie wartości się różnią i metryka oceny powinna odpowiadać temu, którą z nich chcemy znać.

R² porównuje model z przewidywaniem stałej średniej. R² = 0 oznacza „nie lepiej niż średnia”, R² = 1 — idealne dopasowanie. Na danych testowych R² może być ujemne: model gorszy od średniej. R² nie jest miarą „procentu trafionych” i zależy od rozrzutu celu w danym zbiorze: ten sam model z tym samym RMSE da wyższe R² na zbiorze o większej wariancji. Dlatego R² trudno porównywać między zbiorami danych.

MAPE jest intuicyjne („mylimy się o 12%”), ale ma poważne wady: eksploduje dla wartości bliskich zeru, jest nieokreślone dla zera i asymetryczne — przeszacowania mogą dać dowolnie duży błąd procentowy, niedoszacowania najwyżej 100%. Model optymalizowany pod MAPE ma skłonność do zaniżania przewidywań.

Każda metryka to jedna liczba ze wszystkich reszt. Nie mówi, gdzie model się myli — dla małych czy dużych wartości, systematycznie czy losowo. Do tego służy analiza reszt.

Na przykładzie

Zbiór Diabetes zawiera 442 pacjentów z 10 cechami i celem będącym ilościową miarą postępu choroby po roku (wartości od 25 do 346, średnio 152). Podzieliłem go losowo 75/25 (random_state=0, 111 pacjentów testowych). Przewidywanie stałej średniej z treningu daje na teście MAE = 58,3, RMSE = 70,5 i R² ≈ 0. Regresja liniowa na wszystkich cechach: MAE = 45,1, RMSE = 56,4, R² = 0,36, MAPE = 38%. Model zmniejsza przeciętny błąd o około jedną czwartą, ale wyjaśnia tylko nieco ponad jedną trzecią zmienności — postęp cukrzycy w dużej mierze zależy od czynników, których w danych nie ma.

Kilka szczegółów pokazuje charakter metryk. Stosunek RMSE/MAE wynosi 1,25, więc błędy nie mają skrajnych ogonów, choć największa pomyłka to 162 punkty. Pacjent z wartością 49 dostał przewidywanie 128 — błąd procentowy 161%, który sam podbija MAPE. Las losowy (RandomForestRegressor, ustawienia domyślne) wypadł gorzej: MAE = 49,0, R² = 0,22. Warto też pamiętać o szumie podziału: 5-krotna walidacja krzyżowa regresji liniowej na całym zbiorze daje średnie R² = 0,49, wyraźnie więcej niż ten jeden podział.

Ta ilustracja działa w przeglądarce z włączonym JavaScriptem: na danych o cukrzycy dopasowujesz prostą suwakami nachylenia i wyrazu wolnego; widać reszty i porównanie Twojego błędu z minimum metody najmniejszych kwadratów.

Dane: Diabetes (progresja cukrzycy)

W praktyce

  • mean_absolute_error, root_mean_squared_error (scikit-learn 1.4+; wcześniej mean_squared_error(..., squared=False)), r2_score, mean_absolute_percentage_error, median_absolute_error z sklearn.metrics.
  • W walidacji krzyżowej metryki błędów mają znak minus, bo scikit-learn maksymalizuje wynik: scoring='neg_mean_absolute_error', 'neg_root_mean_squared_error', 'r2'.
  • Zawsze raportuj wynik DummyRegressor (średnia lub mediana) jako punkt odniesienia.
  • Dla celu skośnego rozważ RMSE na logarytmie celu (RMSLE) — mierzy błąd względny i jest odporniejsze niż MAPE.
  • W PyTorch odpowiednikami funkcji straty są nn.L1Loss, nn.MSELoss i nn.HuberLoss (kompromis między nimi).
  • Typowy błąd: porównywanie R² między różnymi zbiorami albo między modelami trenowanymi na różnych transformacjach celu.

Najczęstsze pytania

MAE czy RMSE?
RMSE, gdy duże błędy są nieproporcjonalnie kosztowne (np. awaria przy dużym przeciążeniu) albo gdy chcemy przewidywać średnią. MAE, gdy koszt rośnie liniowo z błędem i chcemy odporności na obserwacje odstające. Często raportuje się obie.
Czy R² może być ujemne?
Tak, na danych, na których model nie był trenowany. Oznacza to, że przewidywania są gorsze niż stała średnia. Na zbiorze treningowym regresja liniowa z wyrazem wolnym zawsze ma R² ≥ 0.
Jakie R² jest dobre?
Zależy od dziedziny. W fizyce oczekuje się wartości bliskich 1, w naukach społecznych i medycynie R² = 0,3 bywa wartościowe. Ważniejsze od progu jest porównanie z modelem bazowym i to, czy błąd w jednostkach celu jest akceptowalny w zastosowaniu.

Źródła

  • James G., Witten D., Hastie T., Tibshirani R. „An Introduction to Statistical Learning”, 2nd ed., Springer 2021, rozdz. 3.1 (Simple Linear Regression — Assessing the Accuracy of the Model).
  • Hyndman R. J., Koehler A. B. (2006). Another look at measures of forecast accuracy. International Journal of Forecasting, 22(4).
  • Efron B., Hastie T., Johnstone I., Tibshirani R. (2004). Least Angle Regression. Annals of Statistics, 32(2) — źródło zbioru Diabetes.
  • Dokumentacja scikit-learn: Regression metrics — https://scikit-learn.org/stable/modules/model_evaluation.html#regression-metrics

Zobacz też