Май 2026 AI-evals 12 мин

Почему pCTR-модель с отличным AUC может терять деньги: калибровка в рекламном аукционе

Команда обучила новую модель предсказания кликов. Офлайн-метрики лучше прежней: AUC вырос, на валидации модель чётче отделяет клик от не-клика. Выкатили в аукцион — и выручка не выросла, а кое-где просела. Это не редкость и не баг обучения. Это разрыв между тем, как ML-модель оценивают, и тем, как она работает в монетизации. Модель, отличная по привычным метрикам, может тихо разрушать аукцион — потому что в рекламе важна не та характеристика, которую измеряет AUC.

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

Где живёт pCTR

В рекламном аукционе объявления ранжируются не по ставке, а по ожидаемому доходу с показа. В упрощённом виде место в выдаче определяет eCPM — произведение ставки рекламодателя на предсказанную вероятность клика:

eCPM = bid × pCTR

pCTR (predicted click-through rate) — выход ML-модели: для каждого объявления она оценивает вероятность клика. Эта вероятность входит в аукцион как число, и от неё зависит сразу две вещи. Первая — порядок: кого показать выше. Вторая, менее очевидная — деньги: во многих системах pCTR участвует в расчёте того, сколько списать с рекламодателя за клик. Значит абсолютное значение pCTR имеет цену напрямую: если оно завышено, рекламодателя перегружают и портят ему ROI; если занижено — теряют доход и недопоказывают хорошие объявления.

Вот первый сдвиг в мышлении: pCTR используется не как «да/нет», а как точное число, на которое умножается ставка. И это ломает привычный способ оценки модели.

Ловушка: высокий AUC не значит хорошую модель для аукциона

Как обычно оценивают модель предсказания кликов? AUC — площадь под ROC-кривой, мера того, насколько хорошо модель различает кликнутые и некликнутые показы. Чем выше AUC, тем лучше модель ранжирует: ставит объявления с кликом выше, чем без.

И здесь ловушка. AUC измеряет только относительный порядок — кто выше кого. Ему всё равно, какие именно числа выдаёт модель, лишь бы их порядок был правильным. Модель может говорить «вероятность клика 20%» там, где реально кликают в 10% случаев, и AUC будет отличным — порядок-то сохранён, просто все значения раздуты вдвое.

Но аукцион умножает ставку на это конкретное число. Если модель систематически завышает pCTR — eCPM раздувается, аукцион переоценивает объявления, цены и порядок плывут. Отсюда классическая боль рекламных команд: офлайн AUC новой модели вырос, выкатили — а online-выручка не сдвинулась или упала. Модель стала лучше ранжировать и хуже попадать в абсолютные значения. AUC этого не показал, потому что не за этим следит.

Добавьте сюда, что обычная accuracy для кликов вообще бесполезна: средний CTR на дисплейной рекламе — доли процента, поэтому модель, которая всегда предсказывает «не кликнет», получит точность под 99% и не поймает ни одного клика. Accuracy и AUC — не те метрики, по которым стоит судить pCTR для монетизации.

Что важно на самом деле — калибровка

Свойство, которое нужно pCTR-модели в аукционе, называется калибровкой. Модель калибрована, если её предсказанные вероятности совпадают с реальными частотами: среди показов, которым модель дала pCTR 10%, реально кликают примерно в 10% случаев. Не «выше тех, кому дала 5%» (это про порядок), а именно «10% означает 10%».

Проверяют калибровку через reliability diagram: показы группируют по предсказанной вероятности и для каждой группы сравнивают предсказанное с фактическим. Идеально калиброванная модель ложится на диагональ — предсказала 10%, получила 10%. Систематическое отклонение вверх или вниз — это miscalibration, и её сводят в одно число — Expected Calibration Error (ECE), средневзвешенное расхождение между предсказанным и фактическим по всем группам.

Reliability diagram: калиброванная модель ложится на диагональ, некалиброванная (с тем же AUC) уходит выше — предсказывает высокие вероятности там, где кликают вдвое реже.
Калиброванная модель ложится на диагональ. Некалиброванная (с тем же AUC) предсказывает высокие вероятности там, где кликают вдвое реже.

