Перейти к содержимому

Метрика RMSE

RMSE (Root Mean Squared Error, корень из среднеквадратичной ошибки) — ещё одна широко используемая метрика качества для задач регрессии, тесно связанная с MSE (Mean Squared Error).

RMSE вычисляется по следующей формуле:

RMSE(y,pred)=1ni=1n(prediyi)2\operatorname{RMSE}(y, pred) = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (pred_i - y_i)^2}

где:

  • nn — количество объектов в выборке;
  • yiy_i — истинное значение целевой переменной для ii-го объекта;
  • predipred_i — предсказание модели для ii-го объекта.

По сути, RMSE — это квадратный корень из среднего квадрата отклонений предсказаний от настоящих значений (то есть корень из MSE).

Для каждого объекта вычисляется квадрат разности между предсказанием и настоящим значением. Возведение в квадрат делает все ошибки положительными (как и модуль в MAE), но при этом больше «наказывает» крупные ошибки: чем сильнее модель ошиблась на конкретном объекте, тем непропорционально сильнее эта ошибка влияет на итоговую сумму. После усреднения всех квадратов отклонений из результата извлекается квадратный корень — это нужно, чтобы вернуть метрику к исходным единицам измерения.

Пример. Пусть модель предсказывает цену квартиры (в тысячах рублей):

Настоящая цена (yy)Предсказание (predpred)Ошибка (predy)(pred - y)Квадрат ошибки
5000520020040 000
30002800−20040 000
70007500500250 000

Вычислим RMSE:

RMSE=40000+40000+2500003331.7 тыс. руб.\text{RMSE} = \sqrt{\frac{40000 + 40000 + 250000}{3}} \approx 331.7 \text{ тыс. руб.}

Обратите внимание: несмотря на то, что средняя абсолютная ошибка здесь была бы (200+200+500)/3300(200+200+500)/3 \approx 300, RMSE получился больше — это как раз эффект того, что одна крупная ошибка (500) «весит» непропорционально много.

Та же проверка в программе:

uses MLABC;
begin
var y := [5000, 3000, 7000];
var pred := [5200, 2800, 7500];
var rmse := Metrics.RMSE(y, pred);
Println('RMSE:', rmse:0:1);
end.

Вывод:

RMSE: 331.7
  • Единицы измерения. Благодаря извлечению корня RMSE, как и MAE, измеряется в тех же единицах, что и целевая переменная (рубли, градусы и т.д.), что делает метрику удобной для интерпретации.
  • Чем меньше RMSE, тем лучше модель предсказывает значения — идеальная модель имеет RMSE=0\text{RMSE} = 0.
  • Чувствительность к выбросам. Из-за возведения в квадрат RMSE сильно реагирует на редкие, но крупные ошибки. Если модель на одном-двух объектах ошиблась очень сильно, это заметно увеличит RMSE, даже если на остальных объектах предсказания были почти идеальными.
  • RMSE ≥ MAE. Для одного и того же набора ошибок RMSE всегда не меньше MAE. Чем сильнее эти две метрики расходятся, тем более неравномерно распределены ошибки модели — то есть тем больше вероятность, что среди предсказаний есть отдельные крупные промахи.
  • MAE подходит, когда все ошибки одинаково важны и нежелательно, чтобы редкие выбросы сильно влияли на оценку качества модели.
  • RMSE стоит использовать, когда крупные ошибки особенно критичны и их нужно «штрафовать» сильнее — например, в задачах, где одна большая ошибка обходится значительно дороже нескольких небольших.