Skip to content

Repository files navigation

Bank Product Recommender System 🏦

Проект по созданию рекомендательной системы банковских продуктов: от анализа данных до деплоя ML-сервиса в Docker с мониторингом. 📋 Оглавление Исследование данных (EDA) Инфраструктура (MLflow) Трансляция бизнес-задачи Моделирование Продуктивизация (Docker + FastAPI) Мониторинг Воспроизводимость

  1. Исследование данных (EDA) Проведен первичный анализ данных в Jupyter Notebook. Результат: Выявлены ключевые закономерности (влияние возраста, дохода и сегмента клиента на покупку продуктов). Артефакт: notebooks/eda_banksys.ipynb.
  2. Инфраструктура (MLflow) Развернут сервер MLflow для трекинга экспериментов и хранения артефактов моделей. Запуск в терминале: sh run_mlflow.sh Хранилище: Модели логируются в формате mlflow.catboost.
  3. Трансляция бизнес-задачи Цель: Предсказать склонность клиента к покупке конкретного продукта. Метрики: Основная метрика — MAP@7 Подход: Классификация на основе 8 ключевых признаков клиента.
  4. Моделирование Проведены эксперименты с CatBoostClassifier. Фичи: age, renta, antiguedad, segmento, sexo, ind_nuevo, ind_actividad_cliente, tiprel_1mes. Результат: Модель сохранена в файл model.cb.
  5. Продуктивизация (Docker + FastAPI) Модель обернута в веб-сервис на FastAPI и контейнеризирована. Сборка и запуск: bash

Сборка образа (из корня проекта)

docker build -t bank_recsys_app -f services/Dockerfile .

Запуск контейнера

docker run -d -p 1702:1702 --name bank_service bank_recsys_app

Пример API-запроса (test.py): python import requests payload = {"age": 35, "renta": 85000.0, "sexo": "V", ...} # всего 8 фичей response = requests.post("http://localhost:1702/predict", json=payload) print(response.json()) # {'is_interested': 1}

  1. Мониторинг В сервис интегрирован prometheus-fastapi-instrumentator. Метрики: Доступны по адресу http://localhost:1702/metrics. Контроль: Отслеживается время инференса (latency) и количество запросов (throughput). Описание метрик находится в файле MONITORING.md.

  2. Воспроизводимость Для воспроизведения среды используйте: Python: 3.11 Зависимости: pip install -r requirements_service.txt (Для Docker-контейнера) (важно: numpy<2.0.0 для совместимости с CatBoost).

  3. Требования и воспроизводимость среды Для обеспечения стабильности и легкости проекта используется разделение зависимостей на две группы. Это позволяет минимизировать размер Docker-образа и избежать конфликтов библиотек. Разделение зависимостей: requirements.txt (Environment для разработки) Назначение: Полная среда для Data Science (EDA, обучение моделей, визуализация). Ключевые пакеты: jupyter, seaborn, matplotlib, mlflow, scikit-learn. Использование: Локальное виртуальное окружение (.venv_bank_recsys). requirements_service.txt (Environment для Docker) Назначение: Легковесная среда только для работы API-сервиса (инференс). Ключевые пакеты: fastapi, uvicorn, catboost, pandas, prometheus-fastapi-instrumentator. Оптимизация: Исключены тяжелые инструменты визуализации и разработки. Гарантия воспроизводимости: Фиксация версий: В обоих файлах жестко зафиксированы версии критических библиотек (например, numpy<2.0.0 и pandas>=2.1.0), что предотвращает ошибки совместимости при сборке образа в будущем. Random State: Во всех экспериментах в Jupyter Notebook и при обучении модели зафиксирован random_state=42 для идентичности результатов при повторном запуске.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages