Десять лет не участвовал в ML-соревнованиях, а тут решил попробовать AI-First подход: код генерит DeepSeek, гипотезы и выводы мои. Задача от Ozon: предсказать GMV 250 тысяч клиентов на 30 дней вперёд. Данные - разрежённая матрица: почти 46% пользователей с нулевым оборотом, а один процент китов даёт непропорциональный вклад в ошибку. Оценивали по RMSLE, где значение 1.6 означает реальную ошибку в пять-шесть раз. Для прогноза это норма. Первые дни ушли на классику. DeepSeek бодро накидал пайплайн на LightGBM. Baseline из 22 фич дал 1.6976 на публичном лидерборде. Дальше я гонял его по кругу: walk-forward, новые фичи, тюнинг. Результат полз вниз: 1.6723, потом 1.660, потом 1.6518. Казалось, ещё чуть-чуть и войдём в топ-20. Но упёрлись. Нейросеть послушно генерировала варианты, но её мышление сузилось до банального подбора гиперпараметров. «Давай ещё раз прогоним learning_rate», - твердила она, когда я предлагал попробовать BTYD-модели или внешние макро-данные из отчётности Ozon. Я потратил день на расчёт коэффициента роста GMV из квартального отчёта, добавил его множителем, но LB не улучшился. Мы явно застряли в локальном минимуме, и DeepSeek не видел выхода. Тогда я вспомнил, что поведение покупателей - это временные ряды. Почему мы игнорируем последовательности? Предложил попробовать рекуррентные сети. Нейросеть скептически заметила, что для табличных данных это избыточно, но код написала за минуты. GRU с шириной 4096 дал 1.6702 на LB - лучше многих бустингов. Затем я скрестил эмбеддинги из GRU с табличными фичами. Гибрид с весом нейросетевой части 0.3 выбил 1.650366 на public. Это был топ-50. DeepSeek удивился: «Не ожидал, что так сработает». Человеческая интуиция вывела модель из ступора, до которого ИИ не додумался. Дальше я попробовал экзотику: Transformer оказался медленным и худшим (1.716), Mamba взорвалась на моих 8 гигабайтах видеопамяти, RWKV умерла, а xLSTM показал 1.6736 - клон GRU без выигрыша в разнообразии. Железо не позволяло развернуться, арендовать облако не хотелось. DeepSeek предлагал «потерпеть и тюнить дальше», но я решил остановиться на гибриде. Финал обнажил главный урок. Public score 1.650366 (ранг 70) обернулся private 1.6655 (ранг 59). Разрыв +0.0152 - всё, что я подгонял под публичный лидерборд, не перенеслось на скрытую выборку. Табличный вариант с калибровкой оказался бы надёжнее. Это классическая ловушка соревнований, о которой все забывают. В сухом остатке: LLM - отличный исполнитель, но слабый архитектор. Он быстро пишет шаблонный код, но застревает в привычных схемах. Человек медленнее кодит, зато способен увидеть неожиданный поворот и вытащить модель из локального минимума. AI-First работает, если первый - это человек. А ваш ИИ тоже упирается в потолок, или вам везёт больше?