Игорь Градов
Игорь Градов
5 мин
ai

Pipeline в scikit-learn закрывает лишь один из трёх слоёв утечки данных в ML

Материал представлен как техническая статья Сергея Прощаева, подготовленная для курса «Машинное обучение. Продвинутый уровень» в ОТУС, а не как новость о сделке или раунде финансирования. Источник не содержит данных о привлечённых инвестициях, сумме сделки, оценке компании, дате раунда или ключевых инвесторах. Формат «funding» (таблица «Сделка в цифрах», аналитика раунда, влияние на рынок) невозможно построить без выдумки фактов.

Pipeline в scikit-learn закрывает лишь один из трёх слоёв утечки данных в ML

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


Сергей Прощаев, Tech Lead в финтехе и преподаватель ОТУС, опубликовал пошаговый разбор того, почему модель машинного обучения теряет точность после выхода в продакшен и как библиотека scikit-learn помогает закрыть только часть проблемы, оставляя самые опасные утечки данных на совести разработчика.

Почему это важно

Разрыв между лабораторной метрикой и боевой встречается почти в каждом ML-проекте, но его редко разбирают публично с позиции бэкенда, а не дата-сайентиста. Прощаев показывает конкретный код на Python и называет три слоя, из которых Pipeline (встроенный механизм scikit-learn, который выстраивает шаги обработки данных в цепочку) контролирует лишь один.

Статья вышла как учебный материал курса «Машинное обучение. Продвинутый уровень» образовательной платформы ОТУС. Автор описывает реальный кейс: команда приносит модель бинарной классификации (антифрод, скоринг транзакций) с ROC-AUC 0.93 на кросс-валидации. Через две недели в продакшене метрика падает до 0.86. Причина не в дрейфе данных, а в самой процедуре измерения.

Почему лабораторная метрика врёт?

Прощаев выделяет три главных источника расхождения.

  • Перемешивание по времени. Стандартная кросс-валидация (когда данные случайно делятся на части для проверки) тасует строки за 14 месяцев. Модель «видит» будущее при обучении. В бою она получает только текущий поток, и метрика проседает.
  • Утечка через признаки. К транзакции подклеивается история клиента: например, «доля отклонённых операций за 30 дней». Если агрегат посчитан по всей таблице одним проходом, он может включать события, произошедшие позже самой транзакции. Pipeline в scikit-learn этого не ловит, он работает на следующем слое.
  • Незрелая метка. Подтверждённый фрод приходит через недели. Если сравнивать метрику «за последние две недели», половина меток ещё не созрела, и оценка бессмысленна.

Три окна вместо случайной нарезки

Автор предлагает жёсткое деление данных по времени с помощью Python и pandas.

  • train (обучающие данные, всё до 1 марта 2026 года) используется для кросс-валидации и подбора гиперпараметров (настроек алгоритма, которые задаются вручную).
  • dev (от 1 марта до 1 мая 2026 года) нужен для настройки порога принятия решения. После этого dev перестаёт быть независимой проверкой.
  • holdout (после 1 мая, минус окно созревания метки) считается ровно один раз и записывается в тикет. Как только по нему начинают выбирать фичи или модели, он теряет смысл.

Код на Python занимает шесть строк и использует стандартные средства pandas. Никакой экзотики: Python 3.12, scikit-learn 1.9.0, LightGBM 4.6.0.

Pipeline закрывает один слой из трёх

Pipeline в scikit-learn (механизм, который собирает обработку данных и обучение в единую цепочку, чтобы каждый шаг видел только свою часть данных) гарантирует, что импутация (заполнение пропусков), кодирование категорий и обучение увидят только обучающую часть каждого фолда (подвыборки при кросс-валидации).

Но Pipeline ничего не знает о двух других слоях: как собиралась витрина данных и как вы нарезали выборки по времени. Именно там прячутся утечки, которые дают красивую цифру в отчёте и падение в бою.

Прощаев формулирует правило из двух частей: событие, на основе которого считается признак, должно предшествовать моменту предсказания, и отдельно сам признак должен быть готов (записан в витрину) до этого момента. Агрегат, посчитанный за события до 10:00, но записанный в 10:37, для решения в 10:05 недоступен.

Спор «нужен ли Pipeline» бессмысленный. Нужен, но сам по себе он не делает измерение честным. : Сергей Прощаев, Tech Lead, преподаватель ОТУС

Что делать с этим прямо сейчас?

Автору Дзена и копирайтеру. Если пишете про ML-продукты или берёте интервью у технических команд, вопрос «как вы валидируете модель перед релизом» отделяет рабочий материал от маркетинговой обёртки. Термины «кросс-валидация», «утечка данных», «временной срез» теперь в вашем словаре.

Маркетологу. Когда подрядчик показывает ROC-AUC 0.93, спросите: данные нарезаны по времени или перемешаны? Есть ли holdout, который считали один раз? Два вопроса сэкономят недели разочарования после запуска.

Разработчику и предпринимателю в РФ. Весь стек из статьи (Python, scikit-learn, LightGBM, pandas) доступен без ограничений. Из российских платформ для обучения ML в продакшене работают ОТУС и Яндекс Практикум. Код из статьи можно забрать в свой проект без доработок.

Мнение редакции dzen.guru

Статья Прощаева ценна не алгоритмом, а углом зрения. Большинство гайдов по scikit-learn написаны дата-сайентистами для дата-сайентистов. Здесь говорит человек, который принимает модель в прод и потом объясняет продукту, почему антифрод пропускает транзакции. По моим наблюдениям, именно этот разрыв между «в ноутбуке работает» и «в бою не работает» убивает доверие бизнеса к ML быстрее любого хайпа. Если в вашей команде есть и DS, и бэкенд, дайте статью обоим: она написана на языке, который понимают обе стороны.

Статья охватывает первые три шага из восьми. Полный маршрут Прощаев обещает в продолжении, и если вторая часть окажется такой же конкретной, это будет один из самых практичных русскоязычных гайдов по выводу ML-модели в продакшен. Забирайте код из первой части и проверьте свои витрины данных до того, как метрика упадёт после релиза.

Поделиться:TelegramVK
Игорь Градов
Игорь Градов

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».

Комментарии

Читайте также

Пожар на дата-центре ИИ за $3,2 млрд: гидранты сухие, сигнализация не работала
ai

Пожар на дата-центре ИИ за $3,2 млрд: гидранты сухие, сигнализация не работала

Почему это важно Пожар на строящемся дата-центре для ИИ стоимостью 3,2 млрд долларов обнажил системную проблему: пожарные вошли в здание вслепую, без…

5 мин
Нейросети в маркетинге: обучение GEO даёт конверсию в 4,4 раза выше поиска
ai

Нейросети в маркетинге: обучение GEO даёт конверсию в 4,4 раза выше поиска

Продвижение бренда через нейросети перестало быть экспериментом: по данным источника, переход из рекомендации Claude и ChatGPT даёт конверсию в покупку в 4,4…

6 мин
Три проверки качества эмбеддинг-моделей полностью перетасовали рейтинг на 4695 документах
ai

Три проверки качества эмбеддинг-моделей полностью перетасовали рейтинг на 4695 документах

Эмбеддинг (embedding) превращает текст в набор чисел, по которому нейросеть определяет, о чём документ, но реальный эксперимент на 4695 деловых документах с…

6 мин