МОДУЛЬ 07 · Junior+ · 2 час

Слабая модель на сильных признаках бьёт сильную на слабых

Собираем матрицу признаков для кредитного скоринга из трёх таблиц — и обходим ловушку, из-за которой модель показывает фантастику на истории и рушится в проде.

Пройти модуль в симуляторе Все 23 урока

Первые два модуля бесплатны, без карты. Остальные — по подписке $20/мес.

🏢 Ситуация

Финтех-направление Datacore запускает рассрочку. Нужен скоринг: одобрять ли заявку. Игорь отдаёт вам подготовку признаков:

«Модель у нас будет простая, а вот признаки — это где выигрывается качество. Правило индустрии: лучшая модель на слабых признаках проигрывает простой модели на сильных признаках. У тебя три таблицы: заявки, история транзакций кошелька и история прошлых рассрочек. Собери из них матрицу признаков. И аккуратно с категориями и пропусками — в проде заявки приходят кривые.»

🎯 Ваша задача

  1. Освоить агрегатные признаки из транзакционной истории.
  2. Правильно кодировать категориальные признаки.
  3. Обрабатывать пропуски так, чтобы это работало и в проде.

📚 Теория

Feature engineering — что это

Преобразование сырых данных в признаки, которые «подсвечивают» задачу для модели. Виды:

  1. Агрегаты по истории: суммы, средние, счётчики, доли за окна времени (30/90/180 дней).
  2. Отношения и разности: платёж / доход, дней с последней просрочки.
  3. Временные признаки: день недели, срок жизни аккаунта, сезонность.
  4. Кодирование категорий — превращение строк в числа.
  5. Трансформации: log для скошенных сумм, биннинг возраста.

Кодирование категориальных признаков

Метод Как Когда
One-Hot колонка на каждую категорию мало категорий (< 15–20)
Ordinal категория → номер категории реально упорядочены (образование)
Target encoding категория → среднее таргета по ней много категорий; ⚠️ риск утечки — считать только на train, с кросс-валидацией/сглаживанием
Частотное категория → её частота быстро и часто на удивление хорошо

⚠️ Ловушка: one-hot для «города» с 900 значениями → 900 колонок, разреженная матрица, переобучение на редких городах.

Пропуски: думаем как продакшен-инженер

Утечка данных через признаки (главный враг скоринга)

Признак не должен содержать информацию из будущего относительно момента заявки. Пример фейла: признак «число звонков коллекторов» — он появляется только у тех, кто уже просрочил. Модель с ним покажет фантастический AUC на истории и рухнет в проде. Правило: все признаки считаются строго на данных до момента заявки (point-in-time).

Point-in-time: что можно и что нельзя брать в признаки окно агрегатов: 90 дней ДО заявки транзакции, входы, платежи ✓ момент заявки БУДУЩЕЕ — запрещено «звонки коллекторов», статус аккаунта, факт просрочки — следствия таргета ✗ история → признак из будущего = «AUC 0.99» на истории и провал в проде
Каждый признак должен быть вычислим в момент предсказания. Всё, что появляется после заявки, — утечка.

Что запомнить

  • Качество скоринга выигрывается признаками, а не выбором модели.
  • Агрегаты по окнам времени + отношения — рабочая лошадка табличного ML.
  • Каждый признак — строго point-in-time относительно момента предсказания.
  • Пропуск — это тоже информация; кодируйте флагом.

Дальше в модуле: Практика

Открыть модуль →

Соседние уроки

06 Модель с точностью 99%, которая не работает 08 Churn v2: бустинг против леса

Программа целиком — 23 урока