Горячая линия +7 (495) 268-09-63
СКОРИСТА приняла участие в конкурсе Китая по моделированию “2020 Xiamen International Bank Digital Finance Cup Marketing Modeling Contest”. По итогу первого этапа Скориста заняла 126 место (см. Рис. 1). В этой статье мы расскажем подробнее, какая задача стояла перед нашими математиками, и как они подошли к её решению.
Рис. 1
Актуальность и задачи конкурса
С развитием научно-технического прогресса, банки сформировали разнообразные точки соприкосновения с клиентами, для удовлетворения ежедневных потребностей клиентов в совершении операций, транзакций различных каналов и прочего, как оффлайн, так и онлайн. Обслуживая большое количество клиентов, банкам необходимо более всесторонне и точно понимать потребности клиентов. Для доходности бизнеса необходимо исследовать потери клиентов, прогнозировать изменения капитала клиента, заранее/своевременно проводить маркетинг, снижать потери банковских средств.
Конкурс предоставил фактический бизнес-сценарий поведения клиентов и информацию об активах в качестве объекта моделирования. Перед конкурсантами на начальном этапе стояла задача показать способность отбора данных, а участники полуфинала вместе с результатами моделирования должны будут выдвинуть соответствующие маркетинговые решения, полностью отражающие ценность анализа данных.
Данные
1) Общий обзор данных. Данные разделены на два набора данных, x_train.rar, y_train.rar и x_test.rar, где x_train.rar содержит характеристики обучающего набора, а y_train.rar является целевой переменной в обучающей выборке. Обучающий набор состоит из двух выборок данных за 2 квартала. x_test.rar - это характеристики тестового набора, переменные характеристик согласуются с обучающим набором. Цель моделирования состоит в том, чтобы обучить модель в соответствии с обучающим набором и предсказать тестовый набор.
2) Описание таблицы и полей данных. Обучающий набор состоит в основном из выборочных данных за 3-й и 4-й кварталы, а тестовый набор-из выборочных данных за 1-й квартал.
а) aum_m (Y) представляет данные об активах на конец месяца за месяц Y
Поле |
Значение |
cust_no |
Уникальный id пользователя |
X1 |
Баланс структурированного депозита на конец месяца |
X2 |
Остаток срочных депозитов на конец месяца |
X3 |
Остаток на текущем счете на конец месяца |
X4 |
Остаток финансов на конец месяца |
X5 |
Остаток денежных средств на конец месяца |
X6 |
Баланс по управлению активами на конец месяца |
X7 |
Остаток по кредиту на конец месяца |
X8 |
Остаток депозитного сертификата на конец месяца |
b) behavior_m (Y) представляет данные о поведении за месяц Y
Поле |
Значение |
cust_no |
Уникальный id пользователя |
B1 |
Количество входа в мобильный банкинг, онлайн-банкинг за Y-месяц |
B2 |
Количество ежемесячных поступлений за Y-месяц |
B3 |
сумма поступлений за Y-месяц |
B4 |
Количество ежемесячных переводов за Y-месяц |
B5 |
Сумма переводов за Y-месяц |
В6 |
Самое последнее время транзакции только за март, июнь, сентябрь и декабрь |
B7 |
Количество действий по счету за квартал, только за март, июнь, сентябрь и декабрь |
c) big_event_Q (Z) представляет важные исторические данные клиента за квартал Z
Поле |
Значение |
cust_no |
Уникальный id пользователя |
E1 |
Дата открытия счета |
E2 |
Дата открытия счета в онлайн-банке |
E3 |
Дата открытия счета мобильного приложения |
E4 |
Дата первой регистрации интернет-банка |
E5 |
Дата первого входа в мобильное приложение |
E6 |
Дата первого активного бессрочного депозита |
E7 |
Дата начала действия первого срочного вклада |
E8 |
Дата первого кредита |
E9 |
Первый дата просрочки |
E10 |
Дата первой финансовой операции |
E11 |
Дата первого перевода между личным банковским счетом и фондовым счетом компании по ценным бумагам (Bank-Securities Account Transfer) |
E12 |
Дата первого перевода на стойке |
E13 |
Дата первого перевода по интернет-банку |
E14 |
Дата первого перевода по мобильному приложению |
E15 |
Максимальная сумма денег, переведенная на другой банк. |
E16 |
Дата перевода на другой банк максимальной суммы |
E17 |
Максимальная сумма денег, переведенная из другого банка. |
E18 |
Дата перевода из другого банка максимальной суммы |
d) cunkuan_m (Y) представляет данные депозита за Y-й месяц
Поле |
Значение |
cust_no |
Уникальный id пользователя |
C1 |
Сумма продуктов на депозите в текущем месяце |
C2 |
Кол-во продуктов на депозите в текущем месяце |
e) cust_avli _Q (Z) представляет действующих клиентов для квартала Z, только cust_no
f) cust_info_q (Z) представляет информацию о клиенте за квартал Z
Поле |
Значение |
cust_no |
Уникальный id пользователя |
I1 |
Пол |
I2 |
Возраст |
I3 |
Уровень клиента |
I4 |
Метка персонала банка |
I5 |
Описание карьеры |
I6 |
Метка клиента банковского кредита |
I7 |
Количество продуктов банка |
I8 |
Астрологическое описание |
I9 |
Вклад клиента |
I10 |
Описание академической истории |
I11 |
Годовой доход семьи |
I12 |
Описание отрасли |
I13 |
Описание статуса брака |
I14 |
Описание работы |
I15 |
Метка QR-кода клиента из квитанции |
I16 |
Метка vip клиента |
I17 |
Метка клиента интернет-банка |
I18 |
Метка клиента мобильного банкинга |
I19 |
Клиент смс |
I20 |
Метка клиента с оплатой Вичат |
Ранжирование результатов начального этапа определялось на основе значения Каппа тестовой группы.
Описание решения команды СКОРИСТА
Одной из самых главных задач машинного обучения является создание переменных, на основании которых будут обучены модели. Изначально были даны очень разнородные данные: социальные (пол, возраст и т.д.), данные о финансовых аспектах (деньги на счетах, кредиты и т.д.), данные об активности клиентов (даты и количество переводов, других действий). Из более 1000 построенных переменных нами было выбрано около 200 для дальнейшего построения модели.
Задача соревнования не подразумевает точной интерпретации итоговой модели, поэтому использование логистической регрессии было необязательно. Тем не менее, несколько попыток были направлены на проверку логистической регрессии. Итоговая оценка модели, построенной на базе логистической регрессии – около 0.4 Каппа, что является достаточно высоким показателем для моделей, которые применяются в реальных условиях (точность составляет около 0.7). Однако, для соревнования, необходимо было использовать другие методы (см. Рис.2).
№ |
Описание модели |
Каппа |
1 |
Лучшая интерпретируемая модель (на основе логрегрессии) |
0,40 |
2 |
Лучшая одиночная модель градиентного бустинга (на основе CatBoost), без калибровки по классам |
0,42 |
3 |
Лучшая одиночная модель градиентного бустинга (на основе CatBoost), с калибровкой по классам |
0,46 |
4 |
Лучший ансамбль (6 моделей градиентного бустинга), без калибровки по классам |
0,43 |
5 |
Лучший ансамбль (6 моделей градиентного бустинга), с калибровкой по классам |
0,47 |
Рис.2 Оценка наших моделей
Так как данные неоднородны, то были выбраны модели, основанные на градиентном бустинге. Такие модели интерпретируемы только на качественном уровне посредством различных библиотек, типа shap, поэтому не используются в реальных задачах, где нужно строго интерпретировать модели (например, в кредитном скоринге). Итоговая модель была построена следующим образом: вероятности классов построенных 6 моделей на основе разных типов градиентного бустинга (CatBoost, XGBoost, LightGBM) были перемножены и откалиброваны на основе распределения по классам в исходных данных, что дало Каппу 0.47 (см. Рис.2).
Для нашей команды это был новый и полезный опыт анализа и решения нестандартной для нас задачи. Вы также можете скачать данные конкурса и попробовать сами решить данное задание. Желаем успехов!
Дополнительные материалы: