сеньорчикОткрыть в Telegram
← вся теориятеория к собесу · Классический ML

Метрики регрессии

Зачем это спрашивают

«Какую метрику взял для прогноза и почему» - проверка зрелости, а не памяти. Выбор метрики это выбор того, что именно модель будет предсказывать: под одним лоссом она сойдётся к среднему, под другим к медиане, под третьим к 80-му перцентилю. Три разных ответа на один и тот же вопрос.

Типовые формулировки: «MSE или MAE?», «чем плох MAPE?», «как мерить прогноз спроса?».

// Сильный ход в любом ответе - начать с цены ошибки, а не с названия метрики. Назвал цену - метрика выбирается почти сама, и это видно.

MSE и MAE: что модель будет предсказывать

Пять доставок, ошибки прогноза 1, 1, 1, 1 и 10 минут. MAE (mean absolute error) - средний модуль ошибки: (1+1+1+1+10)/5 = 2.8 минуты. MSE (mean squared error) - средний квадрат: (1+1+1+1+100)/5 = 20.8, а его корень RMSE (root mean squared error) = 4.56 минуты.

Квадрат раздувает крупные промахи: один промах на 10 минут весит ровно столько же, сколько сто промахов по минуте (10² = 100 и 100·1² = 100). Убери из выборки единственный выброс - MAE почти не шевельнётся, MSE рухнет втрое.

Из-за этого модели под разными лоссами сходятся к разному. Возьми числа 1, 2, 3, 4, 100 и попробуй угадать их одной константой. Под MSE лучшая константа - среднее, то есть 22: она тянется к выбросу, потому что квадрат промаха в 98 единиц невыносим. Под MAE лучшая константа - медиана, то есть 3: модуль промаха от одного выброса перевешивается четырьмя точными попаданиями. Минимум MSE всегда среднее, минимум MAE всегда медиана.

// Отсюда рабочее правило. Страшны редкие большие промахи (перегрузка склада, отказ оборудования) - бери MSE или RMSE. Важна типичная ошибка, а выбросы это грязь в данных - бери MAE. RMSE репортят чаще MSE просто потому, что он в единицах таргета: «ошибаемся на 4.5 минуты» читается, а «на 20.8 квадратных минут» нет.

лосс
функция, которую модель минимизирует при обучении. Часто совпадает с метрикой, но не обязана: учить можно на одном, отчитываться другим
таргет
величина, которую предсказываем: минуты доставки, штуки спроса, рубли выручки

Проценты: почему MAPE взрывается

MAPE (mean absolute percentage error) - средняя относительная ошибка: |факт − прогноз| / факт, усреднённое по всем точкам. Соблазн понятен: «ошибаемся на 12 процентов» читается без единиц и одинаково звучит для штук, рублей и минут.

Ломается он в трёх местах. Ноль в знаменателе: ноль продаж товара за день - обычное дело, а MAPE на нём просто не определён. Мелкий факт: продали 1 штуку при прогнозе 3 - ошибка 200 процентов; продали 1000 при прогнозе 1002 - ошибка 0.2 процента. Второй промах дороже в деньгах, а метрика хвалит именно его.

Третья беда тише и злее - асимметрия. Занижение упирается в потолок: даже прогноз «ноль» при факте 10 даёт ровно 100 процентов ошибки. Завышение потолка не имеет: прогноз 100 при факте 10 - это 900 процентов. Модель, обученная на MAPE, довольно быстро понимает, что занижать безопаснее, и систематически занижает.

// Стабильная замена - WAPE (weighted absolute percentage error): сумма модулей всех ошибок делить на сумму всех фактов. Один нулевой день его не рвёт, крупные позиции весят пропорционально своему размеру, и читается он как «процент ошибки в объёме» - то, что бизнес и хочет услышать.

Логарифм и ловушка обратного преобразования

Тяжёлый правый хвост - типичная беда прогнозов: большинство товаров продаётся по пять штук в день, а десяток хитов по пятьдесят тысяч. MSE на таких данных смотрит только на хиты, остальной каталог для него шум.

Лечат логарифмом: учим модель не на y, а на log1p(y) - логарифм от 1+y, единица нужна, чтобы ноль не сломал логарифм. На лог-шкале ошибка становится относительной: перепутать 10 и 20 стоит ровно столько же, сколько перепутать 1000 и 2000. Та же идея, оформленная как метрика, называется RMSLE (root mean squared log error).

Ловушка на выходе. Обратное преобразование exp(предсказание) даёт медиану исходной величины, а не среднее - экспонента выпуклая, и она не переносит усреднение через себя. Для лог-нормального разброса среднее больше в exp(σ²/2) раз, и если ты складываешь предсказания в суммарный прогноз по складу, наивный exp будет систематически недозаказывать.

