Метрики регрессии
«Какую метрику взял для прогноза и почему» - проверка зрелости, а не памяти. Выбор метрики это выбор того, что именно модель будет предсказывать: под одним лоссом она сойдётся к среднему, под другим к медиане, под третьим к 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, остальные разбираются в тренажёре.
- Почему 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.
- Почему MAPE — опасная метрика для прогноза спроса с нулями и малыми значениями?A)Делит на факт: undefined на нулях, взрыв на малых, асимметрияB)Метрика MAPE слишком сложна и вычислительно дорога для практического примененияC)MAPE совершенно не умеет учитывать сезонность в прогнозе спросаD)MAPE выражается в процентах, тогда как бизнес хочет ошибку в штуках
показать ответ и разбор
+A)Делит на факт: undefined на нулях, взрыв на малых, асимметрия// разбор: Товар с фактом 1 и прогнозом 3 даёт 200% ошибки и «перевешивает» сотню точных прогнозов ходовых позиций. WAPE (Σ|err|/Σ|факт|) взвешивает объёмом и в рознице обычно дефолт; для решений о запасах честнее квантильный (pinball) лосс под целевой сервис-левел. Выбор метрики прогноза = выбор, чьи ошибки дороже.
- R² модели равен 0.85. Что это значит и чего это НЕ значит?A)Это значит, что модель даёт верный ответ ровно в 85% всех случаевB)Это значит, что примерно 85% использованных признаков реально полезныC)Модель объясняет 85% дисперсии таргета против константы-среднегоD)Это значит, что вероятность переобучения данной модели равна 15%
показать ответ и разбор
+C)Модель объясняет 85% дисперсии таргета против константы-среднего// разбор: R² = 1 − SS_res/SS_tot: сравнение с бейзлайном-средним, не «процент правильных». На трейне он не убывает от добавления любого мусорного признака (отсюда adjusted R²); высокий R² бывает у грубо смещённой модели с нелинейными остатками. Смотреть R² на отложенной выборке и графики остатков — иначе цифра декоративная.
- Прогноз цен: ошибиться на 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² измеряет долю объяснённой дисперсии, а не поэлементную относительную ошибку.
- Что важно помнить про 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² тоже не эквивалентен.
дальше
Теорию прочитали. Навык ставится повторением
В Сеньорчике эта подтема идёт в ежедневных сессиях: движок возвращает её, пока ответы не станут уверенными, и ведёт прогресс отдельно по каждой подтеме. Теория внутри тоже бесплатна, лимит только на количество вопросов в день.