MAE
MAE (Mean Absolute Error, средняя абсолютная ошибка) — одна из самых простых и интуитивно понятных метрик качества для задач регрессии.
MAE вычисляется по следующей формуле:
где:
- — количество объектов в выборке;
- — истинное значение целевой переменной для -го объекта;
- — предсказание модели для -го объекта.
Как это понимать
Заголовок раздела «Как это понимать»Для каждого объекта мы находим модуль разности между предсказанием и настоящим значением — то есть смотрим, насколько модель ошиблась, не обращая внимания на то, в какую сторону (в большую или меньшую). Затем все эти отклонения усредняются.
Пример. Пусть модель предсказывает цену квартиры (в тысячах рублей):
| Настоящая цена () | Предсказание () | Ошибка |
|---|---|---|
| 5000 | 5200 | 200 |
| 3000 | 2800 | 200 |
| 7000 | 7100 | 100 |
Это значит, что в среднем предсказание модели отличается от настоящей цены примерно на 166,7 тысячи рублей.
Та же проверка в программе:
uses MLABC;
begin var y := [5000, 3000, 7000]; var pred := [5200, 2800, 7100];
var mae := Metrics.MAE(y, pred);
Println('MAE:', mae:0:1);end.Вывод:
MAE: 166.7Графическое пояснение MAE
Заголовок раздела «Графическое пояснение MAE»MAE удобно понимать по графику линейной регрессии.
uses MLABC, PlotML;
begin var df := DataFrame.FromCsvText(''' Площадь,Цена 35,4.8 42,5.7 50,7.9 58,7.9 65,8.2 72,10.4 80,10.5 90,12.5 ''');
var X := df.ToMatrix(['Площадь']); var y := df.ToVector('Цена');
var model := new LinearRegression; model.Fit(X, y);
Plot.Title := 'Линейная регрессия'; Plot.XLabel := 'Площадь'; Plot.YLabel := 'Цена';
Plot.Points(X.Col(0), y);
var line := model.RegressionLine; Plot.Line(line.K, line.B, Colors.Red);
var yPred := model.Predict(X); Print('(');
var n := X.RowCount; for var i := 0 to n - 1 do begin var x1 := X[i, 0];
Plot.LineGraph( [x1, x1], [y[i], yPred[i]], Colors.Gray, thickness := 1.5);
var erri := Abs(y[i] - yPred[i]); if i > 0 then Print('+'); Print(erri:0:2); end;
var mae := Metrics.MAE(y, yPred); Println(') /', n, '=', mae:0:2);
Plot.Points(X.Col(0), yPred, Plot.PaletteColor(0), size := 5);end.Вывод:
( 0.18 + 0.21 + 0.94 + 0.12 + 0.75 + 0.52 + 0.44 + 0.24 ) / 8 = 0.42На графике красная линия показывает предсказания модели. Синие точки — настоящие значения.
Вертикальные серые отрезки показывают ошибки модели для отдельных точек. Длина каждого такого отрезка — это абсолютное отклонение настоящего значения от предсказания. Среднее арифметическое этих длин и есть MAE.
Важные свойства
Заголовок раздела «Важные свойства»- Единицы измерения. MAE измеряется в тех же единицах, что и целевая переменная. Если цена — в рублях, то и MAE — в рублях; если это температура в градусах, то и MAE — в градусах. Это делает метрику удобной для интерпретации: результат легко связать с исходной величиной.
- Чем меньше MAE, тем лучше модель предсказывает значения — идеальная модель имеет .
- Устойчивость к выбросам. Поскольку ошибки берутся по модулю (а не возводятся в квадрат, как в MSE), большие ошибки не «взрываются» и не доминируют над остальными. Из-за этого MAE меньше реагирует на редкие сильные промахи модели, чем, например, RMSE.
- Не показывает направление ошибки. MAE не говорит, завышает модель предсказания или занижает — только насколько велика ошибка по модулю.
Сравнение с другими метриками
Заголовок раздела «Сравнение с другими метриками»MAE часто сравнивают с RMSE (корнем из среднеквадратичной ошибки): RMSE сильнее «наказывает» большие ошибки, поэтому если в данных есть выбросы, значения RMSE и MAE могут заметно расходиться. Если RMSE значительно больше MAE, это сигнал, что в предсказаниях присутствуют отдельные крупные промахи.