Все проекты
Машинное обучение2025

ML-модель предсказания пола

Сквозной пайплайн классификации с градиентным бустингом и подбором порога по macro-F1.

Приватный репозиторий
CatBoost
+ LightGBM, k-fold кросс-валидация
macro-F1
Целевая метрика с подбором порога
5+
Объединённых источников данных

Технологии

  • Python
  • pandas
  • NumPy
  • scikit-learn
  • CatBoost
  • LightGBM
  • SHAP

Задача

Предсказать пол пользователя по набору разнородных поведенческих сигналов — география, векторы реферера и другие табличные признаки — распределённых по нескольким отдельным файлам, которые сначала нужно очистить и объединить в единый обучающий набор. Метрика оценки — macro-F1, поэтому модель должна работать хорошо по всем классам, а не только на преобладающем.

Подход

Я построил сквозной пайплайн: загрузка и очистка исходных файлов, объединение источников train / test / меток / гео / векторов реферера по ключам, инженерия признаков на объединённой таблице и обучение моделей градиентного бустинга (CatBoost и LightGBM). Модели проверялись k-fold кросс-валидацией, а порог принятия решения подбирался именно для максимизации macro-F1, а не общей точности, с сопоставлением результатов с более простыми базовыми решениями.

Результаты

Воспроизводимый пайплайн, который доводит сырые данные из нескольких источников до настроенного классификатора с кросс-валидацией. Подбор порога по macro-F1 заметно улучшил сбалансированное качество по сравнению со стандартной отсечкой 0,5, а анализ SHAP и кривых сделал поведение модели интерпретируемым.

Инженерные решения

  • Сквозной пайплайн: загрузка, очистка и объединение источников train / test / меток / гео / векторов реферера.
  • Инженерия признаков на разнородных входных данных, затем модели градиентного бустинга (CatBoost, LightGBM).
  • k-fold кросс-валидация с подбором порога по macro-F1 и сравнением с базовыми решениями.
  • Анализ через SHAP и оценка по кривым ROC и precision-recall.

Скриншоты и схемы

Реальные снимки интерфейса и графики — исходный код закрыт, бренды клиентов не показаны.

Сквозной ML-пайплайн — загрузка → объединение → признаки → обучение → оценка.
Кривые ROC и precision-recall в сравнении с базовым решением.
Важность признаков — какие сконструированные сигналы оказались значимее всего.

Подробный разбор

Самое интересное здесь — не выбор модели, а работа с данными и целевая метрика. Исходные данные приходят несколькими разрозненными файлами, которые нужно корректно объединить прежде, чем вообще начинать моделирование, а целевая метрика — macro-F1 — вознаграждает сбалансированное качество по классам. Это превращает задачу из «обучить классификатор» в «сконструировать чистые признаки и выбрать рабочую точку, максимизирующую сбалансированный F1» — а именно там и окупились подбор порога и кросс-валидация.