// Проверить это можно за минуту: возьми числа 1 и 100, усредни их логарифмы и возведи в экспоненту - получишь 10, а не 50.5.

правый хвост
редкие, но очень большие значения таргета. Среднее по такой выборке ничего не описывает: оно больше почти всех наблюдений

R² и квантильный лосс

R² отвечает на вопрос «насколько модель лучше, чем просто предсказывать среднее»: 1 − MSE модели / MSE константы-среднего. Единица - идеал, ноль - модель ровно как среднее, отрицательное значение - хуже среднего. Отрицательный R² на валидации не баг, а честный приговор.

На трейне R² монотонно растёт от любой добавленной фичи, даже от столбца случайных чисел: у модели просто появляется ещё одна степень свободы, чтобы подогнать шум. Поэтому R² на трейне не аргумент вообще, смотреть надо только на отложенной выборке.

Квантильный (pinball) лосс нужен там, где недобор и перебор стоят по-разному. Он карает недопрогноз с весом q, а перепрогноз с весом (1−q). При q = 0.8 промах вниз на одну штуку весит 0.8, промах вверх - 0.2, вчетверо дешевле. Модель это чувствует, начинает закладываться вверх и сходится к 80-му перцентилю спроса. Перезаказ получается не костылём поверх прогноза, а свойством обучения.

// Симметричная метрика на несимметричной задаче врёт по построению, сколько её ни улучшай. Пустая полка и списание почти никогда не стоят одинаково.

перцентиль
значение, ниже которого лежит заданная доля наблюдений. 80-й перцентиль спроса покрывает 4 дня из 5

Как отвечать: «Какую метрику возьмёшь для прогноза спроса?»

Начну с цены ошибки: недопрогноз - это пустая полка и потерянная продажа, перепрогноз - списание, и стоят они разного. Поэтому обучал бы на квантильный лосс под нужный перцентиль, а не на симметричный MSE, который по построению целит в середину. Бизнесу отчитывался бы по WAPE: он читается как процент ошибки в объёме и не взрывается на нулевых днях, в отличие от MAPE. И обязательно смотрю срезы по категориям и магазинам - один общий процент прекрасно прячет провал в мелком, но важном сегменте.

Цена ошибки задаёт лосс, метрика для отчёта выбирается отдельно, плюс срезы. Виден человек, который сдавал прогноз заказчику, а не гонял ноутбук на соревновании.

На чём валят

  • Считать MAPE там, где факт бывает нулевым или копеечным: метрика либо не определена, либо взрывается на мелочи.
  • Приносить R² с трейна как доказательство качества - его поднимет даже колонка случайных чисел.
  • Учить на логарифме таргета и репортить exp(предсказание) как среднее: это медиана, для среднего нужна поправка.
  • Один агрегатный RMSE по всем сегментам сразу - крупные объекты его полностью определяют, мелкие невидимы.
  • Брать симметричный лосс на задаче с несимметричной ценой ошибки и удивляться, что модель вечно недозаказывает.

Проверьте себя

Пять вопросов из банка по этой подтеме. Всего их 10, остальные разбираются в тренажёре.

  1. #regression_ranking_metrics1 / 5
    Почему NDCG — стандартная метрика качества ранжирования в поиске и рекомендациях?
    A)Она вычисляется заметно проще всех остальных ранжирующих метрик поиска
    B)Ей вообще не требуется разметка релевантности документов
    C)Учитывает градуированную релевантность и позицию, нормируясь на идеал
    D)Это метрика, умеющая различать клики и реальные покупки
    показать ответ и разбор
    +C)Учитывает градуированную релевантность и позицию, нормируясь на идеал

    // разбор: DCG = Σ gain(rel_i)/log2(i+1): релевантный документ на 1-й позиции ценнее, чем на 10-й; деление на IDCG даёт [0,1] и сравнимость запросов. Precision@k позицию внутри топа игнорирует, MAP работает только с бинарной релевантностью. NDCG@k на офлайн-разметке + онлайн CTR/конверсии в A/B — типовая связка в поиске Яндекса/Ozon.

  2. #regression_ranking_metrics2 / 5
    Почему MAPE — опасная метрика для прогноза спроса с нулями и малыми значениями?
    A)Делит на факт: undefined на нулях, взрыв на малых, асимметрия
    B)Метрика MAPE слишком сложна и вычислительно дорога для практического применения
    C)MAPE совершенно не умеет учитывать сезонность в прогнозе спроса
    D)MAPE выражается в процентах, тогда как бизнес хочет ошибку в штуках
    показать ответ и разбор
    +A)Делит на факт: undefined на нулях, взрыв на малых, асимметрия

    // разбор: Товар с фактом 1 и прогнозом 3 даёт 200% ошибки и «перевешивает» сотню точных прогнозов ходовых позиций. WAPE (Σ|err|/Σ|факт|) взвешивает объёмом и в рознице обычно дефолт; для решений о запасах честнее квантильный (pinball) лосс под целевой сервис-левел. Выбор метрики прогноза = выбор, чьи ошибки дороже.

  3. #regression_ranking_metrics3 / 5
    R² модели равен 0.85. Что это значит и чего это НЕ значит?
    A)Это значит, что модель даёт верный ответ ровно в 85% всех случаев
    B)Это значит, что примерно 85% использованных признаков реально полезны
    C)Модель объясняет 85% дисперсии таргета против константы-среднего
    D)Это значит, что вероятность переобучения данной модели равна 15%
    показать ответ и разбор
    +C)Модель объясняет 85% дисперсии таргета против константы-среднего

    // разбор: R² = 1 − SS_res/SS_tot: сравнение с бейзлайном-средним, не «процент правильных». На трейне он не убывает от добавления любого мусорного признака (отсюда adjusted R²); высокий R² бывает у грубо смещённой модели с нелинейными остатками. Смотреть R² на отложенной выборке и графики остатков — иначе цифра декоративная.

  4. #regression_ranking_metrics4 / 5
    Прогноз цен: ошибиться на 100 при факте 50 и при факте 5000 — совсем не одно и то же. Какая метрика это учитывает?
    A)RMSE: она одинаково штрафует абсолютную ошибку в 100 независимо от масштаба факта, что здесь как раз и требуется от метрики
    B)MAE: средняя абсолютная ошибка идеально подходит именно тогда, когда важна относительная, а не абсолютная ошибка прогноза
    C)RMSLE (ошибка на логарифмах) или MAPE/WAPE: штрафуют ОТНОСИТЕЛЬНУЮ ошибку, уравнивая разные масштабы значений
    D)R²: коэффициент детерминации как раз и измеряет напрямую относительную ошибку прогноза на каждом отдельном объекте выборки
    показать ответ и разбор
    +C)RMSLE (ошибка на логарифмах) или MAPE/WAPE: штрафуют ОТНОСИТЕЛЬНУЮ ошибку, уравнивая разные масштабы значений

    // разбор: Когда важна относительная, а не абсолютная ошибка (ошибка 100 катастрофична при факте 50 и пренебрежима при 5000), берут метрики на относительной шкале: RMSLE (RMSE на log(1+y)) штрафует по отношению прогноза к факту и мягче к недооценке крупных значений; MAPE/WAPE — процентные. RMSE и MAE работают в абсолютных единицах и на разномасштабных данных доминируются крупными значениями. R² измеряет долю объяснённой дисперсии, а не поэлементную относительную ошибку.

  5. #regression_ranking_metrics5 / 5
    Что важно помнить про R² (коэффициент детерминации) при оценке регрессии?
    A)R² лежит строго между 0 и 1, поэтому отрицательным он встречается редко в этом случае данных и моделях
    B)На новых данных R² может быть отрицательным (модель хуже среднего), и он не падает от добавления бесполезных фич — берут adjusted R²
    C)R² эквивалентен метрике MAE и меняется синхронно с ней, поэтому достаточно смотреть один из них
    D)Высокий R² на трейне надёжно обеспечивает ровно такое же качество и на тесте, а также однозначно доказывает отсутствие переобучения модели
    показать ответ и разбор
    +B)На новых данных R² может быть отрицательным (модель хуже среднего), и он не падает от добавления бесполезных фич — берут adjusted R²

    // разбор: Два подвоха R². Первое: на обучающей выборке он не убывает при добавлении даже мусорных признаков (растёт механически), поэтому для сравнения моделей с разным числом фич берут adjusted R², штрафующий за параметры. Второе: на НОВЫХ данных R² может быть отрицательным — если модель предсказывает хуже, чем простое среднее таргета. Высокий R² на трейне ничего не гарантирует на тесте и не исключает переобучение; с MAE R² тоже не эквивалентен.

дальше

Теорию прочитали. Навык ставится повторением

В Сеньорчике эта подтема идёт в ежедневных сессиях: движок возвращает её, пока ответы не станут уверенными, и ведёт прогресс отдельно по каждой подтеме. Теория внутри тоже бесплатна, лимит только на количество вопросов в день.