Сбербанк раскрыл методы, код и данные для решения задач с помощью машинного обучения

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Как решаются задачи повышения предсказательной силы (Gini), точности антифрода и системы рекомендаций, рассказали на форуме FinMachine-2016 директор департамента моделирования рисков Максим Еременко и Head of R&D Data Science Андрей Черток из Сбербанка, а также Александр Кузьмин, data scientist из Rubbles. Кроме того, Сбербанк согласился поделиться с читателями FutureBanking кодом и обезличенными данными (ссылки в конце статьи), чтобы вы могли попробовать решить задачи самостоятельно.

Чем вдохновлялись
Концепция платформы Kaggle заключается в предоставлении сторонним разработчикам возможности опробовать собственные модели анализа данных, решая практические задачи. В качестве примера работы платформы директор департамента моделирования рисков Максим Еременко и Head of R&D Data Science Андрей Черток из Сбербанка рассказали о кейсе предложенным разработчикам американской сетью магазинов 7-Eleven.
 
Перед программистами была поставлена задача спрогнозировать объем покупок в магазинах сети. Как более простой вариант решения использовался временной ряд с его последующей аппроксимацией, что позволяло получить метрику с коэффициентом Gini на уровне 57%. «Это работоспособная метрика. Большинство ныне живущих data driven корпораций принимают решения на основе таких метрик», – пояснил Максим Еременко.
 
Более сложный способ решения задачи заключался в учете сезонности и типа конкретного магазина при формировании модели. Часть участников соревнования Kaggle использовали то, что данные имеют неоднородную структуру по ряду факторов и дискриминирующих переменных. На основании снижения продаж в конкретных регионах в определенные часы программисты установили штат, в котором расположена отдельно взятая торговая точка, и в результате смогли распределить всю торговую сеть по штатам. Таким образом удалось учесть первый из дополнительных факторов – сезонность: «Горячий кофе зимой более актуален в Нью-Йорке, чем во Флориде», – поясняет Максим Еременко.
 
Дополнительно повысил точность прогноза учет в модели формата магазина: convenience store небольшого размера, в котором есть все самое необходимое или более крупный супермаркет, включающий в себя в том числе мелкооптовую продажу. Как отметил директор департамента моделирования рисков Сбербанка, в результате усложнения модели выросли коэффициент Gini и предсказательная точность модели, но в то же время возросли вероятность получения некорректных результатов и цена ошибки в дополнительно учтенных факторах: «Чем более сложную модель мы используем, тем тяжелее ее контролировать».
 
Однако сложность или в ряде случаев даже невозможность интерпретации человеком результатов, получаемых адаптивными системами, требует дополнительных механизмов для управлениями подобными рисками. Для решения этой проблемы Сбербанк использует стандарт CRISP или Cross-Industry Standard Process for Data Mining/ Data Science, определяющий, что каждая разработка roll out-модели должна идти согласно заданному жизненному циклу, который начинается с формулировки и постановки задачи. Далее следуют этапы агрегации, экстракции и обработки данных с последующим формированием модели на основе этих данных. На четвертом этапе происходит валидация модели, без которой невозможно последующее внедрение и применение модели.

Как реализовали сами
Объясняя специфику использования клиентских данных в рамках Data Science Contest, соорганизаторами которого помимо Сбербанка выступили сотрудники компании Rubbles, Максим Еременко пояснил: «Речь не идет о том, что мы сливаем клиентские базы. Мы делаем то же, чем занимаются крупные корпорации на Kaggle. То есть мы используем неактуальные, обезличенные и модифицированные выборки, но полученный с их помощью механизм выявления закономерностей можно применять и на реальных данных».
 
Сбербанк предложил разработчикам обфусцированные данные о транзакциях своих клиентов с указанием обезличенного customer id, времени проведения транзакции – за точку отсчета был выбран произвольно взятый момент времени, MCC-кодов, отмечающих существующие категории трат. Так же была представлена информация относительно типов проводимых транзакций с указанием их объема, где положительное значение говорит о пополнении счета, отрицательное – о снятии с него. В графе amount был указан действительный размер транзакции, домноженный на постоянный неизвестный коэффициент. Поле term_id заполнялось в случае если платеж проводился в адрес организации пользовавшейся эквайрингом Сбербанка.
В отличие от соревнований, проводимых на платформе Kaggle, участникам предложили не одну, а три задачи. Первой и самой простой из них было установить пол клиента банка на основе характера трат. Решая вторую задачу, было необходимо, используя агрегированные данные по 15 тыс. клиентов, спрогнозировать совокупные траты в следующем месяце по определенным категориям. Третья задача заключалась в прогнозировании объема трат в определенных категориях для конкретных клиентов за следующий месяц.
 
Как отмечает Head of R&D Data Science Сбербанка Андрей Черток наиболее интересно для бизнеса решение именно третьей задачи: «Прогноз объема трат, связанных с определенной категорией, который пересчитывается каждый день, позволяет предсказать сам факт покупки <…> Банк соответственно может это использовать».

Тригонометрия на службе антифрода
На Startup Challenge, который проводился также с использованием транзакционных данных, одной из команд были предложены модели с применением word2vec алгоритмов, переводящих слова в вектора. Разработанные в 2013 году командой разработчиков Google под руководством Томаса Миколова, на сегодняшний день подобные алгоритмы используются для интерпретации и написания текста. При этом участники предложили интерпретировать последовательность транзакций клиентов как текст. То есть транзакции клиента разбиваются на предложения, которые в свою очередь разделены между собой точками в случае если между ними более 12 часов. 

Выступающие в данном случае в роли «слов» MCC-коды, обрабатываются с помощью алгоритмов word2vec, в результате чего каждому коду соответствует, как отметил Андрей Черток, «стомерное представление, то есть просто стомерный вектор чисел». Два MCC-кода рассматриваются как близкие или далекие в зависимости от величины cos угла между ними. С учетом этого для каждой MCC-траты клиента, можно суммировать полученные вектора (с некоторыми нормализациями) и напрямую соотнести клиента со стомерным вектором или, как говорит Head of R&D Data Science Сбербанка, «получить client2vec».


На следующем этапе применяется техника t-SNE или t-distributed stochastic neighbor embedding. После чего клиенты «проецируются» на двумерную плоскость, что позволяет выделить определенные кластеры. В итоге было получено 15 категорий клиентов, объединенных некими признаками.


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


Победителем Startup Challenge стало решение, в рамках которого разработчики предложили отложить в системе координат по оси Х все сделанные клиентом переводы, а по оси Y – его покупки. При этом все переводы, находящиеся ниже биссектрисы угла Y0Х, отмечаются как подозрительные, так как находятся за пределами порога разумного числа переводов.


Примечательно, что основными паттернами, для которых характерны подозрительные переводы стали сферы благотворительности, малого бизнеса, где таким образом стремятся к оптимизации налоговой базы, и вывода средств за рубеж.
 
Последний из кейсов, представленных на workshop’е Сбербанка, был посвящен созданию рекомендательной системы «за десять минут» на основе анализа всё тех же транзакционных данных клиентов. Данные пользователя были представлены в виде трехмерного куба, расположенного в системе координат, сформированной тремя осями: данными самого пользователя, датой и MCC-кодом. На следующем этапе применяется код, группирующий данные по временному признаку, что позволяет распределить их по месяцам. То есть каждый из 15 слоев представляет собой один из месяцев, которые охватывает наш массив данных.
 
Задача заключалась в создании некой модели, которая, используя данные о пользователе за 14 месяцев, сможет предположить, какие траты и в каком объеме пользователь совершит за следующий пятнадцатый месяц. Если данные позволяют спрогнозировать чем пользователь будет заниматься в следующем месяце, что ему будет интересно, то это соответственно позволяет и банку сделать клиенту более релевантное предложение. Пример того, как машинное обучение позволяет выявлять наиболее интересные зависимости и с их помощью прогнозировать будущие траты и определять паттерны поведения клиентов.
 
Для решения данной задачи, по мнению разработчиков, применение нейронных сетей или глубинного обучения нецелесообразно из-за отсутствия локальной зависимости, почему и был использован градиентный бустинг на решающих деревьях.
 
Как базовое решение, которое предоставлялось участникам Data Science Contest, модель для обучения в качестве признаков получала траты за предшествующие месяцы, что позволяло получить качество по метрике логарифма среднеквадратичного отклонения на уровне 1.52.
 
На следующем этапе разработчикам было необходимо улучшить данную метрику для последующего применения на практике. Первым из улучшений стало использование персональных данных пользователя для обучения индивидуальной линейной модели, предсказывающей поведение конкретного пользователя. Результаты этих моделей в свою очередь также с помощью метода стекинга используются как признаки в базовой модели, что позволяет повысить качество до 1.31.
 
Вторым этапом улучшения модели может быть учет характерных тенденций в разных категориях трат, по которым в данным случае проводится «срез». То есть индивидуальная модель в отличие от первого примера обучается не для каждого пользователя, но для каждой категории трат.
 
И мы вновь возвращаемся к использованию MCC-кодов. Например, если мы видим в транзакциях клиента категорию автозаправок и вместе с тем на улице дождливое время года, то вероятно, что для такого пользователя релевантными будут и автомойки. Важно сгруппировать нужные категории друг с другом и передать их алгоритму машинного обучения, что позволяет получить качество на уровне 1.26.
 
«Можно показать различные фичи и разные задачи, но вопрос в том, какая выборка [данных - FutureBanking] у нас есть и какую дополнительную информацию мы можем к ней подцепить», – заключил Максим Еременко, подчеркнув: «По мере усложнения технологий, которые мы используем, интерпретируемость всего этого [результатов работы алгоритмов - FutureBanking] становится все менее и менее явной».
 
Сбербанк также приглашает всех желающих самостоятельно попробовать найти решение поставленных задач. Представленный в статье код расположен здесь.
 
Чтобы получить доступ к данным, нужно зарегистрироваться на сайте contest.sdsj.ru, после чего данные вместе с подробными описаниями можно будет найти в пункте вертикального меню «Данные».
 
Если у вас есть интересные идеи и подходы к построению решений на основе предоставленных транзакционных данных, пишите Андрею Черток на avchertok.sbt@sberbank.ru с пометкой «FinMachine-2016».
 
В ближайшее время будет также будет открыта возможность отправить свои решения задачи о прогнозировании трат на платформе contest.sdsj.ru.


Источник: futurebanking.ru

Комментарии: