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

Существуют разные определения дефолта. Самое распространенное, которое используем и мы — по просрочке на K дней в пределах N месяцев.

Подобное определение дефолта также приводится в соревновании от American Express на Kaggle. В нашем случае N = 12 и K = 90, то есть мы считаем, что клиент ушел в дефолт в случае просрочки на 90 и более дней в пределах 12 месяцев со дня выдачи кредита. Это классическое «длинное» определение дефолта. Для оценки стабильности модели могут использоваться и «короткие» определения, получаемые при варьировании значений N и K.

Задача кредитного скоринга
Задача кредитного скоринга

Для каждого клиента с помощью модели мы предсказываем оценку вероятности его дефолта (далее — предсказание, скор), на основе которой в кредитном конвейере клиенты разделяются на надежных и ненадежных.

Сейчас в Альфа-Банке при построении моделей используется множество различных источников данных. Мы уже несколько лет применяем нейронные сети на последовательных данных для решения задачи кредитного скоринга и построили модели на данных карточных транзакций, транзакций расчетного счета и кредитных историй. Раньше для получения единого нейросетевого скора мы смешивали скоры отдельных моделей с помощью логистической регрессии.

Смешивание моделей с помощью логистической регрессии
Смешивание моделей с помощью логистической регрессии

Моделей становится все больше, и возникает вопрос: почему бы нам не смешивать модели не на уровне скоров, а на некотором более низком уровне?

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

Именно такую задачу мы поставили перед собой.

Смешивание источников с помощью единой нейросетевой модели
Смешивание источников с помощью единой нейросетевой модели

Архитектура модели

Рассмотрим, как может быть реализована наша единая нейросетевая модель. 

End-to-end модель

Начнём с самой очевидной архитектуры. Единая модель может быть реализована end-to-end на нескольких источниках данных, которые подаются в модель в сыром виде.

Схематичное представление end-to-end модели
Схематичное представление end-to-end модели

Такая архитектура позволяет производить тонкую настройку весов для каждого источника данных благодаря взаимодействию между ними.

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

Модель на эмбеддингах

Второй вариант — модель на эмбеддингах последовательностей по клиентам, которые можно получить в результате вывода отдельных моделей на источниках данных. Эти эмбеддинги мы подаем на вход полносвязной сети. 

Схематичное представление модели на эмбеддингах
Схематичное представление модели на эмбеддингах

Может возникнуть вопрос, как именно мы получаем эмбеддинги для такой модели?

Напомним, что наши нейросетевые модели на последовательностях довольно похожи архитектурно. Для каждого клиента мы собираем некоторую последовательность объектов — например, транзакции или кредитную историю, затем применяем к этой последовательности рекуррентный слой и получаем некоторый вектор, который после прохождения через полносвязные слои преобразуется в модельное предсказание. Вектор, формируемый моделью в последних полносвязных слоях, и является в данном случае эмбеддингом клиента по последовательности.

Формирование эмбеддинга в нейросетевой модели
Формирование эмбеддинга в нейросетевой модели

Вернемся к архитектуре модели на эмбеддингах.

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

Сложность заключается в том, что нам необходимо поддерживать комплекс моделей вместо одной end-to-end модели.

При таком сравнении мы остановились на подходе с использованием модели на эмбеддингах. Для примера вспомним из наших предыдущих статей, как мы обрабатывали признаки для моделей: мы ставили их значениям в соответствие некоторые эмбеддинги, которые обучаются вместе с остальными весами в модели для решения конкретной задачи. Эмбеддинг содержит гораздо больше информации, чем одно число, и при достаточном количестве данных такой подход позволяет обучить модель более качественно. Этот факт неоднократно подтверждался нами при разработке собственных моделей.

Для закрепления рассмотрим простой пример из жизни. Представьте, что нам нужно принять решение о покупке автомобиля. Для этого мы обращаемся к своим друзьям, опытным автомобилистам, за советом. Взаимодействие может строиться так: можно спросить, рекомендуют ли друзья автомобиль, и принять на основе этих ответов решение. Но можно также попросить их объяснить свое мнение с опорой, например, на характеристики автомобиля и личный опыт, и уже на основе этой информации самостоятельно решить, покупать автомобиль или нет. 