Неприятный факт из практики: современные глубокие модели часто плохо калиброваны, даже когда отлично ранжируют. Они «уверенно ошибаются» — выдают резкие, смещённые вероятности. В индустрии описаны случаи, когда новая deep-модель давала pCTR в среднем на десятки процентов выше прежней при сопоставимом AUC: ранжирует не хуже, но абсолютные значения раздуты, и в аукционе это означает систематический перекос. Поэтому калибровку чинят отдельно — post-hoc методами вроде Platt scaling или изотонической регрессии, которые «подтягивают» выход модели к реальным частотам, не трогая её ранжирующую способность.

Вывод раздела: для монетизации pCTR-модель оценивают в первую очередь по калибровке (ECE, reliability diagram), а не по AUC. AUC отвечает на вопрос «правильный ли порядок», калибровка — на вопрос «правильные ли числа», и в аукционе цена у второго вопроса прямая.

Дрейф: калибровка не вечна

Даже идеально калиброванная на момент обучения модель со временем расходится с реальностью. Появляются новые рекламодатели и форматы, меняется сезонность спроса, сдвигается поведение пользователей — распределение данных уезжает от того, на котором модель училась. pCTR, точный в январе, к апрелю систематически врёт.

Поэтому калибровку нельзя проверить один раз при выкатке и забыть — её нужно мониторить во времени. На практике для этого держат небольшую долю трафика в стороне от продакшен-ранжирования (holdback) — она даёт более честную опорную точку для измерения реальных частот, не искажённую тем, что сама модель влияет на показы. По этому holdback регулярно считают ECE и смотрят, не растёт ли он. Рост ECE — сигнал, что модель пора переобучать или перекалибровать, причём задолго до того, как просадка станет заметна в выручке.

Сегментная справедливость: «в среднем калибрована» — недостаточно

Самая коварная часть. Модель может быть прекрасно калибрована в среднем по всему трафику — и при этом систематически врать на отдельных сегментах. На частых форматах и категориях, где много данных, она калибрована; на редких, на новых, на длинном хвосте — переоценивает или недооценивает клики. Усреднённый ECE это прячет: ошибки на сегментах гасят друг друга в общем числе.

Для аукциона это означает скрытый перекос: модель завышает pCTR на одном сегменте (его объявления неоправданно лезут вверх и перегружают рекламодателей) и занижает на другом (хорошие объявления недопоказываются). И всё это под прикрытием хорошей средней калибровки.

ECE по сегментам: средний ECE низкий, но по хвостовым сегментам — новым форматам и редким категориям — калибровка проваливается значительно выше среднего.
Средний ECE низкий, но по сегментам разброс: на хвосте (новые форматы, редкие категории) калибровка проваливается.

Лечится это сегментной (field-aware) калибровкой: ECE считают не только в целом, но и по ключевым срезам — формат, категория, новизна объявления, сегмент пользователя. Это та же логика, что и в стратифицированной оценке любой ML-модели: средняя метрика по несбалансированным данным маскирует провалы в хвосте, и увидеть их можно только разложив оценку по сегментам.

Как это собрать в evals-пайплайн

Сведём в практику. Оценка pCTR-модели для монетизации — это не одна цифра AUC на валидации, а постоянный eval-контур:

Что забрать с собой

pCTR-модель — это место, где сходятся три процесса: она ML-система (её надо оценивать), она определяет выручку (её ошибки стоят денег), и меняют её через эксперименты (со всеми сложностями тестирования в аукционе). Связывает их одно свойство — калибровка.

Схема: pCTR — точка схождения трёх процессов. ML-модель (оценка), выручка (монетизация), эксперименты (A/B в аукционе). Все три соединяет калибровка.
pCTR — точка схождения трёх процессов: ML-модель, выручка, эксперименты. Связывает их калибровка.
Вывод

Главная ошибка — оценивать pCTR-модель привычными ML-метриками. Высокий AUC говорит, что модель правильно ранжирует, но ничего не говорит о том, правильные ли числа она выдаёт — а в аукционе ставка умножается именно на число. Модель с отличным AUC и плохой калибровкой тихо теряет деньги. Оценка ML-модели в монетизации — это калибровка, дрейф и сегменты, а не точность.

Как тестировать изменения pCTR-модели в аукционе, не сломав A/B — в статье «Почему A/B-тест ломается в рекламном аукционе». Почему средняя метрика прячет провал на сегментах — на примере LLM-классификатора в кейсе «Один кейс, три процесса».

Если интересно обсудить — напишите в Telegram.

← Все статьи