TensorFlow + Data Science Professional: почему ваша модель не работает на новых данных и как это исправить

Вы обучили модель, получили 95% accuracy на тесте, отдали в продакшен. Через месяц бизнес приходит с вопросом: «Почему рекомендации стали ерундой, а прогноз спроса промахивается на 40%?» Знакомо? Это не редкий сбой, а типичная ситуация, с которой сталкиваются почти все, кто внедряет машинное обучение. В этой статье разберём, почему модель, показывающая отличные метрики на тесте, разваливается в реальной эксплуатации, как заметить проблему заранее и что делать, если уже поздно. А заодно посмотрим, как этому учат на курсе TensorFlow + Data Science Professional. Подробнее об этом — в статье Визуализация данных.

Почему модель на тесте — это ещё не модель в продакшене

Тестовая выборка и реальные данные — это два разных мира. На тесте вы оцениваете модель на данных, которые похожи на обучающие: тот же период, те же условия, те же пользователи. В продакшене данные приходят из будущего, и их распределение может отличаться. Это называется сдвигом данных (data drift). Модель не знает, что мир изменился, и продолжает применять старые закономерности. Подробнее об этом — в статье Data Engineering (Spark, dbt): как строить пайплайны данных, которые не падают в production.

Кроме того, при подготовке данных легко допустить утечку данных (data leakage) — когда в признаки попадает информация, которая не будет доступна в момент предсказания. Например, вы предсказываете отток клиентов и используете признак «количество обращений в поддержку за последний месяц». Но в момент предсказания этого признака ещё нет — клиент может уйти раньше. Модель на тесте покажет 95%, а в реальности будет ошибаться, потому что признак работает только на исторических данных.

Ещё одна классика — переобучение (overfitting): модель слишком хорошо запомнила обучающую выборку, включая шум, и не обобщает на новые данные. На тесте, который был частью обучающего набора (если вы неправильно сделали сплит), она покажет высокую точность, но на новых данных провалится.

Ключевое различие Тестовая выборка проверяет, как модель работает на данных «из прошлого», а продакшен — на данных «из будущего». Если между ними есть временной разрыв или изменения в поведении пользователей, метрики могут сильно расходиться.

Разбор реального кейса: прогноз оттока клиентов

Представьте, что вы строите модель для телеком-компании, которая предсказывает, уйдёт ли клиент в ближайший месяц. У вас есть данные за год: демография, тариф, количество звонков, обращений в поддержку, платежи. Вы делите данные случайным образом на train и test (80/20), обучаете градиентный бустинг, получаете ROC AUC 0.95. Отлично! Отдаёте в продакшен.

Через месяц выясняется, что модель ошибается в 30% случаев. Почему? Давайте разбираться.

Шаг 1. Проверка сплита. Случайный сплит для временных данных — грубая ошибка. Если данные за год, а вы перемешали их случайно, то в тесте могут оказаться записи за январь, а в train — за декабрь. Но поведение клиентов меняется со временем: зимой больше звонков, летом — меньше. Модель, обученная на всех месяцах, кроме одного, будет использовать будущие данные для предсказания прошлого. Это утечка из будущего (future leakage). Правильно делать сплит по времени: train — первые 9 месяцев, test — последние 3.

Шаг 2. Проверка утечки таргета. Вы используете признак «средний чек за последний месяц». Но если клиент ушёл, то в последний месяц перед уходом его чек мог упасть. Этот признак косвенно содержит информацию о таргете. В продакшене вы предсказываете уход заранее, когда чек ещё не упал. Модель на тесте видит этот признак и показывает высокую точность, а в реальности — нет.

Шаг 3. Сдвиг данных. После запуска модель работает месяц. За это время компания запустила новую акцию, и клиенты стали активнее звонить. Признак «количество звонков» сместился. Модель, обученная на старых данных, не учитывает этот сдвиг и ошибается.

Шаг 4. Отсутствие мониторинга. Вы не отслеживаете метрики в продакшене. О проблеме узнаёте от бизнеса, когда клиенты уже ушли.

Что проверить первым Всегда проверяйте, нет ли в признаках информации, которая будет недоступна в момент предсказания. Особенно если признак показывает высокую важность в модели — это красный флаг.

Где ещё ломается: типичные сценарии отказа

1. Переобучение на маленьких данных

Если данных мало, модель легко переобучается. Признак: accuracy на train 99%, на test 70%. Решение: упростить модель, добавить регуляризацию, собрать больше данных или использовать аугментацию.

2. Неправильная валидация для временных рядов

Для временных рядов нельзя использовать k-fold кросс-валидацию со случайным перемешиванием. Нужен TimeSeriesSplit — когда обучение идёт на прошлом, а валидация на будущем. Иначе вы получите оптимистичную оценку и утечку из будущего.

3. Сдвиг концепции (concept drift)

Даже если распределение признаков не изменилось, связь между признаками и таргетом может поменяться. Например, вы предсказываете вероятность покупки, и вдруг меняется мода: то, что раньше нравилось, перестаёт нравиться. Модель этого не заметит.

4. Утечка через ID или служебные поля

Иногда в данные попадают идентификаторы, которые косвенно связаны с таргетом. Например, ID клиента, если он присваивается по порядку и клиенты с большими ID — новые, которые чаще уходят. Модель может использовать ID как признак и переобучиться.

5. Отсутствие мониторинга дрейфа

Без мониторинга вы не узнаете, что данные изменились, пока не станет слишком поздно. Нужно отслеживать распределение ключевых признаков и метрики модели.

Как заметить проблему заранее

Вот несколько практических шагов, которые помогут выявить проблемы до того, как модель развалится.

1. Проверьте сплит. Для временных данных используйте хронологический сплит. Убедитесь, что в train нет данных из будущего относительно test.

2. Проанализируйте важность признаков. Если какой-то признак имеет аномально высокую важность, проверьте, нет ли в нём утечки. Например, признак «количество дней с последнего обращения» может быть следствием ухода, а не причиной.

3. Сравните распределения train и test. Используйте статистические тесты (например, критерий Колмогорова-Смирнова) для числовых признаков и хи-квадрат для категориальных. Если распределения сильно различаются, возможно, данные нестационарны.

4. Настройте мониторинг дрейфа. В продакшене регулярно сравнивайте распределение входных признаков с обучающей выборкой. Если дрейф превышает порог, запускайте переобучение.

5. Валидируйте на отложенной выборке. Держите отдельный набор данных, который не используется ни при обучении, ни при подборе гиперпараметров. Используйте его для финальной проверки.

Пути освоения Data Science и MLOps

Если вы поняли, что ваши модели страдают от этих проблем, есть несколько путей углубить знания.

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

Практика на реальных проектах — самый эффективный способ, но требует доступа к данным и возможности ошибаться. В компании вы можете учиться на своих ошибках, но цена ошибки может быть высокой.

Структурированные курсы — дают систему и обратную связь. Например, курс TensorFlow + Data Science Professional построен вокруг практических задач: вы не просто изучаете теорию, а разбираете конкретные кейсы с утечками, сдвигом данных и настройкой мониторинга. Это помогает увидеть типичные ошибки и научиться их избегать.

Trade-off: самостоятельное изучение дешевле, но может занять больше времени и привести к пробелам. Курсы стоят денег, но экономят время и дают обратную связь. Практика в компании — лучший вариант, но не всегда доступен новичкам.

Кому подойдёт этот путь, а кому нет

Этот материал и курс будут полезны, если вы уже знакомы с основами машинного обучения, но хотите научиться внедрять модели в продакшен и избегать типичных ошибок. Если вы только начинаете, сначала стоит освоить базовые алгоритмы и Python.

Курс не подойдёт тем, кто ищет волшебную таблетку: внедрение ML требует внимания к деталям и готовности разбираться в данных. Также он не заменяет практику на реальных проектах — но даёт инструменты, которые помогут эту практику пройти успешнее. Подробнее об этом — в статье Векторные базы данных.

В финале хочу сказать: если вы устали от того, что модели не работают в продакшене, и хотите разобраться, как строить надёжные ML-системы, обратите внимание на TensorFlow + Data Science Professional. Курс разбирает эти проблемы на конкретных примерах и помогает выработать привычку проверять данные на утечки и дрейф ещё до запуска.

← Все статьи

Спросить AI по этой статье

Задайте вопрос по этой статье — ASI Biont ответит, опираясь на её текст.

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

Сколько времени нужно на иностранный язык: как ИИ и кривая забывания дают разговорный английский за год при 20 минутах в день

27 октября 2026

Ораторское искусство и харизма: как перестать бояться вопросов после выступления (практический гайд)

27 октября 2026

Цифровая гигиена за вечер: как найти утечки персональных данных и удалить информацию о себе из интернета

27 октября 2026

Сколько часов учить испанский до DELE 2026: разбор нормативов, статистики и гибридной подготовки с AI-репетитором

27 октября 2026

Юнит-тесты на Python с LLM: 12 промтов от pytest-фикстур до Hypothesis, которые закрывают непокрытые ветки

27 октября 2026

QA Automation Engineer: 5 мифов, которые стоят новичкам месяцев (и как их избежать)

11 ноября 2026

Расторжение договора с фитнес-клубом или салоном красоты и возврат денег: разбор условий, сроков и претензий в 2026 году

27 октября 2026

Full-Stack AI Engineer: как RAG-пайплайны, векторные базы данных и развертывание LLM на самом деле работают в продакшене

28 октября 2026

CIPM / CIPP/E — Управление конфиденциальностью и GDPR (IAPP): как статистика правоприменения GDPR превращает риск несоответствия требованиям в статью бюджета

28 октября 2026