Привет, Хабр!
Современные банки накапливают и агрегируют данные о пользователях и своем взаимодействии с ними. Это помогает им лучше понимать потребности отдельного клиента и его склонность к открытию того или иного банковского продукта. А с помощью современных технологий коммуникации банк может провзаимодействовать с каждым клиентом точечно, направив ему персональное предложение. Как машинное обучение помогает решать такие задачи, поговорим в данной статье.
Введение
Растущее количество и сложность кредитных продуктов приводят к необходимости решать сложную задачу оптимального выбора между большим количеством предложений (и для банка, и для клиента!). Появляется необходимость в более тонких настройках, которые бы, с одной стороны, помогли максимально заработать банку при контролируемом уровне клиентской задолженности, с другой — дали клиенту положительный опыт выбора.
Чтобы добиться этого и сконструировать максимально подходящее для клиента предложение, нужен переход от так называемой предиктивной аналитики к предписательной. Другими словами, вместо прогноза одной ключевой величины, конверсии или вероятности дефолта, нужно настроить эффективную работу целого каскада прогнозов.
Для DS на практике это, как правило, задачи оптимизации. Верхнеуровнево для постановки задачи оптимизации необходимо задать следующие сущности:
KPI или бизнес-метрика продукта, которую нужно максимизировать или минимизировать при осуществлении выбора. Такой метрикой может быть NPV или доходность.
Ограничения, которые должны учитываться при принятии решения. Например, основная метрика — рост выручки, но накладывается ограничение на предельно допустимый уровень дефолта или задолженности.
-
Управляемые параметры или неопределенность. Это как раз то, что влияет на ключевую метрику, и то, что мы крутим для осуществления финального выбора.
Для выдачи кредита такими параметрами могут быть конверсия и ее зависимость от атрибутов кредитного предложения (например, процентная ставка, лимит, срок и прочее), так называемая «эластичность». Именно эти параметры мы моделируем и оркестрируем для расчета основного KPI.
В зависимости от потребности бизнеса и механики продукта, для решения задачи NBA/NBO мы можем выбрать разные оптимизационные фреймворки.
Далее, на примере решения конкретных индустриальных задач, мы разберем разные подходы и обсудим тонкости их настройки для кредитных продуктов.
Постановка задачи
Механика офферинга: банк зарабатывает на проценте от выдач кредитов и на стоимости обслуживания карт. Этими параметрами он может управлять.
KPI по продукту может быть различным, но часто включает в себя компоненты, на которые влияют регулируемые банком параметры, например:
При снижении стоимости обслуживания растет конверсия (вероятность покупки), но может упасть выручка.
При повышении стоимости снижается конверсия, зато выручка растет.
Отсюда следует, что управлять стоимостью продукта можно, основываясь как на размере убытка, так и на склонности клиента к покупке. Для этого используем два фреймворка: VBP и RBP.
В VBP (Value Based Pricing) цена на продукт формируется, исходя из его ценности для покупателя. Неопределенность для VBP — это склонность клиента к кредитному предложению.
В RBP (Risk Based Pricing) цена на продукт определяется, исходя из размера потенциального убытка в случае дефолта клиента. Соответственно, неопределенность для RBP — это размер ожидаемых потерь для того или иного предложения.
Далее подробно разберем первый фреймворк. Покажем, как с помощью обученной модели рассчитать влияние стоимости продукта на готовность клиента его приобрести.
Подбор стоимости годового обслуживания (ГО) банковской карты с помощью VBP фреймворка
Часто KPI — это совокупность доходности и количества продаж. В таком случае нужно максимизировать продажи и, в то же время, учесть ограничение на снижение доходности.
Логично предположить: чем больше клиентов получат скидку на обслуживание карты, тем больше покупок они сделают. Однако не стоит забывать, что у разных клиентов разная склонность к дефолту. Поэтому если банк выдает стандартное предложение для всех, то условия для менее склонных к дефолту потенциально ухудшаются. Это связано с тем, что в предложение дополнительно закладывается премия за риск (подробнее про структуру стоимости см. в статье ML и DS оттенки кредитного риск-менеджмента).
В противном случае нужно отсекать дополнительно клиентов по PD (прогноз вероятности дефолта) скору. Альтернативным способом может быть отсечка по прибыльности, учитывающая и конверсию, и ожидаемые потери по клиенту. Тогда мы получаем win-win ситуацию, когда банк может сформулировать предложение для большего числа клиентов за счет привлечения более рискованных и «эластичных» клиентов — тех, кому можно заложить дополнительную премию за риск, зная, что это не повлияет драматическим образом на привлекательность предложения для клиента.
Однако сначала важно научиться прогнозировать, насколько вообще тот или иной клиент склонен взять карту при разных стоимостях обслуживания.
Для этого построим две гипотезы. Сначала рассмотрим ситуации, когда размер ГО влияет на покупку банковской карты, затем — когда стоимость обслуживания не принципиальна и не является важным критерием при выборе кредитной карты.
Чтобы подтвердить первую гипотезу, можно провести A/B тест. Для этого нужно:
разбить клиентов случайным образом на группы;
предложить разным группам различные стоимости обслуживания карт;
сравнить отклики на карты в этих группах.
Для простоты предположим, что мы можем предложить клиентам одну из двух стоимостей обслуживания карты. Вот как это будет выглядеть:
Стоимость обслуживания, руб./год |
Отклик, % |
Если с уменьшением стоимости отклик растет (и ) и различия откликов в группах статистически значимы, делаем вывод, что стоимость продукта влияет на готовность клиента приобрести данный продукт.
Теперь проверим вторую гипотезу. Ее суть в том, что есть определенное множество клиентов, для которых стоимость обслуживания кредитной карты не принципиальна. Такие ситуации возможны, когда срочно нужны деньги на крупную покупку. Наша задача — найти таких клиентов.
Для этого построим модель бинарной классификации, где в качестве прогнозируемой переменной выступит отклик на продукт. При этом вероятность отклика для каждого клиента будет прогнозироваться при определенной стоимости ГО для карты.
Признаки клиента |
Стоимость ГО карты, руб. |
Вероятность отклика |
|
Клиент 1 |
... |
0.05 |
|
Клиент 1 |
... |
0.03 |
|
Клиент 2 |
... |
0.15 |
|
Клиент 2 |
... |
0.13 |
В обучающую выборку отберем клиентов, участвовавших в A/B тесте (помните, мы использовали его для проверки первой гипотезы (табл. 1)). При этом в качестве признаков для обучения модели будем использовать векторы следующего вида:
где
N-мерный вектор [Customer] — признаковое описание клиента в момент проведения A/B теста, которое может включать в себя различные агрегаты по его транзакциям, данным из БКИ и мобильного приложения банка, социально-демографические показатели (пол, возраст) и так далее;
а Service Price — стоимость обслуживания карты, которую предложили данному клиенту при проведении A/B теста.
Тогда в качестве целевой переменной будем использовать 0, если клиент не откликнулся на продукт, и 1 — если откликнулся.
Обучив модель, имеем:
Model — обученная модель бинарной классификации;
[Customer] — признаковое описание клиента;
Service Price — одна из возможных стоимостей обслуживания для кредитной карты
Обученную модель можно рассматривать как функцию k+1 переменных, где:
k — количество признаков, описывающих клиента, которые вошли в модель в результате обучения;
+1 признак — это стоимость обслуживания (предполагается, что он имеет достаточно высокую важность и также вошел в модель).
Эта функция возвращает некоторый скор S, который можно трактовать как вероятность того, что конкретный клиент откликнется на продукт с конкретной стоимостью обслуживания (предполагается, что модель откалибрована):
Фиксируя клиента (его признаковое описание) и варьируя значения получаем две вероятности отклика данного клиента на различные продуктовые условия
В соответствии с бизнес-логикой, с падением стоимости обслуживанияскор должен растиЭту информацию можно заложить в модель на этапе обучения для улучшения ее прогнозных характеристик: в библиотеках градиентного бустинга lightgbm и xgboost для этого предусмотрен специальный параметр monotone constraints.
Однако у разных клиентов скорость роста будет разной. Поэтому наша задача — отыскать клиентов, у которых при уменьшении стоимости обслуживания рост скора будет значительным, и предложить им более дешевую карту.
Типы ограничений
Нужно учесть, что у бизнеса могут быть определенные ограничения. Например, ограничение на выдачу дешевых карт или ограничение на ожидаемую доходность. Рассмотрим каждое из них более подробно. А также разберем несколько подходов настройки для кредитно-платежных продуктов.
Ограничение банка на выдачу дешевых карт
Допустим, у банка есть ограничение K на количество выдач карт с самой низкой стоимостью обслуживанияДля простоты предположим, что нужно для всех доступных клиентов M подобрать одну из двух стоимостей обслуживанияили
Для каждого j-го клиента имеем два скораи
Есть несколько подходов для решения данной задачи.
Подход 1
Разобьем клиентов на бакеты по скору и зафиксируем получившиеся границы бакетов. Затем посмотрим, в границы какого бакета попадает скор Исходя из этого, определим для каждого клиента. Т.к. то
Анализируя, как меняется номер бакетау клиентов, экспертно принимаем решение, кому из них предложить более дешевую карту. Например, при росте бакета на 2 и более назначаем клиентам стоимость обслуживания спускаясь с верхних бакетов в нижние, пока не превысим K.
Подход 2
Более простой подход заключается в том, чтобы отсортировать клиентов по дельте скора а затем для топ P % клиентов выбрать более дешевую стоимость где P подбирается в соответствии с ограничениями бизнеса Другими словами, подобрать более дешевую карту тем клиентам, у которых при снижении стоимости обслуживания сильнее всего растет скор.
Подход 3
Суть данного подход состоит в том, чтобы напрямую максимизировать отклик при ограничениях на количество выдач карт со стоимостью решая задачу оптимизации вида:
Подход 4
Задача этого подхода — максимизировать ожидаемую доходность. Предположим, что для каждого j-го клиента и i-го продуктового условия нам известна доходность картызначения которой получаем с помощью прогнозных моделей или оцениваем каким-то другим способом. При выборе карты с более низкой стоимостью обслуживания скор клиента растетно одновременно с этим падает доходность картыДля каждого клиента можно оценить относительный рост скора и относительное падение доходности при выборе более дешевой карты:
Если у j-го клиентатогда банку выгоднее предложить ему карту со стоимостьютак как рост скора у такого клиента перебивает падение доходности. Так, ожидаемая доходность карты со стоимостьюбудет выше, чем ожидаемая доходность у карты со стоимостью
Тогда при ограничении на количество выдач карт со стоимостью обслуживания можно оптимизировать суммарную доходность, решая задачу оптимизации вида
Ограничение на ожидаемую доходность
Допустим, в качестве ограничений от бизнеса стоит требование гарантии определенного уровня доходности при подборе стоимости обслуживания карт. Тогда для определения стоимости обслуживания конкретного клиента можно попытаться максимизировать отклик при ограничении снизу на доходность.
Где— нижний порог допустимой доходности. В качествеможет выступать оцененная суммарная величина доходности от продажи всех карт в случае, если бы всем клиентам назначалась обычная стоимость годового обслуживания.
Подытожим
Мы разобрали подход VBP применительно к задаче подбора стоимости обслуживания банковской карты. Рассказали, как с его помощью оптимизировать и персонализировать предложение по разным параметрам кредитного продукта и/или каналу коммуникации, что позволяет существенно увеличить охват клиентской базы и прибыль с заявки. А также показали, как эту задачу можно решить с помощью методов машинного обучения и математической оптимизации с учетом различных бизнес ограничений.
Над статьей работали @Lazarev_Adrian, @abv_gbc, @alisaalisa, @vagonoff
P.S. В ближайшую среду 19 января в 17:00 мы соберемся на онлайн семинар, на котором частично обсудим содержание статьи. Следите за информацией в чате или в канале: