{
  "id": 598111,
  "title": "17th Place Private: EDA, Hierarchical Clusterization, FE, CatBoost",
  "content": "<h1><strong>Аннотация</strong></h1>\n<p>Данная работа представляет из себя фундаментальный подход к построению модели машинного обучения для предсказания оттока клиентов по различным банковским продуктам.  </p>\n<p>Первым блоком стоит кластеризация данных по трем непрерывным признакам (возраст клиента, оцененная зарплата и кредитный рейтинг) методами иерархической агломеративной (англ. agglomerative) кластеризации и стандартным k-means++ (доработанная версия стандартного k-means). Данный блок является некоторого рода частью EDA (Exploratory Data Analysis), который выявил визуальную линейную разделимость в данных (4 линейно делимых кластера в k-means++ и 2 кластера в агломеративной иерархической кластеризации); тем не менее, в ходе проделанной работы данный инсайт эксплуатировать не удалось. В дальнейшем стоит попробовать снизить размерность всего признакового пространства с помощью UMAP / PaCMAP / TriMAP (на практике именно данные алгоритмы зачастую дают наилучшее качество в задачах понижения размерности, хотя дополнительная проверка качества их работы и возможная замена на другие алгоритмы может иметь смысл) на исходных признаках и уже далее заниматься задачей кластеризации; тем не менее, упрощенный пайплайн выше имеет месть быть.  </p>\n<p>Далее был проведен блок генерации новых признаков; были созданы признаки как продуктового характера, так и сугубо вспомогательные признаки для модели (нелинейные производные от исходных признаков и прочее). </p>\n<p>Признаки были отобраны с помощью алгоритма Permutation Importance с базовой моделью CatBoost с глубиной решающего дерева 5.  </p>\n<p>Отдельно стоит отметить, что до отбора признаки в тренировочных данных были разделены на отдельный тренировочный набор и отдельный тестовый набор, используя стратифицированное сэмплирование.  </p>\n<p>Финальная модель была построена, используя вариацию градиентного бустинга над решающими деревьями CatBoost (используя oblivious trees); была осуществлена попытка корректировки дисбаланса классов с помощью параметра SqrtBalanced (нормализация суммы весов для классов), но дополнительного положительного эффекта в качество построенной модели по выбранной для соревнования метрике качества это не привнесло. Дополнительно был использован Bayesian (Байесовский) Bootstrap type (бутстрап) для сэмплирования весов объектов как достаточно зарекомендовавшая себя практика, однако дополнительного качества данная идея снова не дала.  </p>\n<p>Подбор гиперпараметров для модели осуществлялся с помощью библиотеки Hyperopt, используя алгоритм Tree of Parzen Estimators (TPE). Оптимальный набор гиперпараметров был подобран, используя заданное распределение гиперпараметров и с осуществлением дополнительной корректировки гиперпараметров, ориентируясь на графики рассеяния гиперпараметры / ROC-AUC (с ожиданием выхода линейной аппроксимации на асимптоту).  </p>\n<p>Итоговая модель была построена на полном тренировочном наборе данных используя StratifiedKFold кросс-валидацию на 5 блоках.  </p>\n<p>Подытоживая, работа получилась достаточно интересной; однако это первый случай на моей практике, когда новые признаки практически не привносили положительных эффектов в качество предсказания и CatBoost на «голых» признаках давал примерно аналогичное качество, как CatBoost на дополнительно созданных признаках, которые, более того, были предварительно достаточно тщательно отобраны.</p>",
  "comments": [],
  "comment_count": 0,
  "messages": [
    {
      "id": 3266290,
      "postDate": "2025-08-08T18:25:29.510Z",
      "content": "<h1><strong>Аннотация</strong></h1>\n<p>Данная работа представляет из себя фундаментальный подход к построению модели машинного обучения для предсказания оттока клиентов по различным банковским продуктам.  </p>\n<p>Первым блоком стоит кластеризация данных по трем непрерывным признакам (возраст клиента, оцененная зарплата и кредитный рейтинг) методами иерархической агломеративной (англ. agglomerative) кластеризации и стандартным k-means++ (доработанная версия стандартного k-means). Данный блок является некоторого рода частью EDA (Exploratory Data Analysis), который выявил визуальную линейную разделимость в данных (4 линейно делимых кластера в k-means++ и 2 кластера в агломеративной иерархической кластеризации); тем не менее, в ходе проделанной работы данный инсайт эксплуатировать не удалось. В дальнейшем стоит попробовать снизить размерность всего признакового пространства с помощью UMAP / PaCMAP / TriMAP (на практике именно данные алгоритмы зачастую дают наилучшее качество в задачах понижения размерности, хотя дополнительная проверка качества их работы и возможная замена на другие алгоритмы может иметь смысл) на исходных признаках и уже далее заниматься задачей кластеризации; тем не менее, упрощенный пайплайн выше имеет месть быть.  </p>\n<p>Далее был проведен блок генерации новых признаков; были созданы признаки как продуктового характера, так и сугубо вспомогательные признаки для модели (нелинейные производные от исходных признаков и прочее). </p>\n<p>Признаки были отобраны с помощью алгоритма Permutation Importance с базовой моделью CatBoost с глубиной решающего дерева 5.  </p>\n<p>Отдельно стоит отметить, что до отбора признаки в тренировочных данных были разделены на отдельный тренировочный набор и отдельный тестовый набор, используя стратифицированное сэмплирование.  </p>\n<p>Финальная модель была построена, используя вариацию градиентного бустинга над решающими деревьями CatBoost (используя oblivious trees); была осуществлена попытка корректировки дисбаланса классов с помощью параметра SqrtBalanced (нормализация суммы весов для классов), но дополнительного положительного эффекта в качество построенной модели по выбранной для соревнования метрике качества это не привнесло. Дополнительно был использован Bayesian (Байесовский) Bootstrap type (бутстрап) для сэмплирования весов объектов как достаточно зарекомендовавшая себя практика, однако дополнительного качества данная идея снова не дала.  </p>\n<p>Подбор гиперпараметров для модели осуществлялся с помощью библиотеки Hyperopt, используя алгоритм Tree of Parzen Estimators (TPE). Оптимальный набор гиперпараметров был подобран, используя заданное распределение гиперпараметров и с осуществлением дополнительной корректировки гиперпараметров, ориентируясь на графики рассеяния гиперпараметры / ROC-AUC (с ожиданием выхода линейной аппроксимации на асимптоту).  </p>\n<p>Итоговая модель была построена на полном тренировочном наборе данных используя StratifiedKFold кросс-валидацию на 5 блоках.  </p>\n<p>Подытоживая, работа получилась достаточно интересной; однако это первый случай на моей практике, когда новые признаки практически не привносили положительных эффектов в качество предсказания и CatBoost на «голых» признаках давал примерно аналогичное качество, как CatBoost на дополнительно созданных признаках, которые, более того, были предварительно достаточно тщательно отобраны.</p>",
      "rawMarkdown": "# **Аннотация**\n\nДанная работа представляет из себя фундаментальный подход к построению модели машинного обучения для предсказания оттока клиентов по различным банковским продуктам.  \n\nПервым блоком стоит кластеризация данных по трем непрерывным признакам (возраст клиента, оцененная зарплата и кредитный рейтинг) методами иерархической агломеративной (англ. agglomerative) кластеризации и стандартным k-means++ (доработанная версия стандартного k-means). Данный блок является некоторого рода частью EDA (Exploratory Data Analysis), который выявил визуальную линейную разделимость в данных (4 линейно делимых кластера в k-means++ и 2 кластера в агломеративной иерархической кластеризации); тем не менее, в ходе проделанной работы данный инсайт эксплуатировать не удалось. В дальнейшем стоит попробовать снизить размерность всего признакового пространства с помощью UMAP / PaCMAP / TriMAP (на практике именно данные алгоритмы зачастую дают наилучшее качество в задачах понижения размерности, хотя дополнительная проверка качества их работы и возможная замена на другие алгоритмы может иметь смысл) на исходных признаках и уже далее заниматься задачей кластеризации; тем не менее, упрощенный пайплайн выше имеет месть быть.  \n\nДалее был проведен блок генерации новых признаков; были созданы признаки как продуктового характера, так и сугубо вспомогательные признаки для модели (нелинейные производные от исходных признаков и прочее). \n\nПризнаки были отобраны с помощью алгоритма Permutation Importance с базовой моделью CatBoost с глубиной решающего дерева 5.  \n\nОтдельно стоит отметить, что до отбора признаки в тренировочных данных были разделены на отдельный тренировочный набор и отдельный тестовый набор, используя стратифицированное сэмплирование.  \n\nФинальная модель была построена, используя вариацию градиентного бустинга над решающими деревьями CatBoost (используя oblivious trees); была осуществлена попытка корректировки дисбаланса классов с помощью параметра SqrtBalanced (нормализация суммы весов для классов), но дополнительного положительного эффекта в качество построенной модели по выбранной для соревнования метрике качества это не привнесло. Дополнительно был использован Bayesian (Байесовский) Bootstrap type (бутстрап) для сэмплирования весов объектов как достаточно зарекомендовавшая себя практика, однако дополнительного качества данная идея снова не дала.  \n\nПодбор гиперпараметров для модели осуществлялся с помощью библиотеки Hyperopt, используя алгоритм Tree of Parzen Estimators (TPE). Оптимальный набор гиперпараметров был подобран, используя заданное распределение гиперпараметров и с осуществлением дополнительной корректировки гиперпараметров, ориентируясь на графики рассеяния гиперпараметры / ROC-AUC (с ожиданием выхода линейной аппроксимации на асимптоту).  \n\nИтоговая модель была построена на полном тренировочном наборе данных используя StratifiedKFold кросс-валидацию на 5 блоках.  \n\nПодытоживая, работа получилась достаточно интересной; однако это первый случай на моей практике, когда новые признаки практически не привносили положительных эффектов в качество предсказания и CatBoost на «голых» признаках давал примерно аналогичное качество, как CatBoost на дополнительно созданных признаках, которые, более того, были предварительно достаточно тщательно отобраны.",
      "votes": 1
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-20T00:44:00Z",
  "competition_id": 95461,
  "competition_slug": "bank-churn-competition-by-ipii-hs-ex-mts",
  "team_id": 13990200,
  "solution_url": "/competitions/bank-churn-competition-by-ipii-hs-ex-mts/writeups/17th-place-private-eda-hierarchical-clusterization"
}