← Back to Articles

Как на самом деле работает кредитный скоринг (на простом примере)

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

Ну и, в общем-то, я с удивлением обнаружил, что мой кредитный рейтинг — 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

Тут как раз выбирается тот самый порог, который переводит вероятность в финальное решение «дать / не дать»


Самый важный инсайт

Кредитный скоринг — это не про точность модели (как ты это уже понял).

Она может ошибаться в твоем конкретном случае. Например, когда ты после повышения пошел брать кредит на новый гелик и получил отказ — понимаю, больно.

тебе только такой гелик

Но при этом она оптимальна в среднем по всем клиентам банка.

Кредитный скоринг — это про бабло банку.

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


Если совсем упростить

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


Ссылочка на код: https://github.com/John-Gear/Home-Credit-Default-Risk-Kaggle-

More articles