Как выбрать технологии для рекомендательной системы банка?
В мае 2023 года «Делобанк» (входит в группу «Синара») получил «Золотого Меркурия» за лучшую банковскую программу для малого и среднего предпринимательства. Интернет-банк организации также вошел в топ-3 лучших цифровых платформ для бизнеса в России, по мнению аналитиков Markswebb. Один из важных компонентов продукта — рекомендательная система. Расскажу о нюансах ее разработки.
В 2018 году на базе СКБ-банка (сейчас «Банк Синара») был создан «Делобанк», который специализируется на обслуживании малого и среднего бизнеса. Компания одной из первых в России сфокусировалась на финтех-продуктах для предпринимателей. К 2020 году «Делобанк» работал с десятками тысяч пользователей, в его портфеле было несколько десятков услуг, и клиенты могли просто не знать обо всех возможностях.
Стало очевидно — нужна рекомендательная система, которая подсказывала бы пользователям интернет-банка подходящие им продукты буквально на лету — менее чем за полсекунды, пока клиент не вышел из онлайн-банка. При этом требовалось выдавать максимально точные рекомендации, дабы не снижать лояльность клиентов.
Методика машинного обучения была выбрана стандартная: из данных о пользователях извлекались «признаки», которые описывали их поведение. Далее признаки пользователей соотносили с продуктами, которые они покупали. Оставалось выбрать ИТ-платформу, на которой рекомендательная система будет работать. Но это оказалось непросто.
Этап 1: выбор оптимальной программной платформы
Базовый софт должен работать быстро и при этом не нагружать автоматизированную банковскую систему, от которой зависели основные бизнес-операции. Под эти условия подходят решения in-memory (хранят и обрабатывают данные в оперативной памяти).
В СКБ ЛАБ создали прототипы рекомендательной системы на базе продуктов Oracle, Reddis, Couchbase, MemCached и Tarantool. Проект стартовал в 2020 году, когда зарубежное ПО было доступно без ограничений в распространении и поддержке. Для анализа выбрали пять решений: четыре иностранных и одно российское (Tarantool от VK Tech).
Тесты с прототипом рекомендательной системы показали, что при чтении информации скорость работы продуктов была сопоставимой. Однако при записи Tarantool опережал другие решения. Скорость записи — очень важный параметр, так как информация в рекомендательной системе должна постоянно обновляться. Иначе она может, например, предложить пользователю только что купленный им продукт, а такая реклама вызывает раздражение. Кроме того, российский софт показал стабильную работу — и в результате был выбран для построения рекомендательной системы. Но, как в хорошем детективе, ему еще придется побороться за победу.
Исследование показало, что на ускорение чтения и записи в рекомендательной системе повлияли встроенная способность Tarantool к шардированию. Создается несколько шардов с уникальным набором данных, в каждом шарде признаки копируются в несколько реплик. В результате при чтении все запросы делались только к репликам, а в оригинальную базу изменения вносились только для записи. Сейчас в системе три шарда, в каждом размещено по три реплики с признаками — такого распараллеливания хватает для обеспечения времени отклика рекомендательной системы в 0,5 секунды.
Это позволило использовать менее дорогие серверы. В итоге решение получилось в 1,5-2 раза дешевле, чем на Oracle, у которого высокая стоимость лицензий.
Этап 2: изучение алгоритмов
Рекомендательных систем уже создано множество, многие из них хорошо описаны и даже доступны в виде открытых исходных кодов. Для быстроты подбора предлагаемых услуг было решено использовать в том числе относительно простой и распространенный алгоритм ALS. Он, например, выбирает для пользователя стриминга подходящую музыку на основе его предыдущих предпочтений. Казалось бы, ситуация один в один, бери и пользуйся. Но возникло две сложности.
Во-первых, алгоритм ALS хорошо работает, когда ассортимент рекомендуемых продуктов — тысячи единиц (треков, партнеров и т. п.). Его принцип: если у нового пользователя совпадают предпочтения с кем-то из старожилов сервиса по 95 трекам из 100, то и 101-я прослушанная «ветераном» песня понравится новичку. Но у «Делобанка» несколько десятков сервисов — достаточно ли алгоритму будет сравнения по 20-30 продуктам?
Чтобы понять, эффективен ли в таких условиях ALS-алгоритм, пришлось провести научное исследование. Его результаты легли в основу дипломной работы молодого специалиста СКБ ЛАБ Демьяна Черепанова. Он доказал, что ALS применим в данном решении, и успешно защитил диплом.
Второй сложностью оказались те самые признаки, по которым рекомендательная система прогнозировала предпочтения пользователя. Для большинства клиентов генерировалось порядка тысячи признаков, но у некоторых их создавались миллионы. Казалось бы, чем больше признаков, тем точнее они описывают пользователя и позволяют сделать наиболее интересное предложение. Но неожиданное увеличение информации о клиенте заставляло систему «задуматься», и смысл в ней терялся — пользователь успевал уйти.
Пришлось провести еще одно исследование. Результаты показали, что почти во всех случаях экстраординарное количество признаков было у особых клиентов, которым рекомендации не требуются. А значит, и необходимости в расчетах для них нет.
Этап 3: сравнение решений на базе Oracle и Tarantool
Специалисты по базам данных «Делобанка» попросили разработчиков СКБ ЛАБ еще раз рассмотреть Oracle в качестве хранилища информации для рекомендательной системы. На этот раз применялась версия, которая работала в оперативной памяти. Но Tarantool все равно оказался быстрее. У данного решения Oracle не было эффективного механизма шардирования. Для ускорения рекомендательной системы на Oracle можно проводить вертикальное масштабирование — ставить больше оперативной памяти, более производительные процессоры в серверы. Но терялась гибкость и универсальность вычислительной системы. Кроме того, на каждый новый процессор надо покупать лицензию на Oracle — это порядка $10 000. В общем, на американской СУБД рекомендательная система выходила слишком дорогой.
Рекомендательной системе нужны только свежие данные, а старые признаки нет необходимости хранить в памяти — значит, их надо оперативно удалять. Так постоянно уточняется портрет пользователя, ему выдаются более интересные предложения. Встроенный в Tarantool сервер приложений на языке Lua позволял автоматически удалять старые данные. Аналогичные инструменты в Oracle иногда не справлялись, и приходилось подключать разработчика, расходуя его время и отрывая от других задач.
Итоги проекта и выводы
Создать рекомендательную систему для банка удалось всего за полгода. Причем больше половины этого срока ушло на тесты по выбору софта, на котором она будет построена. Сам процесс разработки, проверки гипотез и выпуска полноценной версии занял менее трех месяцев — совсем немного, учитывая масштабы задачи. Большую роль сыграла помощь сообщества разработчиков на Tarantool, ведь в процессе пришлось осваивать тонкости языка Lua. Но это оказалось проще, чем бороться с родовыми ограничениями другого ПО.
Созданную рекомендательную модель пришлось регулярно дообучать, так как предпочтения пользователей меняются в зависимости от внешних обстоятельств. После достижения высокой доли переходов было решено распространить рекомендательную систему на небанковские услуги и другие каналы. Например, ее использовали выездные менеджеры «Делобанка» — во время общения с клиентом они получали подсказки, какие услуги стоит предложить.
На данный момент эффективность рекомендательной системы — 10% CPA, то есть клиенты кликают в интернет-банке на каждую десятую рекомендацию и подключают новые услуги. Это дает соответствующую прибавку к выручке компании.
Решение достаточно быстро обрабатывает информацию, чтобы «не отвлекать» автоматизированную банковскую систему. Для шардирования исходной базы данных хватило серверов в текущей инфраструктуре.
Сейчас «Делобанк» работает более чем с 200 000 клиентов. Его рекомендательная система обрабатывает до 4000 обращений в секунду и совершает 40 000 записей в свою базу данных за то же время. Система выдерживает текущую нагрузку и в случае необходимости позволяет ее масштабировать без перестроения инфраструктуры.
Таким образом, тщательный анализ современных технологий позволил создать эффективную рекомендательную систему для банка за короткое время и без лишних расходов.
Опубликовано 18.10.2023