Блог компании Сбербанк

Отчёт со Sberbank Data Science Day: решения, победители, интервью

В ноябре Сбербанк провел серию мероприятий по машинному обучению и искусственному интеллекту Sberbank Data Science Journey. Финальное мероприятие, Data Science Day, прошло 12-го ноября на площадке DI Telegraph. Его посетило более 1000 человек.
Data Science Day завершал месячный конкурс, ставший самым крупным по количеству участников и зарегистрировавшихся в СНГ: более 700 человек отправили свои решения, более 3000 зарегистрированных участников работали с данными, а также сгенерировали более 30Гб данных.

Data Science Day открылся видео-приветствием Германа Грефа.

Затем пришедших data scientists со сцены поприветствовал Заместитель Председателя Правления Сбербанка Вадим Кулик.
Вадим Кулик рассказал об основных принципах data-driven организаций, требованиях к современным ИТ-платформам и о стратегических направлениях развития технологий Сбербанка.
Далее на сцену поднялся старший вице-президент Сбербанка Александр Ведяхин и рассказал об интересных кейсах Сбербанка в области машинного обучения и искусственного интеллекта.
Следующий блок открывали приглашённые специалисты мирового уровня в области анализа данных и искусственного интеллекта.

Профессор Университета Амстердама Маартин де Рийке на примере задач информационного поиска рассказал про бурно развивающуюся парадигму Reinforcement Learning, являющуюся предвестником искусственного интеллекта в его широком понимании. Уже сейчас в банке начинаются эксперименты с данным подходом при решении прикладных задач (рекомендательные системы, персональные предложения клиентам).
Senior Data-Scientist международной компании H2O Дмитрий Ларько рассказал про одну из самых важных проблем использования методов машинного обучения - интерпретируемость получаемых результатов (проблема "чёрного ящика"). Дмитрий рассмотрел подходы к интерпретации результатов, полученных в ходе применения таких моделей, которые могут значительно улучшить доверие бизнес-аналитиков к использованию современных методов машинного обучения.
Выступление профессора Константина Воронцова было посвящено изящному применению тематического моделирования для анализа транзакционных данных банка. Транзакционная история интерпретируется как набор предложений, а алгоритмы тематического моделирования позволяют выделить основные стереотипы поведения клиентов банка. Это даёт возможность более точно описывать группы клиентов для персональных предложений.
Выступление Дмитрия Ветрова было посвящено актуальной теме стохастических вычислительных графов, которые в последний год получили широкое распространение в алгоритмах deep learning . Добавление случайных узлов значительно расширяет возможности применения данного метода машинного обучения и позволяет находить сложные зависимости в данных (распознавание изображений, машинный перевод, системы Q&A). Этот подход имеет прямое применение при разработке более точных подходов к решению, в частности, задач банков, использующих методы машинного обучения.
Конкурс стартап работ: Startup Challenge
Конкурс состоял из двух частей: прием-онлайн заявок был открыт с 7 октября до 6 ноября , а финал конкурса состоялся 12 ноября на Data Science Day, куда были приглашены авторы 5 отобранных проектов-финалистов. Обязательным условием конкурса являлось то, что все проекты должны были основываться на данных банка (данные были обезличены и специальным образом модифицированы), но при этом было разрешено обогащать данные из открытых источников.

На основе полученных данных было необходимо выявить одну бизнес-задачу банка и разработать для неё решение. Технологический стек решений и тематика задач оставались на усмотрение участников.

По результатам онлайн-этапа было собрано 35 заявок от различных команд и стартапов в области дата-сайнс, среди которых были отобраны пять лучших команд. На Data Science Day состоялся финал конкурса в виде питч-сессий по 7 минут каждая. Победителей выбрало жюри, состоящее из топ-менеджеров Сбербанка и представителей компаний-партнёров.
Все финалисты получили возможность встретиться с топ-менеджерами банка и обсудить возможности сотрудничества.

Ниже мы опишем краткие тезисы проектов команд со ссылками на презентации.
Команда 1Factor
Команда 1Factor представила одно из наиболее интересных решений, использующее объединение разных типов данных: история транзакций клиентов (данные были обезличены и специальным образом модифицированы) и геолокационные данные. Наиболее ценным является алгоритм, который находит соответствия между этими данными при том, что оба датасета являлись обезличенными! После того, как удалось сделать такой матчинг данных, стало возможным отслеживать перемещения клиентов и, как следствие, выяснять популярность у этих клиентов тех или иных предприятий малого и среднего бизнеса. Анализ динамики трафика клиентов предприятий позволяет, в частности, оценивать кредитные риски такой организации, что, несомненно, представляет большую ценность для банка. Решением жюри команда участвовала в соревновании вне конкурса, но получила специальный приз "за лучшую синергию данных".
Команда Roox Solutions
Команда RooX Solutions представила проект по выработке рекомендаций клиентам банка на основе анализа транзакций для повышения благосостояния. В частности, речь идёт об увеличении накоплений, о льготном кредитовании кассовых разрывов или временном ограничении необязательных расходов. Особенностью проекта стало объединение экспертной экономической модели и алгоритмов машинного обучения для прогнозирования и генерации сигналов для клиентов в нужный момент.

Модель включала в себя индексы роста благосостояния и финансовой стабильности (см. рисунок), т.е. устойчивости клиента к возможным внезапным сокращениям доходов. На основании прогноза постоянных и переменных расходов и доходов за месяц, а также значений индексов и анализа их волатильности определялись клиенты, которым окажутся полезными те или иные рекомендации.
Ещё одной особенностью проекта являлось то, что для решения задачи прогнозирования команда использовала регрессию с доверительными интервалами и делала прогноз не на месяц вперёд, а до конца текущего месяца. Таким образом удалось получить сужающиеся по ходу месяца интервалы и, начиная где-то с середины месяца, достаточную уверенность в прогнозе для того, чтобы делать обоснованные рекомендации.
Команда Alone.io
Команда Alone.io объективно являлась самой сильной среди всех команд с точки зрения компетенций решения задач в области data science-В ее составе - двое из списка Топ-20 Kaggle. Один из них (Дмитрий Алтухов) занял второе место в нашем Data Science Contest. Свой бизнес-проект для Startup Challenge они построили на основе решения задачи из контеста о прогнозировании трат клиентов в различных категориях (так называемых MCC-кодах).

Имея хороший алгоритм прогнозирования трат клиентов, например, в тех или иных категориях, можно предугадывать некоторые факты из жизни клиента (например, факт поездки за рубеж). Методом скользящего окна производится анализ покупок клиента и поиск закономерностей в его поведении. В случае пошагового анализа вероятность покупки увеличивается перед самим событием (см. рисунок). Данное решение можно использовать для увеличения взаимодействия с клиентом с помощью персональных предложений.
Команда MCC2VEC
Командой MCC2VEC были предложены модели с применением word2vec алгоритмов, переводящих слова в вектора. Разработанные в 2013 году командой разработчиков Google под руководством Томаса Миколова, на сегодняшний день подобные алгоритмы используются для интерпретации и написания текста. При этом участники предложили интерпретировать последовательность транзакций клиентов как текст. То есть транзакции клиента разбиваются на предложения, которые, в свою очередь, разделяются между собой точками в случае, если между ними более 12 часов.
Выступающие в данном случае в роли «слов» MCC-коды, обрабатываются с помощью алгоритмов word2vec, в результате чего каждому коду соответствует стомерное представление, то есть просто стомерный вектор чисел. Два MCC-кода рассматриваются как близкие или далекие в зависимости от величины cos угла между ними. С учетом этого, для каждой MCC-траты клиента можно суммировать полученные вектора (с некоторыми нормализациями), напрямую соотнести клиента и получить client2vec.
На следующем этапе применяется техника t-SNE или t-distributed stochastic neighbor embedding. После чего клиенты «проецируются» на двумерную плоскость, что позволяет выделить определенные кластеры. В итоге было получено 15 категорий клиентов, объединенных некими признаками.
Аналогично данный алгоритм может быть использован в случае антифрода. В этом случае клиент и совершенная транзакция также соотносятся со стомерными векторами, после чего происходит оценка того, насколько эти вектора близки или далеки друг от друга, что помогает отметить нехарактерную для данного клиента операцию, а алгоритму при этом позволяет адаптироваться к изменениям в его поведении.
Команда SD Data
Победителем Startup Challenge стала команда из Санкт-Петербурга SD Data. За неделю до Data Science Day они стали победителями хакатона Neurohack 2.0 в треке Сбербанка и фактически с решением, придуманным за 36 часов на самом хакатоне, были приглашены в финал. Поздравляем со столь впечатляющим результатом!
Команда смогла "запаковать" в бизнес-решение достаточно простую идею о том, как можно искать подозрительные транзакции. Разработчики предложили отложить в системе координат по оси Х все сделанные клиентом переводы, а по оси Y – его покупки. При этом все переводы, находящиеся ниже биссектрисы угла Y0Х, отмечаются как подозрительные, так как находятся за пределами порога разумного числа переводов (количество покупок меньше, чем количество переводов).
Фактически это один из возможных способов разметить выборку клиентов относительно мошеннических операций. Затем уже, используя различные методы машинного обучения (xgboost, k-means кластеризация), разработчики смогли расширить изначальный список подозрительных транзакций и выявить различные наиболее типичные схемы вывода денег и разбить их на основные типы (субъекты малого предпринимательства, мошенники, благотворительность). Например, были выявлены такие предполагаемые схемы как "Прогон средств" и "Вывод денег за рубеж"
В качестве решения команда предложила ввести комиссию за получение входящих средств при превышении некоторого количества входящих переводов в месяц, установить минимальный временной промежуток для дальнейшего перевода средств, а также дополнительно изучать аккаунты с преобладающей нестандартной схемой вывода поступивших средств.
Data Science Contest Awards
В ноябре Сбербанк провел серию мероприятий по машинному обучению и искусственному интеллекту (SDSJ.ru), финальное мероприятие которого - Data Science Day - 12-го ноября на площадке DI Telegraph посетило более 1000 человек.
Андрей Черток (директор по исследованиям и разработкам, Сбербанк) рассказал о ключевых аспектах, необходимых для проведения успешного соревнования в области анализа данных. Соревнование случилось благодаря объединению усилий большого количества людей с нужным набором компетенций. Отдельно было рассказано об институте соревнований и их полезности для бизнеса как об одном из инструментов выстраивания связей между компаниями, научным и data-science сообществами. Такого рода соревнования вряд ли могут иметь прямое business value для компаний как прямой инструмент решения прикладных задач в контексте прямого внедрения решений победителей в продакшн (за редким исключением). С другой стороны, открытость банка с точки зрения возможности поработать с реальными данными о транзакциях открывает много новых перспектив по развитию методов исследования данных. Принцип открытости сейчас заложен в основу развития многих мировых ИТ-компаний, одной из которых стремится стать Сбербанк.
Александр Фонарёв (Chief Data Scientist, SBDA Rubbles) выступил с интересной лекцией о том, как проходила подготовка задач для соревнования. Организаторы потратили очень много времени на подготовку данных, корректную постановку задач и их тщательное прорешивание. Для того, чтобы соревнование было интересным для пользователей, нужно избежать большого количества проблем, таких как лики в данных, неустойчивость решений на обучающей и тестовой выборках, а также сделать постановки задач такими, чтобы они допускали выбор разных подходов к их решению, а также были достаточно интересными с точки зрения поиска наиболее эффективных признаков, которые подаются на вход в модели прогнозирования. Отдельной сложностью при подготовке соревнования был поиск оптимальной формулы расчёта итогового рейтинга и, в особенности, взвешивающих коэффициентов по задачам (для того, чтобы участники "в среднем" решали все задачи).
Третье место
Третье место в конкурсе занял Василий Рубцов. Василий представил решение по задаче B о прогнозировании суммарных трат всех клиентов на месяц вперёд в тех или иных категориях. Простые модели использовали линейные регрессии на основе средних (за последнюю неделю/месяц/год, средневзвешенные траты, среднее по дням недели) в качестве регрессоров. Более сложные модели строились либо как разность базовых, либо как их блендинг с некоторыми обобщениями.
Второе место
Дмитрий Алтухов, занявший в контесте второе место, рассказал о своих подходах к решению задачи C, в которой требовалось предсказать объём трат в следующем месяце в каждой из 184 категорий для 3000 пользователей.

Структура решения, как обычно, состояла в применении достаточно стандартных подходов:

  1. Извлечение базовых признаков. Для извлечения базовых признаков используем различные меры за последние пять месяцев (объём трат, количество трат и std трат) в различных измерениях (месяц, пользователь, mcc; месяц, пользователь; месяц, mcc).

  2. Построение линейных моделей для каждого пользователя. У каждого пользователя выделялся уникальный характер трат (регулярность, количество), затем для каждого из них строилась сильно регуляризованная ridge-регрессия на базовых признаках;

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

  4. Объединение всех признаков в XGBoost. В итоговую модель были включены как базовые признаки, так и предсказания, полученные с помощью пользовательских/MCC-регрессий.

  5. Лёгкий постпроцессинг решений. Приведение решений к "адекватному" виду (например, если предсказание получилось меньше нуля, то в качестве ответа выдаём ноль).
Первое место
Дмитрий Афанасьев, занявший в соревновании первое место, рассказал о решении самой простой задачи о предсказании пола клиента по его транзакциям (пол был известен для 12000 человек, предлагалось вычислить вероятность оказаться мужчиной оставшимся 3000 клиентам). Основные наблюдения Дмитрия по поводу данных и контеста состояли в том, что из текстовых описаний MCC-кодов и типов транзакций тяжело что-то получить, при этом MCC-коды важнее типов транзакций. Специфика соревнования подсказывает, что обучение и корректная валидация моделей гораздо важнее, чем опора при поиске решения на результаты публичного рейтинга.

Задача выглядела достаточно классической, поэтому интуиция подсказывала, что наиболее оправданным является применение неглубоких деревьев с малым количеством признаков на агрегатах (на сырых транзакционных данных модели не работают). Базовые признаки были связаны со стандартными производными от трат (сумма, количество, min/max), параметры xgboost: eta = 0.02, depth = 3, subsample = 0.6. Ключевыми признаками также являлись "мужские" и "женские" траты в разрезах по различным MCC-категориям и типам транзакций и другие более специфические (например, объединение MCC-кодов в пары: если после покупки в магазине женской одежды идёт покупка в магазине мужской, то это снижает вероятность того, что данный клиент - женщина). Сверху также навешивался стекинг наивного байеса как признака, в котором траты в MCC-кодах использовались как простой bag of words. Более подробно про решение задачи A - в презентации (ссылка) и видео-выступлении (ссылка).
Финал мероприятия
В завершении Data Science Day у участников была возможность пообщаться в неформальной обстановке во время фуршета, приобрести новые, полезные контакты, и хорошо провести время.

Data Science Journey – это не просто разовое мероприятие в области анализа данных, машинного обучения и искусственного интеллекта, а начало новой и прочной традиции: такие «Путешествия» мы планируем проводить на регулярной основе. Ждите наших новых мероприятий!
Комментарии 18
  • +6

    Это прекрасно что Сбербанк инвестирует в Data Science, причем не "для галочки", а на более серьезном фундаментальном уровне. В США похожую активность проявляет только банк Capital One, но, у них в этом подходе все очень не структурировано. Будем надеяться, что все у вас получится.


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


    Более предметный вопрос, а в чем была основная причина того, что контест не был проведен на площадке Kaggle? Как минимум было бы больше участников, что обычно добавляет увлекательности совевнованиям, тем более, что предложенные задачи достаточно стандартные.

    • +4
      Здравствуйте, ternaus! Спасибо за хороший отзыв. Мы не проводили соревнование на платформе Kaggle сразу по нескольким причинам, некоторые из них: а) нестандартный формат (три задачи в одном контесте) — это в каком-то смысле было вводным условием; б) очень сжатые сроки (как ни странно, в нашей ситуации было быстрее и надёжнее создать платформу и всегда держать с ней руку на пульсе); в) стратегическое видение про проведение кастомных контестов на этой же платформе в будущем; г) риск провала и тогда он бы был сразу на международном уровне :) Кстати говоря, аргумент про «больше участников» — у нас активных участников (хотя бы один сабмит) получилось больше, чем на любом контесте от российских компаний на большом международном Kaggle (тут сыграло много факторов).
    • –6

      Куда сбербанку в data science лезть, если они терминалы для приёма денег нормально сделать не могут? (не умеет давать сдачу — ну, допустим, это техническое ограничение; не умеет объединять несколько платежей, чтобы оплатить одной купюрой — безумие; считывание штрих-кодов с квитанций отключили, а qr-кодов так и не сделали — безумие в квадрате; регулярно не может провести платёж по квитанции, по которой раньше мог)
      В общем, держались бы подальше от сложной техники, у них всё равно плохо получается.

      • +1
        Спасибо за системный и детализированный отчет о мероприятии. Особенно интересно читать о том, как комбинации известных методов анализа фомируют конечные бизнес-решения.
        • +1
          aamonster, банку есть куда меняться, никто не спорит. Но для такой большой структуры он эволюционирует очень динамично в разрезе последних лет. Мы при этом можем отвечать только лишь за свой огород. А data science в банке сейчас гораздо больше, чем Вы думаете (сегодня, кстати, про это на Хабре будет статья от нас).
          • +2
            Меня лет пять-восемь назад динамика изменений Сбера (с точки зрения клиента) тоже радовала. К сожалению, в последние несколько лет пошёл регресс: терминалы ухудшили (штрих-код не принимают + раньше хотя бы можно было сдачу распределять по другим платежам — это, конечно, приводило к забавным вещам типа того, что если тебе надо оплатить два счёта по 700р, а у тебя есть купюры 500 и 1000 — то надо вначале вставлять 500, иначе сможешь оплатить только один) и другие проблемы (тут я говорю только про проблемы ПО).

            Я понимаю, что те, кто занимаются Data Science, за это не в ответе (и вообще то, как себя ведут терминалы, определяется скорее «эффективными менеджерами»), но, надеюсь, у вас есть хоть какие-то связи с другими ИТ-шниками банка, и вместе вы сможете добиться разрешения хоть что-то улучшить.

            А ещё надеюсь, что те, кто _молча_ гадил в карму — не ограничатся этим и постараются мне доказать, что всё не так плохо и IT-шники Сбербанка действительно могут сделать его лучше. Всего-то надо — протолкнуть несколько улучшений в терминалы, да и интернет-банк тоже не идеален ;-). Если будут хоть какие-то улучшений — готов лично поблагодарить каждого минусовавшего :-D
          • +1
            Данные Сбербанка очень интересны с чисто научной точки зрения.
            Можно ли надеяться что появятся более сырые наборы больших данных, не для конкурсов а для научной работы?
            • 0
              А мне вот интересно, конкурс провели, и что? Заинтересовало ли Сбербанк его результаты? Были ли заключены контракты с победителями?

              А то, как бы не получился конкурс, ради конкурса.
              • 0

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


                Так что определённых целей однозначно добились.

                • 0
                  Сбербанк — еще тот монстр и поглощает разработчиков в не меренных количествах, что порождает вопросы — почему от команд внутри Сбербанка и Сбертеха ни кто не прошел, ведь участвовать могли все.

                  Бытует мнение, что попав в Сбербанк, начинаешь деградировать, не в обиду Сбербанка будет это будет сказано.
                  • 0

                    К сожалению, участвовать как раз могли не все.
                    https://sdsj.ru/contest-rules.html
                    Пункт 3.1 правил — не допускаются к участию сотрудники Сбера и всех его дочек.

                    • 0
                      согласно же правилам челленджа, в стартапах можно было обогащать данные, но использовать только общедоступные данные, но…
                    • 0

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


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

              • +1

                Большое спасибо за сам контест и финальное мероприятие — было очень здорово!
                Участвовал ради фана, но пока решал задачи хорошо подтянул свой уровень владения R, особенно в части манипуляции с данными.
                На мой взгляд, большой плюс этого соревнования в том, что данных было не очень много и можно было строить модели даже на ноутах. А также, лично для меня, было важно то, что все описания на русском, да и все обсуждение тоже происходили в русскоязычном сообществе. Т.е. это было очень понятное соревнование. Плюс организаторы оперативно отвечали на возникающие вопросы.

                • 0
                  Спасибо за развернутый отчет! Аршавскому привет.) Всех с новым годом!
                  С BigData в компании всё замечательно. Хромает управление проектами, но это поправимо… Рад за ребят и желаю успехов в новом году!
                  • 0

                    Кстати, ещё вопросы организаторам:
                    1) писали, что возможно откроете платформу для дальнейшей отправки результатов, чтобы можно было другие свои решения проверить;
                    2) как скоро можно ожидать следующий конкурс? И, если можно, чуть больше информации об этом.
                    Спасибо.

                    • +1
                      Сразу скажу — все участники молодцы, хорошие умные головы. К сожалению, как говорится, их бы энергию — да в мирных целях… После прочитанного хочется в душ, настолько некоторые кейсы противны. Например Alone.io — я пользуюсь банком для собственного удобства, а не для того, чтобы на основе моих покупок меня задалбывали «персональными предложениями». Достаточно того, что на прокрутке моих денег банк зарабатывает, да еще и комиссии сдирает. Надеюсь, хорошие программисты найдут более достойное применение своим талантам, а не сбер и подобные конторы.

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.