Намедни решил я погуглить свою кредитную историю. Для общего развития. Никаких ссылок давать тут не буду, т.к. это не рекламный пост.
Ну и, в общем-то, я с удивлением обнаружил, что мой кредитный рейтинг — 939 баллов из 1000 (это не тот скоринг, который считают банки внутри, а внешний кредитный рейтинг от бюро). А ведь за плечами множество кредитов, кредитных карт, да что там — неоднократные просрочки и вообще Бог весть знает, что я делал за свою «кредитную жизнь». Однако рейтинг оказался вполне сносным.

И я подумал, что настало время достать с пыльной полки мой кредитный ML-проект и показать на примере, как работает кредитный скоринг
(полностью рабочий пайплайн тут: https://github.com/John-Gear/Home-Credit-Default-Risk-Kaggle-)
Что вообще такое кредитный скоринг?
Представь, что к тебе приходит несколько человек и просят деньги:
- ты знаешь, что Маша точно вернет
- Дима — сомнительно, но можно занять
- Миша точно не вернет, т.к. уже занимал деньги у Маши (p.s. Миша, без обид)
Когда заемщиков мало, их можно оценивать на уровне интуиции.
Но что делать, если у банка десятки тысяч или сотни тысяч заемщиков?
И тут подключается Machine Learning
Как это работает в реальности на примере данных клиентов Home Credit
(p.s. все данные обезличены, мы ничьих прав не нарушаем):
Я взял реальный датасет Home Credit (более 300 тыс. клиентов) и на их основе построил модель (алгоритм машинного обучения), которая:
- смотрит на клиента (доход, история, кредиты и т.д. — всего ~169 признаков)
- выдает вероятность дефолта (например: 0.23 = 23% шанс не вернуть)
- затем на основе этой вероятности мы подбираем порог: например, если вероятность дефолта выше 30% — не даем кредит, если ниже — даем
Почему именно дефолта? Потому что нас в первую очередь интересует, вернет ли человек кредит.
В чем ключевая идея?
Короче, ключевая идея — это не про «точность ради точности». Это про итоговые деньги банка.
В кредитном скоринге логика простая:
- если клиент хороший → зарабатываем
- если плохой → теряем тело кредита и недополучаем проценты
И теперь задача — подобрать такой порог (threshold), при котором вероятность переводится в решение «дать / не дать», чтобы итоговая прибыль банка была максимальной.
Проще говоря — это критерий, который переводит нашего «Мишу» в решение: давать кредит или нет.
Как это выглядит на практике
Когда клиентов 300 тысяч и они ежедневно приходят за кредитами — это нужно автоматизировать. За это и отвечает скоринг.
Вот пример из моего проекта.
Модель оценивает риск:
- клиент А → 5% риск дефолта → даем кредит
- клиент Б → 40% риск дефолта → не даем
Но где граница?
Я подобрал оптимальный порог через серию тестов:
- одобряем ~83% клиентов
- находим ~48% дефолтов (recall)
- итог: ≈ 514 млн руб ожидаемой прибыли (выдуманный мною прогноз)
Да, потери есть. Да, ложные одобрения есть.
И да, есть люди, которым отказали, но они на самом деле добросовестные
(например, человек устроился на новую высокооплачиваемую работу и вообще бросил пить/курить/ушел из дома — шутка).
Но в целом это сбалансировано: при таком подходе банк стабильно зарабатывает как на 300 тыс. клиентов, так и на 3 млн. клиентов.
Это уже не модель ради метрик — это бизнес
Если интересно, вот что внутри ML-части:
CatBoost как базовая модель
Тот самый алгоритм, который анализирует поведение 300 тыс. клиентов.
Из коробки работает очень хорошо, спасибо ребятам из Яндекса.
Сравнение с LightGBM
Сравнение эффективности предсказания дефолтов.
CatBoost (Яндекс) vs LightGBM (Microsoft).
K-Fold CV + OOF валидация
Мы разбиваем данные на части, обучаемся на одних и тестируем на других, и так по кругу.
OOF (out-of-fold) — это когда каждая запись хотя бы раз была в тесте, а не в обучении.
Цель — понять, что модели не просто «повезло», а она реально ловит закономерности.
В итоге получаем модель с подобранными гиперпараметрами.
Threshold Tuning
Тут как раз выбирается тот самый порог, который переводит вероятность в финальное решение «дать / не дать»
Самый важный инсайт
Кредитный скоринг — это не про точность модели (как ты это уже понял).
Она может ошибаться в твоем конкретном случае. Например, когда ты после повышения пошел брать кредит на новый гелик и получил отказ — понимаю, больно.

Но при этом она оптимальна в среднем по всем клиентам банка.
Кредитный скоринг — это про бабло банку.
Если мы находим большинство клиентов, которые реально вернут деньги — мы в плюсе.
Даже если есть отдельные ошибки и “Миша” на самом деле порядочный заемщик.
Если совсем упростить
Кредитный скоринг — это модель, которая решает, кому дать деньги, чтобы в конце года банк заработал максимум прибыли.