Визуализация примера с покупкой автомобиля
Визуализация примера с покупкой автомобиля

Второй вариант даёт нам гораздо больше информации и даже может привести к принятию противоположного решения. Также и с эмбеддингами по клиенту - они более информативны для нас, чем скалярные предсказания моделей.

Описание архитектуры модели на эмбеддингах

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

  1. В качестве входных данных модель принимает эмбеддинги последовательностей каждого источника данных (карточные транзакции, транзакции расчетного счета, данные БКИ и т. д.) по клиенту. Эмбеддинги берутся с последних слоев при инференсе уже обученных моделей на источниках данных. Источников может быть любое количество.

  2. В случае, если для клиента не существует эмбеддинга по одному из источников данных, модель принимает на вход соответствующий источнику данных усредненный константный эмбеддинг. Это позволяет сформировать предсказание для всех активных клиентов.

  3. Эмбеддинг каждого источника данных поступает на вход многослойного персептрона (MLP), после чего их выходы конкатенируются для получения обобщенного векторного представления клиента. Получившийся эмбеддинг подается на вход MLP-слоя классификации для формирования итогового предсказания.

  4. Также предусматривается возможность добавления табличных данных, кодируемых с помощью подхода Entity Embeddings. Смысл подхода в том, что каждому табличному признаку ставится в соответствие некоторый эмбеддинг, обучающийся вместе с остальными весами модели. Эмбеддинги признаков конкатенируются, и в итоге мы получаем единый эмбеддинг табличных данных, который также можно использовать в нашей модели.

Схематичное представление архитектуры модели на эмбеддингах последовательностей представлено ниже.

Архитектура модели на эмбеддингах последовательностей
Архитектура модели на эмбеддингах последовательностей

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

Результаты

Перейдём к обсуждению результатов, которые мы получили с использованием нашей единой нейросетевой модели. Сравнение будем производить с работающей сейчас в продакшене моделью, в которой смешиваются скоры отдельных нейросетевых моделей и скор модели на табличных данных с помощью логистической регрессии.

Текущая модель в продакшене
Текущая модель в продакшене

Эффект от новой модели рассчитывается как прирост (или аплифт) целевой метрики относительно значения при использовании текущей модели.

Мы, как разработчики модели, не принимаем решение о том, выдавать клиенту кредит или нет, поэтому при оценке модели кредитного скоринга мы используем не precision, recall или F-меру, а такую метрику, как Джини — она показывает нам, насколько хорошо модель ранжирует клиентов с точки зрения определения дефолта. Эта метрика линейно связана со всем известной метрикой ROC AUC и выражается по формуле: 

100% * (2 * ROC AUC - 1)

Увеличение значения метрики Джини позволяет банку выдавать большее количество кредитов при неизменном уровне риска. Повышение количества выдач напрямую влияет на увеличение прибыли, благодаря чему при расчете финансового эффекта от модели, каждый пункт Джини конвертируется в деньги. В зависимости от размера банка, эффект от одного дополнительного пункта Джини может оцениваться десятками, сотнями или миллиардами рублей дополнительной прибыли.

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

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

При обсуждении архитектуры единой модели мы отметили, что в неё можно добавлять сколько угодно новых источников последовательных данных, а также табличные данные. Мы добавили новые источники – последовательности чековых данных, а также табличные признаки социального окружения. Такая конфигурация за счет новых данных позволяет получить аплифт +2.6 пунктов Джини

Мы также можем добавить признаки модели кредитного скоринга на табличных данных — в этом случае аплифт составляет +3.2 пункта Джини

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

Новый подход с использованием единой модели
Новый подход с использованием единой модели

Заключение

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

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

Этот подход также может быть переиспользован в других банковских задачах, например, при определении склонности к различным продуктам. Таких задач у банка очень много, и мы продолжим внедрять нейросетевые модели в различные банковские процессы.

О своих результатах и не только мы будем продолжать рассказывать в этом блоге, а также в наших Telegram-каналах Нескучный Data Science и Alfa Advanced Analytics. Подписывайтесь на нас и до новых встреч!


А ещё приглашаем вас посмотреть наши новые видео в треке Deep Learning in Finance и ознакомиться с нашим новым треком NLP in Practice.

Рекомендуем почитать:

Также подписывайтесь на Телеграм-канал Alfa Digital — там мы постим новости, опросы, видео с митапов, краткие выжимки из статей, иногда шутим.

Комментарии (7)


  1. ermouth
    19.07.2023 09:05
    +1

    Архитектура модели на эмбеддингах последовательностей (рисунок)

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

    Если всех клиентов с неполными данными сгруппировать по признакам отсутствия данных для конкретного эмбеддинга (или сразу нескольких), получится выделить 1–2–3 самых крупных группы.

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

    У меня такое ощущение, что так можно ещё немножко выжать из идеи, за счёт более точного предсказания по самым крупным группам клиентов с неполными данными.

    Что скажете?


    1. nickimpark Автор
      19.07.2023 09:05
      +1

      Идея с заменой пропуска на усредненный эмбеддинг на самом деле похожа на то, как мы заполняли пропуски скоров раньше, когда смешивали их логистической регрессией: в том случае мы заполняли пропуски нулями, после чего при обучении логрега добавляли признак пропуска, который равен 1, когда есть пропуск, и 0 в противном случае. Так модель сама подбирала константное значение, которым заполнить пропуск. Такая схема в ретроспективе себя достаточно хорошо показала при инференсе на потоке. 

      Что касается Вашей идеи: ранее в задаче кредитного скоринга мы действительно обучали несколько моделей под разные сегменты (но не по критерию наличия/отсутствия данных из источника по клиенту), но мы такую схему больше не применяем, так как обучение одной модели на всех сегментах позволило получить более высокое качество за счет объема данных. Использование дополнительных отдельных моделей в зависимости от наличия данных из источника по клиенту может сильно усложнить схему инференса, потребует дополнительных ресурсов и не факт, что даст прирост в качестве (по аналогии с примером выше). Но, в любом случае, идея интересная, и мы попробуем с этим поэкспериментировать.


  1. Ka_Wabanga
    19.07.2023 09:05
    +1

    И там и там есть свои плюсы и минусы (что очевидно)), но приятно видеть реальное развитие МЛ и "продакшен" МЛ).

    Я бы с радостью почитал, как вы решали проблему жесткого "оверфитинга" "стеккинга" прошлого решения.

    А по новому решению я бы с такой же радостью почитал про контроль качества данных, трансформации , "фичер стор" итд.


    1. Ka_Wabanga
      19.07.2023 09:05
      +1

      Наверно стоит пояснить немного:
      При первом подходе проблема контроля данных никуда не исчезает, но можно теоретически проигнорировать контроль входных данных и смотреть распределения предсказаний индивидуальных моделей. Если что-то "поехало" можно просто убрать модель из "стекинга" линейной модели и продолжать выдавать "скоринги".

      В случае нового варианта единой модели, уже не получится так легко манипулировать "ансамблем" и нужно будет уделять гораздо больше внимания тому, что подается на вход модели. И понятное дело, что у вас были "мониторинги" и до перехода на новую схему, но интересно посмотреть и почитать какая степень контроля данных считается вами достаточной и как это организовано (стек/инструменты/итд).



      1. nickimpark Автор
        19.07.2023 09:05
        +1

        Сейчас у нас настроен мониторинг отдельных моделей на источниках - при каждом продовом инференсе мы контролируем, не «поехали» ли данные относительно зафиксированного бейзлайна, рассчитывая PSI - в данный момент мы доверяем такому подходу. В дальнейшем мы планируем добавить мониторинг эмбеддингов как входов единой модели (например, оценивать embedding drift). 

        Если что-то сильно «поехало», мы можем переобучить и перевнедрить такую модель, здесь проблем быть не должно. Сейчас это новый для нас подход, мы обязательно придем к отлаженной и устойчивой схеме контроля качества данных для него.


  1. MyWave
    19.07.2023 09:05

    Спасибо за статью. Сколько с такой архитектурой выигрывается у обычного бустинга деревьев?


  1. henry786
    19.07.2023 09:05

    For students who have a lot of ventures to take care of, attending multiple classes and taking various coursework like homework, assignment, dissertation etc becomes an impossible task. So, what are the way out to balance social life and GPA score throughout? Here you can even hire professional writers from <a href="http://expertessays.co.uk/">do my assignment</a>to ease your task. When you hire experts to write your task, you get high-quality and error-free work that increases your score.