Прилетела задача об обновлении ML пайплайна: нужно спасти падающее качество МЛ модели, добавив новых данных и улучшить ранжирование внутри. В постановке задачи уже лежит понятное описание шагов для достижения, но для меня это звучит так: построить самую лучшую формулу ранжирования ленту рекомендаций, чтобы все заметили и похвалили меня. Что ж, вперед.
Это блог про истории из опыта датасаентиста. Пишу для коллег, чтобы почерпнули опыт или просто интересную историю про то, как не нужно делать задачку.
В общем, план такой: заходим в самую середину задачи и закапываемся поглубже.
Уютно и лампово проводим время: быстро достаем на стороне семпл данных и первый час играемся функциями min/max/mean в pandas, следующий час-полтора одеваемся потеплее и идем к сырым массивам фичей в numpy. Спустя еще час непрерывной работы переходим в scipy и настраиваем мудреный, итеративный алгоритм, который можно понять только приблизетельно.
Я сделал все в точности и добросовестно пыхтел часа два над данными.
И к моему счастью и к несчастью одного коллеги, этот самый коллега проходил мимо меня. Скорее всего он собирался отдохнуть и пообедать, но у меня был план поважнее. Я остановил его и, с места в карьер, стал объяснять идею свое алгоритма. Если вы хотите отработать задачу на максимум, то вывалите все ваши идеи на коллегу, когда он вечером спешит из офиса на свою любимую тренировку.
Следующий шаг - подумать об исходной цели задачи.
Я вот вдруг вспомнил, что мне какой-то пайплайн дорабатывать нужно, а не просто формулу предоставить. "Вообще-то это пустяк, когда основной алгоритм есть." - подумал я.
На скорую руку копируйте свой алгоритм и источник данных в пайплайн, но осторожно, может пропасть 90% данных.
Потратьте еще часик нервов на выяснение причины. Я, например, уже после целого дня борьбы с задачкой слабо понимал что происходит в коде и просил коллег посмотреть в мой монитор и подтвердить что они видят такие же цифры на экране как и я.
Только после этого переходите к такой ненужной задаче, как подбор данных.
Согласование источников данных в витрине - для слабаков. Без этого, правда, данные не смогут дойти до вашей новой формулы. Но есть небольшой шанс, что вам повезет и все заработает само собой.
По итогу моя продвинутая формула ранжирования так и не дошла до прода и пока не планируется.
Я даже рад, что не прийдется дополнительно нервничать в момент выкатки модели.
Мораль: делать задачу нужно быстро с конца или с середины, но ни как не с начала, обязательно усложнять задачу и спешить сделать ее отлично, чтобы в итоге было о чем написать в личном блоге.