image alt text


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


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


Зачем платежам еще одна проверка


Вне зависимости от типа авторизации любая платежная операция через Яндекс.Деньги проходит проверку антифрод-системы. Эта процедура позволяет защитить всех участников сделки:


  1. покупателя – от прямых убытков из-за действий мошенников;


  2. продавца и его банк-эквайер – от проведения несанкционированной оплаты, после которой средства придется возвращать;


  3. Яндекс.Деньги – от штрафов и недовольства пользователей.
    image alt text

Общая схема процесса оплаты для интернет-магазина.


Антифрод установлен в ядре платежной инфраструктуры Яндекс.Денег, и к нему приходят на проверку любые операции оплаты или переводов. Если есть какие-то подозрения, антифрод может рекомендовать провести дополнительную аутентификацию или обозначить риск как высокий.
image alt text


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


Как роботы принимают решения


Для работы с методами машинного обучения Яндекс.Деньги используют одну из популярных систем анализа, в которой строятся модели машинного обучения – условно назовем ее ML. Разберем на примере, как все это работает.


Принципиально процесс делится на две фазы:


  1. Обучение. В ходе обучения выявляются параметры модели и значимые признаки;


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

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


image alt text


Так выглядит схема процесса машинного обучения в ML.


Допустим, от имени пользователя Иннокентия проводится операция покупки игровой валюты для World of Tanks в пятницу вечером:


  • сумма операции – 15 000 рублей;


  • покупка совершается из Австралии;


  • пользователь работает с браузером Safari в MacOS;


  • на часах 15:23;


  • еще десяток атрибутов.

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


Но мы уже раньше встречались с Иннокентием и знаем, что в прошлые месяцы он покупал преимущественно мелкую бытовую технику и одежду в России со средним чеком 7 000 рублей. Только сегодня утром он пополнял проездной в Москве, поэтому принципиальных изменений в его поведении быть не должно.


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


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


Кроме того, иногда интересны не конкретные значения каких-либо атрибутов, а некие основанные на них качественные характеристики. Поэтому, кроме использования уже имеющихся в транзакции данных, система может сформировать дополнительные атрибуты операции. Например, таким атрибутом может быть признак "Сумма больше N рублей" вместо просто числового значения суммы, или разница между реальным значением какого-то базового атрибута и его прогнозом — чуть позже этот вопрос рассмотрим более подробно.


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

Если по многим параметрам реальность слишком отличается от прогноза – это повод для подозрений и, например, дополнительной верификации.


Область поиска аномалий


При покупке в интернет-магазине наибольший риск, как правило, принимает на себя магазин, которому в случае проблем придется работать с опротестованиями и возвратами. Поэтому поиску аномалий в пользовательском поведении в антифрод-системах уделяется наибольшее внимание.


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


Сложности анализа


Из набора известных данных операции составляется набор атрибутов, который бесполезен без понимания, какие значения "хорошие", а какие “плохие”. То есть нужно провести черту, при выходе за которую параметры операции станут подозрительными для антифрод-системы – это и будут аномальные значения для каждого атрибута (в некоторых случаях – их комбинации). Здесь-то и кроется одна из самых больших сложностей.


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


В процессе обучения применяются следующие методы:


  • вероятностные – построение всяческих распределений для объектов класса;


  • метрические – вычисление расстояний между объектами;


  • корреляционные – определение количественных взаимосвязей между несколькими параметрами исследуемой системы.

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


Любая аномалия – это выбивающееся из общего ряда событие. Может показаться, что достаточно просто выполнить нормирование данных из истории операций (отбросить слишком низкие и слишком высокие значения), чтобы получить приблизительный разброс "хороших" транзакций. Но это не работает, так как существуют дневные всплески продаж, акции, распродажи.


Поэтому в Яндекс.Деньгах используется, например, такой алгоритм выявления аномальных значений атрибутов:


  1. экстраполяция значений временного ряда по каждому из признаков;


  2. вычисление разницы между фактическим значением признака и спрогнозированным машиной;


  3. если разница слишком велика и такие аномальные события объединяет нечто общее (IP, BIN карты, браузер) – скорее всего, с конкретной транзакцией дело нечисто.

image alt text
На графике видна зависимость аномальности события от линейной комбинации признаков. Аномальность определяется расстоянием между событиями.


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


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


Во всех этих технологиях и сложной математике важно помнить о пользователе


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


При любых модификациях в "мозгах" Яндекс.Денег мы особенно внимательно следим за изменением времени обработки каждой операции. Даже идеальная защита не найдет понимания у пользователя, если ему придется ждать подтверждения по несколько минут. Сейчас транзакции выполняются практически мгновенно, если учесть работу антифрода в реальном времени.


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


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


image alt text


Схема подключения антифрода, при которой проверка выполняется в реальном времени для всех операций.


Результатами каждой проверки по новой схеме являются:


  • синхронный ответ платежной компоненте от системы правил и моделей машинного обучения;


  • отправка скорингового балла и данных о транзакции в базу исторической информации для использования в проверке будущих операций.

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


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

Поделиться с друзьями
-->

Комментарии (12)


  1. apelserg
    09.02.2017 18:32

    Но мы уже раньше встречались с Иннокентием и знаем, что в прошлые месяцы он покупал преимущественно мелкую бытовую технику и одежду в России со средним чеком 7 000 рублей. Только сегодня утром он пополнял проездной в Москве, поэтому принципиальных изменений в его поведении быть не должно.

    Правильно ли я понял, что если я ищу работу, разослал резюме, а потом зашёл в интерне-поиск и набрал «омез», то кадровые агентства уже знают, что у меня проблемы с желудком?


    1. dmJonny
      09.02.2017 18:53
      +1

      Вот если вы зашли в кадровое агентство и спросили про омез — то да, в курсе. А в случае с «интернет-поиском» — мы не знаем.

      Что же касается кейса в статье — платежи, которые пользователь ранее проводил через Яндекс.Деньги, для анализа системе антифрод-мониторинга доступны.


  1. madkite
    09.02.2017 21:42
    +2

    Только меня раздражают эти проверки по geoip? Поедешь куда-нибудь в отпуск и никуда залогинится не можешь с первого раза. Разве эти проверки от чего-то реально защищают? Или только создают неудобства? Не верится, что люди, которые удачно воруют номера кредиток и пароли, разве не умеют пользоваться proxy/vpn.


    1. dmJonny
      09.02.2017 23:18
      +2

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

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

      Ну и, понятно, тут ещё масса других вариантов — а если платёж в торговой точке реальной картой? А если не только геоданные анализируются — а еще и товарная группа, сумма, и так далее? Тут никакой VPN сам по себе не поможет.

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


      1. Dreyk
        10.02.2017 13:31

        любая "служба безопасности" находится на другом конце от "user friendly" так что тут ничего не поделаешь


      1. madkite
        15.02.2017 01:02

        Т.о. геоинформацию можно трактовать как одну из частей составного пароля. Причём узнать её не такая уж и проблема для злоумышленника, т.к. не очень то она секретная — если это кредитка, то пробить регион выпуска карты он может возможно так же, как и Вы. Ещё есть социальный сети (скорее всего обычный регион == домашний регион). А вообще возможно у него есть даже ip жертвы (как побочная информация от взлома). Т.о. может лучше "пароль" на пару символов длинее сделать чем вынуждать легальных пользователей иногда юзать vpn ("пара символов" по количеству вариантов примерно соответсвует количеству стран в мире)? Я, конечно, понимаю, что у вас конкретная прикладная задача и там есть искусственные ограничения, диктуемые платёжными шлюзами, но я говорю про общий случай, как бы лучше мир был бы устроен без таких костылей.


  1. erwins22
    10.02.2017 13:51
    +2

    1. сколько ложно/не ложно положительных/отрицательных в машинном обучении и в старой статистической? был ли смысл городить вообще все это?

    2. Насколько лучше совместная модель?


    1. dimskiy
      10.02.2017 16:29

      Машинное обучение снизило число срабатываний false positive и в целом повысило точность работы антифрода, но точные цифры назвать не можем. Сами понимаете — тонкие материи, системы безопасности, NDA…

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


  1. kmikeru
    10.02.2017 19:15
    +1

    Расскажите пожалуйста, как эта проверка на аномалии помогла в истории с Додо-пиццей?


    1. dmJonny
      10.02.2017 20:25

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


      Способы отменить ошибочные операции существуют, поэтому ситуацию успешно разрешили в пользу Додо и его франчайзи


  1. npaBDA
    16.02.2017 09:57

    Куда вы торопитесь и чем можете похвалится???.. Я вам мою историю расскажу которая проходит сейчас, и не известно еще чем закончится. В общем есть у меня канал По всем известной игре World of Tanks, я не буду называть данных там это лишнее. В общем мои не малочисленные подписчики попросили меня протестировать вашу систему Я\Д. В прямом Эфире Я создал Кошелек закинул на него средства с карты, затем перечислил на другой мой кошелек который создавался давно и с ненастоящими данными ну так сказать одноразовый. И вроде все быстро и хорошо если бы не одно НО! когда я зашел на кошелек чтоб совершить перевод на карту назад так сказать замкнуть круг, я получил от службы поддержки обаятельный привет «На вашем счете более 3000р. в целях безопасности ваш счет заморожен пройдите Идентификацию „Ввёл я свои настоящие данные побежал в Евросеть прошел идентификацию потратил еще 50р. прибегаю домой а в чате моём подписчики уже во всю хохочут над данной ситуацией. Ну ладно подождал 20 мин, кошелек прошел идентификацию, я провести платеж а там “Ой что-то пошло не так обратитесь в службу поддержки (кстати у вас криворукие кодеры так как кнопка в этом окне направляет не на службу поддержки а обратно на кошелек)» я позвонил оформил заявку мне сказали (в том-же эфире )что решение данной проблемы занимает не более 5 рабочих дней, в общем прошла неделя за все это время я получил только три письма проел себе кучу нервов, мои подписчики зрители(которых стало гораздо больше из-за этой истории) толпами отказываются от ваших услуг а я по прежнему не могу пользоваться своими средствами. КАК ЭТО НАЗЫВАЕТСЯ!?? ЯВНО НЕ СЕРВИСОМ. (А ПОДПИСЧИКИ ПОЛУЧИЛИ САГУ НА НЕДЕЛЮ И ЭТО ЕЩЕ НЕ КОНЕЦ (у меня более 100 000 подписчиков и более 80% из них после моего видео перестанут пользоваться услугами Я\Д я это около 80 000 человек а если взять во внимание отзывы друзьям и т.д. то эта цифра существенно возрастет, мне очень жаль но это исход вашей работы)


    1. formasha
      16.02.2017 12:21
      +1

      Нам жаль, что проверка заняла столько времени :( Но даже из вашего комментария видно, что для этого были основания. Смотрите:

      1. «Я создал Кошелек»;
      2. «закинул на него средства с карты»;
      3. «затем перечислил на другой мой кошелек »;
      4. «который создавался давно и с ненастоящими данными ну так сказать одноразовый.», т. е. отличными от первого кошелька;
      5. «зашел на кошелек чтоб совершить перевод на карту назад»;
      6. «в целях безопасности ваш счет заморожен пройдите Идентификацию».

      Учитывая всю цепочку упомянутых вами событий, предложение пройти идентификацию вполне логично, т. к. эти действия — признаки использования кошелька для «транзита» денег, это запрещено в нашем пользовательском соглашении. И это только то, что можно узнать из вашего сообщения. К слову, никакого «обязательного привета» по признаку 3000 рублей у нас нет и не было — антифрод анализирует на ходу всю активность в кошельке, и решение о блокировке принимается редко и по веским основаниям.

      В любом случае, ещё раз приносим извинения за сроки ответа в саппорте. Если вопрос до сих пор не решился – пожалуйста, напишите нам на bloghelp@yamoney.ru