TGStat
TGStat
Type to search
Advanced channel search
  • flag English
    Site language
    flag Russian flag English flag Uzbek
  • Sign In
  • Catalog
    Channels and groups catalog Search for channels
    Add a channel/group
  • Ratings
    Rating of channels Rating of groups Posts rating
    Ratings of brands and people
  • Analytics
  • Search by posts
  • Telegram monitoring
Knowledge Accumulator

5 Sep, 20:46

Open in Telegram Share Report

Предсказать среднее могут не только лишь все

Классическая задача машинного обучения - тренировочный и тестовый датасет, бинарная классификация.

Если ваша модель без глаз и ушей, т.е. не получает фичи на вход, то она посчитает avg(y) на тренировке и предскажет это для каждого тестового образца.

Когда мы выкатываем модель в прод, то одним из критериев её самочувствия является так называемая калибровка - sum(p(y)) / sum(y). Даже выше упомянутая слепоглухая модель будет "откабирована". т.е. измерение будет равно примерно 1. Казалось бы - планка-то не очень высокая. Если калибровка в проде не 1, то с моделью что-то сильно не так.

Мы выложили модель в открытый доступ, так что не секрет, что наш ранкер - это простой трансформер с ранним связыванием, применяемый над историей пользователя и представлением кандидата. Все посты представлены в виде id автора, id поста, и ещё там есть пачка банальных контекстных фичей.

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

Если тренировка падает на час и в проде продолжает применяться замороженный чекпоинт - прощай, откалиброванность. Предсказания по не до конца ясной причине начинают плавно расти со временем. Через несколько часов они вырастают в 5-10 раз. Любое малейшее расхождение фичей на тренировке и применении - калибровка летит в жопу. Причём обычно именно в большую сторону, непропорционально падению CTR.

На днях дебажил проблему. У нас есть конверсионная модель, предсказывающая вероятность p(purchase | click). Покупка лишь изредка происходит сразу после клика, поэтому реальную метку надо ждать какое-то время. Я работал над моделью с 24-часовой задержкой. То есть каждый обучающий образец - это клик на рекламу, случившийся ~сутки назад, и метка покупки.

На тренировке всё выглядело нормально, а как выкатываю в прод - калибровка >2 - модель начинает выдавать в 2 раза большие скоры, в том числе на теневом трафике прода - то есть без учёта selection bias.

Я беру эти образцы. Думаю - может из-за расхождения в историях - модель могла не обучаться на свежих постах и в эмбеддингах там мусор. Создаю исскусственную задержку - такое же говно. Думаю - ну может распределение кандидатов меняется? Пробую подставлять старых кандидатов - такое же говно.

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

И что вы думаете? Сраный день недели. В представлении кандидата есть эмбеддинг текущего дня недели. У тренировочных данных, на которых тренируется модель, эта фича всегда равна предыдущему дню недели. А в проде она равна текущему дню. Если в проде подменить фичу дня недели на вчерашний, модель резко выздоравливает и предсказание превращаются в норму.

Какого чёрта оно так себя ведёт? Не знаю, и знать не хочу. Обожаю машинное обучение.

@knowledge_accumulator

2.2k 2 23 12 47
Catalog
Channels and groups catalog Channels compilations Search for channels Add a channel/group
Ratings
Rating of Telegram channels Rating of Telegram groups Posts rating Ratings of brands and people
API
API statistics Search API of posts API Callback
Our channels
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Read
Академия TGStat Telegram Research 2019 Telegram Research 2021 Telegram Research 2023
Contacts
Справочный центр Support Email Jobs
Miscellaneous
Terms and conditions Privacy policy Public offer
Our bots
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot