Кредитный скоринг - известная и давно решаемая банковская задача, суть которой заключается в оценке рисков банка при выдаче кредита. Для формализации риска в банке используется понятие дефолта.  Существуют разные определения дефолта. Самое распространенное, которое используем и мы — по просрочке на K дней в пределах N месяцев.  Подобное определение дефолта также приводится в соревновании от American Express на Kaggle. В нашем случае N = 12 и K = 90, то есть мы считаем, что клиент ушел в дефолт в случае просрочки на 90 и более дней в пределах 12 месяцев со дня выдачи кредита. Это классическое «длинное» определение дефолта. Для оценки стабильности модели могут использоваться и «короткие» определения, получаемые при варьировании значений N и K. Для каждого клиента с помощью модели мы предсказываем оценку вероятности его дефолта (далее — предсказание, скор), на основе которой в кредитном конвейере клиенты разделяются на надежных и ненадежных.  Сейчас в Альфа-Банке при построении моделей используется множество различных источников данных. Мы уже несколько лет применяем нейронные сети на последовательных данных для решения задачи кредитного скоринга и построили модели на данных карточных транзакций, транзакций расчетного счета и кредитных историй. Раньше для получения единого нейросетевого скора мы смешивали скоры отдельных моделей с помощью логистической регрессии. Моделей становится все больше, и возникает вопрос: почему бы нам не смешивать модели не на уровне скоров, а на некотором более низком уровне?  Эта идея приводит нас к новому способу смешивания — построению единой нейросетевой модели, работающей со всеми источниками последовательных данных и учитывающей их взаимное влияние друг на друга.  Именно такую задачу мы поставили перед собой. Рассмотрим, как может быть реализована наша единая нейросетевая модель.  Начнём с самой очевидной архитектуры. Единая модель может быть реализована end-to-end на нескольких источниках данных, которые подаются в модель в сыром виде. Такая архитектура позволяет производить тонкую настройку весов для каждого источника данных благодаря взаимодействию между ними.  Однако, на практике мы лишаемся гибкости при тестировании новых подходов обработки отдельных источников данных — обучение end-to-end модели длится очень долго, заметить влияние отдельных улучшений в условиях ограничения времени и ресурсов становится трудно. Второй вариант — модель на эмбеддингах последовательностей по клиентам, которые можно получить в результате вывода отдельных моделей на источниках данных. Эти эмбеддинги мы подаем на вход полносвязной сети.  Может возникнуть вопрос, как именно мы получаем эмбеддинги для такой модели? Напомним, что наши нейросетевые модели на последовательностях довольно похожи архитектурно. Для каждого клиента мы собираем некоторую последовательность объектов — например, транзакции или кредитную историю, затем применяем к этой последовательности рекуррентный слой и получаем некоторый вектор, который после прохождения через полносвязные слои преобразуется в модельное предсказание. Вектор, формируемый моделью в последних полносвязных слоях, и является в данном случае эмбеддингом клиента по последовательности. Вернемся к архитектуре модели на эмбеддингах.  Такая модель довольно быстро обучается за счёт архитектурной простоты и отсутствия рекуррентных слоев, также такой подход позволяет ускорить разработку общего решения благодаря параллелизации процесса улучшения отдельных моделей на источниках. К тому же, все используемые модели уже в продакшене, что также ускоряет разработку.  Сложность заключается в том, что нам необходимо поддерживать комплекс моделей вместо одной end-to-end модели. При таком сравнении мы остановились на подходе с использованием модели на эмбеддингах. Для примера вспомним из наших предыдущих статей, как мы обрабатывали признаки для моделей: мы ставили их значениям в соответствие некоторые эмбеддинги, которые обучаются вместе с остальными весами в модели для решения конкретной задачи. Эмбеддинг содержит гораздо больше информации, чем одно число, и при достаточном количестве данных такой подход позволяет обучить модель более качественно. Этот факт неоднократно подтверждался нами при разработке собственных моделей. Для закрепления рассмотрим простой пример из жизни. Представьте, что нам нужно принять решение о покупке автомобиля. Для этого мы обращаемся к своим друзьям, опытным автомобилистам, за советом. Взаимодействие может строиться так: можно спросить, рекомендуют ли друзья автомобиль, и принять на основе этих ответов решение. Но можно также попросить их объяснить свое мнение с опорой, например, на характеристики автомобиля и личный опыт, и уже на основе этой информации самостоятельно решить, покупать автомобиль или нет.  Второй вариант даёт нам гораздо больше информации и даже может привести к принятию противоположного решения. Также и с эмбеддингами по клиенту - они более информативны для нас, чем скалярные предсказания моделей. Перечислим ключевые архитектурные особенности модели на эмбеддингах последовательностей, на которой мы остановились для реализации нашего нового подхода к смешиванию нейронных сетей на различных источниках данных. В качестве входных данных модель принимает эмбеддинги последовательностей каждого источника данных (карточные транзакции, транзакции расчетного счета, данные БКИ и т. д.) по клиенту. Эмбеддинги берутся с последних слоев при инференсе уже обученных моделей на источниках данных. Источников может быть любое количество. В случае, если для клиента не существует эмбеддинга по одному из источников данных, модель принимает на вход соответствующий источнику данных усредненный константный эмбеддинг. Это позволяет сформировать предсказание для всех активных клиентов. Эмбеддинг каждого источника данных поступает на вход многослойного персептрона (MLP), после чего их выходы конкатенируются для получения обобщенного векторного представления клиента. Получившийся эмбеддинг подается на вход MLP-слоя классификации для формирования итогового предсказания. Также предусматривается возможность добавления табличных данных, кодируемых с помощью подхода 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. Рекомендуем почитать: Нейросетевой подход к кредитному скорингу на данных кредитных историй Нейросетевой подход к моделированию транзакций расчетного счета Нейросетевой подход к моделированию карточных транзакций Как и зачем мы начали искать бизнес-инсайты в отзывах клиентов с помощью машинного обучения Как я занял 13 место из 3500+ участников и стал Kaggle Competition Master Как мы заняли первое место в хакатоне ВК «Машинное обучение на графах», где не было графов Как мы участвовали в чемпионате по DS длиной 3,5 месяца Как настраивать аналитику, если у вас Backend Driven UI Также подписывайтесь на Телеграм-канал Alfa Digital — там мы постим новости, опросы, видео с митапов, краткие выжимки из статей, иногда шутим.  Data Scientist