Классификация — одна из первых задач, которую почти каждый кладет в свое портфолио ML. Кажется, что здесь всё просто, но это пока не начинаешь работать с реальными данными.
Привет! На связи Мария Жарова, ментор курсов «ML-инженер» и «Дата-сайентист» 👋🏻
Разберём типичный кейс классификации, через который проходит большинство команд — на примере задачи вроде «определить, уйдёт ли клиент» или «мошенническая ли это транзакция». Детали разные, а сценарий удивительно похожий.
✅ Стартовая точка: что такое «положительный класс»?
Всё начинается с разметки, и первый вопрос, который часто недооценивают: что мы вообще считаем целевым событием?
❓ Если задача про отток: уход клиента — это отсутствие покупок 30 дней? 60? Или может, отписка от рассылки?
❓ Если про фрод — это подтверждённые кейсы от службы безопасности или все подозрительные транзакции?
❓ Если про дефолт — просрочка 30, 60 или 90 дней?
От этого решения зависит буквально всё: размер выборки, качество разметки, интерпретация метрик. И почти всегда оказывается, что «очевидное» определение целевого события на деле не такое уж очевидное — приходится идти к бизнесу и договариваться.
✅ Первая ловушка: дисбаланс классов
Классика жанра — положительный класс сильно меньше отрицательного. Мошенников — доли процента, ушедших клиентов — единицы процентов. И тут появляется искушение посмотреть на accuracy и обрадоваться цифре 99%. Только вот модель, которая всегда предсказывает «не мошенник», даёт ровно такую же точность и абсолютно бесполезна.
Лайфхаки, которые важно запомнить:
➖ Смотреть не на accuracy, а на precision, recall, F1 и PR-AUC;
➖ Отдельно думать про кастомные пороги — дефолтный 0.5 почти никогда не оптимален;
➖ Ресемплинг (SMOTE и подобные) — не серебряная пуля, иногда только ухудшает результат.
✅ Вторая ловушка: утечки в данных
Пожалуй, самая коварная штука в классификации, когда модель показывает подозрительно высокое качество на валидации. Но опытный человек в этот момент не радуется, а начинает искать, где и что могло пойти не так.
Типичные источники утечек:
➖ В фичи попала информация, которая физически недоступна на момент предсказания (например, дата закрытия сделки в модели прогноза этой сделки);
➖ Временной сплит сделан не по времени, а случайно — и модель "подсматривает" в будущее;
➖ Таргет закодирован в одной из фичей через агрегаты, посчитанные по всей выборке.
Правило простое: если качество слишком хорошее — скорее всего, где-то утечка. Лучше потратить день на проверку, чем потом ловить это в продакшене.
✅ Третья ловушка: калибровка вероятностей
Часто от классификатора нужна не просто метка, а вероятность — чтобы ранжировать клиентов по риску или выставлять пороги под разные сценарии. И тут выясняется, что многие модели выдают «степень своей уверенности» в предсказании, но никак не вероятности с математической точки зрения.
Лечится это калибровкой (например, изотонической регрессией или калибровкой Платта) и проверкой через calibration curve. Это простой, но важный для бизнеса шаг, о котором почти всегда забывают.
Классификация — обманчиво простая задача, и именно поэтому в ней столько мест, где можно споткнуться ❤️
Сохраняйте, чтобы не потерять!
Привет! На связи Мария Жарова, ментор курсов «ML-инженер» и «Дата-сайентист» 👋🏻
Разберём типичный кейс классификации, через который проходит большинство команд — на примере задачи вроде «определить, уйдёт ли клиент» или «мошенническая ли это транзакция». Детали разные, а сценарий удивительно похожий.
✅ Стартовая точка: что такое «положительный класс»?
Всё начинается с разметки, и первый вопрос, который часто недооценивают: что мы вообще считаем целевым событием?
❓ Если задача про отток: уход клиента — это отсутствие покупок 30 дней? 60? Или может, отписка от рассылки?
❓ Если про фрод — это подтверждённые кейсы от службы безопасности или все подозрительные транзакции?
❓ Если про дефолт — просрочка 30, 60 или 90 дней?
От этого решения зависит буквально всё: размер выборки, качество разметки, интерпретация метрик. И почти всегда оказывается, что «очевидное» определение целевого события на деле не такое уж очевидное — приходится идти к бизнесу и договариваться.
✅ Первая ловушка: дисбаланс классов
Классика жанра — положительный класс сильно меньше отрицательного. Мошенников — доли процента, ушедших клиентов — единицы процентов. И тут появляется искушение посмотреть на accuracy и обрадоваться цифре 99%. Только вот модель, которая всегда предсказывает «не мошенник», даёт ровно такую же точность и абсолютно бесполезна.
Лайфхаки, которые важно запомнить:
➖ Смотреть не на accuracy, а на precision, recall, F1 и PR-AUC;
➖ Отдельно думать про кастомные пороги — дефолтный 0.5 почти никогда не оптимален;
➖ Ресемплинг (SMOTE и подобные) — не серебряная пуля, иногда только ухудшает результат.
✅ Вторая ловушка: утечки в данных
Пожалуй, самая коварная штука в классификации, когда модель показывает подозрительно высокое качество на валидации. Но опытный человек в этот момент не радуется, а начинает искать, где и что могло пойти не так.
Типичные источники утечек:
➖ В фичи попала информация, которая физически недоступна на момент предсказания (например, дата закрытия сделки в модели прогноза этой сделки);
➖ Временной сплит сделан не по времени, а случайно — и модель "подсматривает" в будущее;
➖ Таргет закодирован в одной из фичей через агрегаты, посчитанные по всей выборке.
Правило простое: если качество слишком хорошее — скорее всего, где-то утечка. Лучше потратить день на проверку, чем потом ловить это в продакшене.
✅ Третья ловушка: калибровка вероятностей
Часто от классификатора нужна не просто метка, а вероятность — чтобы ранжировать клиентов по риску или выставлять пороги под разные сценарии. И тут выясняется, что многие модели выдают «степень своей уверенности» в предсказании, но никак не вероятности с математической точки зрения.
Лечится это калибровкой (например, изотонической регрессией или калибровкой Платта) и проверкой через calibration curve. Это простой, но важный для бизнеса шаг, о котором почти всегда забывают.
Классификация — обманчиво простая задача, и именно поэтому в ней столько мест, где можно споткнуться ❤️
Сохраняйте, чтобы не потерять!