Разбор

Что такое признаки в машинном обучении и как избежать утечки ответа

Разбираем признаки модели на примере прогноза повторной покупки: какие поля доступны в нужный момент, где возникает утечка и почему пропуски требуют правил.

• • 2 мин чтения

Признаки, или features, - сведения об объекте, которые модель использует для получения ответа. Для заказа это могут быть число товарных позиций, склад и способ получения. Для клиента - история действий, известная к моменту прогноза.

Главный вопрос к каждому полю: будет ли оно доступно тогда, когда модель понадобится в работе? Полезная зависимость в исторической таблице может оказаться информацией из будущего, которую в реальном приложении получить невозможно.

Сначала назначьте момент прогноза

В условной задаче магазин оценивает вероятность повторной покупки сразу после оплаты первого заказа. Значит, можно использовать сведения о первом заказе и известную к этому моменту историю клиента.

Поле «число заказов за следующие 30 дней» добавлять нельзя: оно содержит часть будущего результата. Аналогичная проблема возникает с отметкой сотрудника, которая появляется после наступления события, или с итоговым статусом обработки.

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

Поле в учебном примереДоступность сразу после первой оплаты
Сумма первого оплаченного заказаОбычно известна
Категории товаров первого заказаОбычно известны
Дата следующей покупкиЕщё неизвестна
Число покупок в будущем окнеЕщё неизвестно

Слово «обычно» требует проверки конкретной системы: товарная категория или сумма могут уточняться позже. Важен фактический момент доступности, а не красивое название столбца.

Число и категория требуют разной обработки

Число товарных позиций выражает количество. Код склада обозначает категорию, даже если записан цифрой. Склад «20» не обязан быть вдвое больше или дальше склада «10».

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

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

Пропуск не равен нулю

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

Опишите причину пропусков и правило обработки. Преобразование должно одинаково работать на обучающих и новых данных. Параметры, вычисляемые по данным, следует подбирать на обучающей части, сохраняя независимость проверки.

В руководстве scikit-learn по типичным ошибкам отдельно разбираются несогласованная подготовка данных и утечки. Эти ошибки способны создать завышенную оценку качества даже при корректном коде самого алгоритма.

Как проверять набор признаков

Сначала сравните простой набор полей с более полным на одинаковой отложенной выборке. Затем изучите крупные ошибки и случаи с отсутствующими значениями. Новое поле полезно, если помогает на новых данных и доступно в рабочем процессе.

Сильная связь с результатом ещё не означает причинного влияния. Например, признак может отражать решение сотрудника или другую уже действующую систему. Исключать или использовать его нужно с пониманием процесса, а не только по красивому показателю важности.

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

Источники

Обсуждение

    Пока без комментариев. Будьте первым.

    Войдите, чтобы отправить комментарий

    Вы сможете комментировать статьи, сохранять материалы

    или войдите по email

    Бесплатная диагностика · 30 минут · без обязательств

    Маркетинг работает, но продажи не растут?

    Отвечу на 3–5 вопросов о вашем бизнесе — и мы вместе разберём, где именно теряются клиенты и что с этим делать.

    Без продаж. Без навязчивых звонков.