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ł.
Dane: Diabetes (progresja cukrzycy)
W praktyce
mean_absolute_error,root_mean_squared_error(scikit-learn 1.4+; wcześniejmean_squared_error(..., squared=False)),r2_score,mean_absolute_percentage_error,median_absolute_errorzsklearn.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.MSELossinn.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