Разбираем вакансию: как упаковать Classic ML проект под банковский скоринг 💳Сегодня берём вакансию с hh и показываю, какой проект можно собрать в резюме, чтобы на собесе было что защищать.
Прошлый такой пост у меня был про агенты в закрытом тгк (вступить можно через заполнение анкеты), а сегодня - классический Data Science в банках: в рисках, скоринге и кредитных моделях до сих пор лежит очень много денег.
Вот вакансия Альфы: Senior Data Scientist в разработку рисковых розничных моделей
Внутри хотят: PD / LGD / EAD, кредитный риск, CatBoost / XGBoost, продовую инфраструктуру и мониторинг моделей.
Под такую вакансию идеально ложится проект: PD-скоринг для потребительского кредита
Суть простая: клиент оставляет заявку на кредит, а модель оценивает вероятность дефолта - вернёт он деньги или уйдёт в просрочку.
На выходе система отдаёт риск-скор:
{
"client_id": 123,
"pd_score": 0.18,
"risk_segment": "medium",
"decision": "manual_review"
}
Дальше банк принимает решение: одобрить заявку, отказать, отправить на ручную проверку или поменять условия кредита - сумму, ставку, срок, лимит.
1. Бизнесовая логика
В банковском DS важно понимать, какую пользу даёт модель бизнесу.: PD-скоринг помогает банку снижать дефолты, сохранять approval rate, уменьшать cost of risk, автоматизировать решения и управлять доходностью кредитного портфеля. Банк покупает специалиста, который понимает, как модель влияет на деньги, риск и продукт 😏
Можно сказать так:
Модель оценивает риск клиента на момент заявки и помогает банку принимать кредитное решение с учётом вероятности дефолта, доходности и риск-политики.
2. Данные и признаки
В проект можно заложить нормальный банковский датасет:
— анкетные данные клиента;
— возраст, регион, семейное положение;
— доход и долговая нагрузка;
— сумма и срок кредита;
— кредитная история;
— прошлые просрочки;
— количество активных кредитов;
— поведение в приложении.
Дальше feature engineering: credit / income, payment / income, число просрочек за последние N месяцев, возраст последнего кредита, количество заявок за период, флаги риска, биннинги по доходу, возрасту и сумме кредита. Самый важный момент: все признаки считаются на момент заявки - без будущего, без утечек, без ситуации, где модель случайно знает то, что в проде ей будет недоступно 👎
3. Модель и валидация
Для такой задачи хорошо подходят бустинги: CatBoost, LightGBM, XGBoost. Сильная история начинается с нормальной схемы оценки:
— time-based split;
— контроль утечек;
— работа с дисбалансом классов;
— Gini / AUC / LogLoss;
— подбор порога под бизнес-цель;
— SHAP / feature importance;
— проверка стабильности на временных срезах.
Можно обучать модель на заявках за прошлый период, а тестировать на более свежих данных. Так ты показываешь, что модель будет работать на будущем потоке клиентов.
На собесе можно говорить:
Я строил PD-модель, валидировал её через time-based split, контролировал утечки, подбирал порог под баланс между approval rate и default rate, а качество смотрел через Gini, AUC и бизнес-метрики (рассказать про значение метрик).
4. Прод и мониторинг
Чтобы проект выглядел взрослым, его нужно довести до сервиса:
— FastAPI для скоринга заявки;
— Docker;
— логирование входов и предсказаний;
— версионирование модели;
— мониторинг PSI и drift;
— контроль approval rate / default rate;
— fallback на старую модель;
— регулярное переобучение.
Скелет проекта: заявка → фичи → PD-модель → риск-сегмент → кредитное решение → мониторинг → переобучение
И вот тогда на собесе ты можешь сказать:
Я собрал PD-скоринг для кредитных заявок: подготовил признаки без утечек, обучил бустинг, провалидировал модель по времени, подобрал порог под бизнес-метрики и завернул всё в сервис с мониторингом.
Такой проект можно адаптировать под потребкредиты, кредитки, рассрочки, BNPL, микрозаймы и финтех. Главное: проект в резюме должен быть похож на реальную рабочую задачу
Банк хочет видеть человека, который понимает данные, риск, метрики, модель, прод и бизнесовый смысл решения.
Ставьте огни, если делать ещё разборы проектов под вакансии 🔥
