В Альфа-Банке естественным образом накапливаются разнообразные последовательные данные: истории транзакций клиентов, кредитные истории, истории коммуникаций. Одно из двух направлений Лаборатории машинного обучения Альфа-Банка занимается построением нейросетевых моделей на таких данных для решения разных задач. Одна из них — задача кредитного скоринга. Любой прирост в качестве скоринга платежеспособности клиентов на входе может быстро принести большой прирост в прибыли на выходе за счет увеличения числа выдач при неизменном риске. 

Мы уже рассказывали о построении моделей на последовательностях карточных транзакций и транзакций расчетного счета для решения задачи кредитного скоринга. В обоих случаях вместо классических подходов – логистической регрессии и градиентного бустинга – использовались настоящие «черные ящики»: рекуррентные нейронные сети. Теперь же мы хотим рассказать о применении этого неклассического подхода на другом источнике данных – кредитных историях.

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

Длинная вводная

В Банке естественным образом накапливаются разнообразные последовательные данные: истории транзакций клиентов, кредитные истории, истории коммуникаций. Одно из двух направлений Лаборатории машинного обучения Альфа-Банка занимается построением нейросетевых моделей на таких данных для решения разных задач, в которых заинтересован банк. 

Первой задачей, которую Лаборатория начала решать с помощью рекуррентных нейронок на последовательных данных, стала задача кредитного скоринга. Такая честь этой задаче выпала совершенно не случайно. Кредитный скоринг – очень «аппетитная» задача для банка. 

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

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

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

  • как звучала постановка задачи;

  • какие использовались данные;

  • какие применяли модели;

  • с какими сложностями столкнулись;

  • как с блеском с ними справились.

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

Примечание: об этом и многом другом мы рассказываем в треке Deep Learning in Finance на ods.ai.

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

Кредитный скоринг – классическая банковская задача, которую решают много десятков лет. Её суть проста: перед тем, как выдать незнакомому человеку большую сумму денег, банк хочет оценить свои риски. Риск для банка формализуется с помощью понятия дефолта.

Определения дефолта бывают разные, но общая суть такова: после выдачи клиенту кредитного продукта банк в течение N месяцев наблюдает, как клиент платит по этому кредиту. Если в течение непрерывного промежутка в K дней клиент не внес обязательный платеж, то считается, что он «ушел в дефолт». Варьирование значений для N и K порождает большой набор определений дефолта. В нашем случае это просрочка на 90 и больше дней в течение 12 месяцев со дня выдачи кредитного продукта.

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

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

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

Подход к решению задачи кредитного скоринга с помощью градиентного бустинга
Подход к решению задачи кредитного скоринга с помощью градиентного бустинга

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

  • много времени для проверки большого числа гипотез и построения широкого набора признаков;

  • глубокое понимание доменной области, чтобы построенные признаки были осмысленными и информативными.

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

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

Подход к решению задачи кредитного скоринга с помощью рекуррентных нейронных сетей
Подход к решению задачи кредитного скоринга с помощью рекуррентных нейронных сетей

Особенности формирования выборки

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

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

Но как бы не так.

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

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

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

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

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

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

Перед нами стоит проблема: как обучить одну модель на двух сегментах данных? Безудержная фантазия сразу подсказывает как минимум 3 варианта. Разберем каждый из них.

Подход #1. Учим всё вместе, не обращая внимания на сегмент.

  • Плюсы: это очень просто.

  • Минусы: из-за того, что выборка челленджера в десятки раз меньше, этот подход практически не будет её учитывать, хотя ее распределение наиболее приближенно к реальному.

Подход #2: Учим модель на внутренних данных, а потом дообучаем на челленджере.

  • Плюсы: качество лучше, чем в первом подходе.

  • Минусы: это очень долго и не всегда работает – как ускорить?

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

  • Плюсы: это очень просто, а результат гарантированно лучше, чем в первом подходе.

  • Минусы: иногда результат немного хуже, чем дообучение.

При построении наших моделей мы предпочитаем третий подход как баланс качества и простоты. 

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

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

Обучение: собираем данные на дату заявки. Инференс: собираем данные на текущую дату
Обучение: собираем данные на дату заявки. Инференс: собираем данные на текущую дату

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

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

Однако, для тестирования модели можно брать и более «короткие» определения дефолта: просрочки на 30–60 дней в течение 4–6 месяцев со дня одобрения кредита.

Данные кредитных историй

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

Очевидно, что кредитная история клиента несёт в себе много информации о способности клиента платить по своим кредитным обязательствам. Внутри банка естественным образом накапливаются исторические данные по кредитам, выданным самим банком. Как правило, с учетом кредитных отчетов из бюро кредитная история находится для 90% клиентов, обращающихся за кредитом.

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

С другой стороны, кредитную историю для нового клиента банк всегда может купить в бюро кредитных историй. В России существует несколько таких бюро, крупнейшие из которых: Объединенное кредитное бюро (ОКБ), Национальное бюро кредитных историй (НБКИ) и Эквифакс.

Кредитная история заявителя (как в общем-то и транзакционная) — это фактически многомерный временной ряд. Каждый элемент ряда — это прошлый кредит заемщика, который описывается набором вещественных и категориальных признаков. Набор признаков может меняться, в зависимости от организации, в которой накапливаются данные кредитных историй.

Чаще всего встречаются такие признаки:

  • сумма кредита;

  • валюта;

  • срок кредита;

  • процентная ставка;

  • сумма ежемесячного платежа;

  • статус кредита: активен, закрыт, просрочен;

  • тип кредита: автокредит, ипотека, кредитная карта;

  • тип отношения к кредиту: заемщик, поручитель, юридическое лицо;

  • число просрочек на N дней.

В этом году в рамках Соревнования на данных кредитных историй, мы опубликовали датасет с кредитными историями банковских клиентов (разумеется, тщательно их анонимизировав перед публикацией). По этим данным можно посмотреть разные интересные статистики. Например, на графике ниже можно увидеть распределение длин кредитных историй.

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

Модель на данных кредитных историй

Общий подход к построению модели на данных кредитных историй существенно не отличается от случая моделей на транзакциях. 

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

  • Затем для каждого категориального признака получаем векторное представление — эмбеддинг.

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

  • Дальше последовательность кредитных эмбеддингов идёт на вход рекуррентному слою.

  • На выходе получаем некоторое закодированное векторное представление кредитной истории клиента.

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

Архитектура модели на данных кредитных историй
Архитектура модели на данных кредитных историй

Чтобы рассказ о модели на данных КИ не превратился в перечисление того, что использовалось в моделях на транзакциях, отметим, какие новые «фишки» хорошо показали себя в данной модели.

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

Sample Weight. Поскольку применение модели лежит на временной шкале правее разработки, полезным приемом оказалось взвешивание объектов выборки, в зависимости от даты открытия кредита. Чем ближе к текущей дате дата открытия кредита из выборки — тем больший вес ошибки на данном кредите.

Learning Rate Scheduler. В прошлых статьях мы уже рассказывали о применении стратегии Cyclical Learning Rate для выбора длины шага градиентного спуска на каждой эпохе. При обучении модели на данных КИ лучшей стратегией оказался подход One Cycle — некоторое развитие стратегии Cyclical Learning Rate.

  • В этом случае learning rate в течение заданного числа эпох увеличивается.

  • Затем оставшиеся эпохи непрерывно уменьшается.

  • На последних эпохах learning rate выбирается на несколько порядков ниже, чем первоначальный.

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

Результаты

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

В продакшне эти модели работают вместе путем простого смешивания с помощью логистической регрессии.

Смешивание различных моделей кредитного скоринга
Смешивание различных моделей кредитного скоринга

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

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

