Skip to content

Кластеризация держателей кредитных карт для разработки целевых маркетинговых стратегий

Notifications You must be signed in to change notification settings

SomeBotMeOn/Clients-Segmentation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Clients-Segmentation


Оглавление

  1. Цель
  2. Описание проекта
  3. Данные
  4. Подход
  5. Результаты
  6. Сегментация клиентов
  7. Технологии
  8. Структура проекта
  9. Запуск на своих данных
  10. Заключение

Цель

Задача состоит в разработке сегментации клиентов для предоставления рекомендаций, таких как планы сбережений, кредиты, управление капиталом и другие финансовые услуги, ориентированные на определенные группы клиентов. Кроме того, проект направлен на создание инструмента для автоматического определения группы (кластера) новых клиентов на основе их поведения и характеристик, что позволит мгновенно адаптировать маркетинговые стратегии и предложения.


Описание проекта

Была разработана модель для сегментации клиентов страховой компании на основе различных характеристик, что позволяет улучшать маркетинговые стратегии бизнеса и предлагать клиентам персонализированные продукты.

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


Данные

Особая благодарность Jillani SoftTech за предоставленные данные для этого проекта. Данные можно найти на Kaggle.

Этот датасет содержит информацию о поведении примерно 9000 активных держателей кредитных карт за 6 месяцев. Данные представлены на уровне клиентов и включают 18 поведенческих переменных, таких как частота покупок, сумма покупок, использование кредитного лимита, снятие наличных и другие.


Подход

  1. Предобработка данных:

    • Обработка пропусков с использованием различных методов.
    • Анализ распределения данных, медианы, моды, а также QQ-графики для выявления отклонений.
    • Применение логарифмирования данных для уменьшения тяжелых хвостов.
    • Нормализация данных и дальнейшее изучение корреляции между признаками (с использованием Пирсона и Phik).
  2. Генерация признаков:

    • Создание новых композитных признаков.
  3. Кластеризация клиентов:

    • Применение алгоритмов кластеризации: Agglomerative Clustering, DBSCAN, K-Means, Spectral Clustering.
    • Сегментация клиентов с использованием полученных признаков и без них.
    • Применение PCA для визуализации и анализа кластеров.
  4. Обучение моделей для предсказания:

    • Применение различных классификационных алгоритмов (CatBoost, XGBoost, LightGBM, RandomForest и другие) для оценки наилучших моделей.
    • Выбор лучших моделей с точностью более 0.9 для дальнейшего ансамблирования.
    • Реализация ансамблирования с использованием методов Stacking, Bagging, VotingClassifier и Blending, где в качестве мета-модели был выбран XGBoost.
  5. Оптимизация с помощью Optuna:

    • Оптимизация гиперпараметров моделей с помощью Optuna для достижения наилучших результатов.

Результаты

  • Лучшие модели для предсказания:
    • CatBoost, LogisticRegression, RandomForest, ExtraTreesClassifier, GradientBoosting.
  • После ансамблирования:
    • Итоговая balanced accuracy: 99.61% (метрика выбрана из-за важности учёта несбалансированности классов при предсказании кластеров).
  • Маркетинг:
    • Весь проект задумывался для улучшения маркетинговых стратегий, что позволит более эффективно работать с различными группами клиентов.

Сегментация клиентов

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

  2. Второй кластер: Клиенты с более высоким балансом и хорошими финансовыми привычками. Идеальными предложениями для них будут премиум-продукты и бонусы за активное использование карты.

  3. Третий кластер: Клиенты с высокой покупательской активностью и предпочтением разовых покупок. Для них можно предложить скидки и специальные условия для снятия наличных.


Технологии

Обработка и анализ данных:

  • pandas
  • numpy
  • scipy
  • phik

Визуализация данных:

  • matplotlib
  • seaborn
  • yellowbrick

Стандартизация и масштабирование:

  • StandardScaler

Кластеризация:

  • AgglomerativeClustering
  • DBSCAN
  • KMeans
  • SpectralClustering

Машинное обучение:

  • RandomForestClassifier
  • CatBoostClassifier
  • XGBoost
  • LightGBM
  • GradientBoostingClassifier
  • LogisticRegression
  • KNeighborsClassifier
  • SVC
  • NaiveBayes
  • DecisionTreeClassifier
  • ExtraTreesClassifier
  • AdaBoostClassifier

Ансамблирование:

  • Blending
  • Stacking
  • Voting
  • Bagging

Тюнинг гиперпараметров:

  • Optuna

Метрики и оценка моделей:

  • balanced_accuracy_score - основная метрика, так как распределение клиентов по кластерам может быть неравномерным, а задача требует корректного предсказания даже для меньших групп.
  • Silhouette Score
  • Calinski Harabasz Score
  • Davies Bouldin Score

Прочее:

  • PCA
  • pickle
  • warnings
  • tqdm

Структура проекта

  1. data/: - данные.
    • raw_data - исходные данные.
    • processed_data - обработанные данные.
      • main_datasets- основные датасеты (без кластеров).
      • train_models_data - данные с предсказаниями моделей кластеризации.
        • data_with_PCA - данные с применением PCA.
          • data_with_generated_features - данные с созданными признаками.
          • data_without_generated_features - данные без созданных признаков.
        • data_without_PCA - данные без применения PCA.
          • data_with_generated_features - данные с созданными признаками.
          • data_without_generated_features - данные без созданных признаков.
      • data_for_final_models - данные для финальных моделей (наилучшее определение кластеров).
  2. models/: - сохраненные модели.
    • 1_default_models - модели с дефолтными параметрами.
    • 2_optuna_models - модели с оптимизированными параметрами.
    • 3_final_models - финальные модели.
  3. notebooks/: - ноутбуки.
    • EDA - анализ данных.
    • Feature Generation - генерация признаков.
    • train_models - предсказание кластеров.
      • with_PCA - с применением PCA.
        • with_generated_features - с созданными признаками.
        • without_generated_features - без созданных признаков.
      • without_PCA - без применения PCA.
        • with_generated_features - с созданными признаками.
        • without_generated_features - без созданных признаков.
    • evaluation_models - оценка предсказаний кластеризации.
      • with_PCA - с применением PCA.
        • with_generated_features - с созданными признаками.
        • without_generated_features - без созданных признаков.
      • without_PCA - без применения PCA.
        • with_generated_features - с созданными признаками.
        • without_generated_features - без созданных признаков.
    • results - результаты.
      • eval_models_results.ipynb - выбор модели кластеризации.
      • final_results.ipynb - финальные результаты, маркетинговые стратегии, важные признаки.
      • pipeline.ipynb - пайплайн проекта (для запуска на своих данных).

Запуск на своих данных

  1. Скачайте репозиторий.
  2. Установите необходимые библиотеки: pip install -r requirements.txt.
  3. Зайдите в notebooks/results/pipeline.ipynb и следуйте инструкциям в файле.

Заключение

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

About

Кластеризация держателей кредитных карт для разработки целевых маркетинговых стратегий

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published