Skip to content

Лабораторная работа №4

📌 Тема

Классификация с применением Scikit-Learn. Предсказание дефолта по кредиту

Ссылка на ipynb-board

Google-colab notebook

Отчет

Работа с другими моделями

Наилучший ROC-AUC получился при использовании Gradient-Boosting - 0.8641. Почти такое же значение иметь Random Forest(0.8640). Остальные модели проигрывают - Logistic Regression: 0.6618(предполагает, что вероятность дефолта линейно зависит от признаков), KNN: 0.5576(ищет локальную схожесть), SVM - 0.4259 (подзодит для работы с плотными непрерывными пространствами, у нас же таблица с разнородными признаками). Изменение параметров Random Forest также не принесло значительных улучшений

Причины невозможности построения лучшей модели

  • Информационный потолок датасета (Data Ceiling): В датасете содержится всего 10 анкетных признаков. Эти данные описывают статус заемщика, но не его поведение. Они несут ограниченную информацию о реальной платежной дисциплине. Для достижения AUC > 0.90 в индустрии используются поведенческие данные: история транзакций, скорость погашения предыдущих займов, данные из бюро кредитных историй и другие.
  • Природа Gradient Boosting / Random Forest: Ансамбли деревьев уже выжимают максимум нелинейных взаимодействий из таблицы. Они автоматически находят оптимальные пороги и комбинации признаков. Попытка усложнить архитектуру (добавить слои нейросети или увеличить глубину деревьев) приведет не к росту качества, а к переобучению на шуме.
  • Шум в финансовых данных: Два человека с одинаковым доходом, возрастом и долговой нагрузкой могут повести себя по-разному из-за внешних факторов (потеря работы, болезнь, изменение макроэкономики), которые в данных отсутствуют. К этим выбросам очень чувствительны некоторые модели (например, KNN) Мой скор 0,86 является хорошим результатом для этой задачи.

План интеграции с веб-сервисом

  • Сериализация и подготовка артефактов модели (сохранение обученную модель и все объекты предобработки в едином формате, размещение артефактов в отдельной директории проекта, исключение их из системы контроля версий (добавьте в .gitignore)
  • Организация структуры проекта (разделение кода на пакеты для загрузки модели, бизнес-логики, маршрутизации, валидации и конфигурации, настройка управления зависимостями и виртуальное окружение.
  • Инициализация веб-приложения
  • Загрузка модели и пайплайна при старте сервера (загрузка модели и объектов предобработки один раз при инициализации приложения, а не при каждом запросе. Реализация проверку целостности артефактов при старте. В асинхронных фреймворках (FastAPI) используйте lifespan-события или startup/shutdown хуки; в Flask/Django – инициализацию через middleware или готовящие скрипты.
  • Валидация входных данных (Определение схемы входного JSON: типы данных, допустимые диапазоны, обязательные и опциональные поля, обработка null)
  • Реализация эндпоинта предсказания (Создание маршрута, который принимает JSON, вызывает валидацию, применяет предобработку и выполняет инференс. Преобразование сырые данные в формат, ожидаемый моделью (DataFrame или numpy-массив). Возврат структурированного ответа
  • Обработка ошибок и логирование
  • Тестирование
  • Контейнеризация и развертывание (упаковка приложения в docker-образ, автоматизация сборки, развертывания)
  • Мониторинг, версионирование, поддержка