В подтверждение слов выше о релевантности данных кредитных историй решаемой задачи, отметим, что:

Модель на данных БКИ демонстрирует высокое самостоятельное качество: не уступает модели на табличных данных на выборке выдач и при этом показывает качество на 3 пункта Джини выше на выборке челленджера.

Длинное заключение: планы и новые вызовы

Обычно, когда мы рассказываем о наших моделях, человек со стороны искренне удивляется, что в банке для решения задачи кредитного скоринга используется не логистическая регрессия, и даже не градиентный бустинг, а настоящие «черные ящики» – тяжелые нейронные сети

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

  • сначала разработали модель на карточных транзакциях;

  • затем появилась модель на транзакциях расчетного счета;

  • и совсем недавно мы внедрили модель на данных кредитных историй.

Логичное продолжение этого движения — построение единой модели на всех трёх доменах данных. 

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

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

Общая модель на последовательных данных из разных доменов
Общая модель на последовательных данных из разных доменов

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

Всё это мы планируем опробовать в ближайшее время, а о своих успехах и неуспехах (но надеемся, что больше все-таки об успехах) будем продолжать делиться здесь, а также в нашем Телеграмм-канале «Нескучный Data Science». Подписывайтесь на нас и до новых встреч!


А ещё приходите на Data Science Meet Up #2 11 августа. Митап будет в стиле киберпанк, а программе доклады об LTV, Uplift, совершенство и Reject/Inference. Подробное описание программы.

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

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


  1. akhkmed
    02.08.2022 10:05
    +2

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


    1. Plesser
      02.08.2022 14:01
      +4

      Это не так.

      Контролирующий орган требует что бы резервы банка рассчитывались по методике этого самого органа, либо банк мог защитить свой алгоритм и тогда он сможет рассчитывать свои резервы уже по своей методике (вроде как только ЮниКредит смог пройти эту процедуру).

      В тоже время банк самостоятельно решает при какой вероятности дефолта он готов выдать кредит потенциальному заемщику или не готов.


  1. alexhott
    02.08.2022 16:09
    -2

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


    1. Plesser
      02.08.2022 22:06
      +2

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


    1. SmirnovValeriy Автор
      03.08.2022 21:46
      +2

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

      Во-первых, они показывают более высокое качество. 

      В статье вы наверняка прочитали, что у нас в банке помимо нейросетей на последовательных данных строится и модель градиентного бустинга. Эта модель работает на табличных данных – огромном наборе признаков, которые датасайентист как раз «вручную» генерирует, в том числе агрегируя последовательные данные. Наши же нейросетевые модели работают с этими данными «as is», что позволяет не терять информацию при агрегировании. И, как показывают эксперименты, три нейросетевые модели: на данных кредитных историй, на карточных транзакциях и на транзакциях расчетного счета (про каждую из них, кстати, мы также публиковали статью) показывают более высокое совместное качество на тестовой выборке, чем бустинг, построенный на агрегациях от этих (и других) данных. Как справедливо отметил комментатор выше, в один момент оказывается сложно экспертно оценить, как огромные последовательности событий (тысячи транзакций, десятки прошлых кредитов) влияют на целевую переменную. Поэтому в дело вступают «черные ящики».

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

      Ну, а во-вторых, скорость разработки модели выше.

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

      Надеюсь, я смог аргументированно ответить на Ваш комментарий.


  1. ivkireev
    04.08.2022 09:07

    На схеме показано, что финальные скрытые состония берутся с каждого кредита. Тогда чем это отличается от просто скрытых состояний? В случае GRU, на каждый шаг есть только одно скрытое состояние.


  1. Gor40
    04.08.2022 11:32
    -2

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

    Истории коммуникаций изучите внимательнее. Просил не звонить, угрожал, матерился. Не нужны вам коммуникации оказывается.


  1. vyacheslav_s
    04.08.2022 17:19

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