Обнаружение мошенничества с помощью нейронных сетей

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

защита от мошеннических транзакций

 

Рассмотрим в этой статье такие вопросы:

Сценарий выявления мошеннических транзакций

Обзор нейронных сетей

Детектор мошенничества на основе нейронной сети в действии

Сценарий выявления мошенничества в транзакционных данных

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

  • Описание транзакции
  • Сумма транзакции
  • Место совершения транзакции

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

Мы имеем 5 разных профилей пользователя, т. к. привычки, касающиеся расходования денег, варьируются в зависимости от многих факторов: транзакция на сумму 5000 долл. может выглядеть как мошенническая по одному счёту и вполне допустима для другого счёта. Разумеется, на практике профилей гораздо больше 5-ти, но для демонстрации этого количества достаточно.

Сумма транзакции берётся из нормального (гауссова) распределения и определяется исходя из средней суммы транзакции по данному профилю и его стандартного отклонения.

А сейчас нечто интригующее…

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

Не математик рассуждает так: поскольку цифр девять, вероятность увидеть цифру 1 равна 11,1%, цифру 2 – 11,1% и т. д. Однако, согласно Закону Бенфорда, вероятность должна быть не однородной, а логарифмической! На самом деле, вероятность того что первой значащей цифрой окажется 1, равна 30%.

Возвращаясь к описанию наших транзакционных данных, мы упрощаем указание места проведения транзакции, предоставляя эвклидовы координаты (х, у). В реальной системе следовало бы получить точное описание места с помощью системы глобального позиционирования (GPS). В нашем же случае подойдут обычные координаты. Берутся они из равномерного распределения в интервале от минимального до максимального значения. То есть для каждого профиля задаются минимальное и максимальное значения Х и Y, и данной транзакции назначается случайное, равновероятное место её проведения в рамках заданного координатами интервала.

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

В результате метода выполнения main этого класса сгенерируются 2 файла: generated-training-txns.txt и generated-test-txns.txt, которые содержат данные для обучения и тестирования.

Каждая транзакция определяется значениями таких атрибутов:

  • Идентификатор пользователя
  • Идентификатор транзакции
  • Описание транзакции
  • Сумма транзакции
  • Координата х транзакции
  • Координата y транзакции
  • Булевская переменная, определяющая транзакцию как мошенническую (true) или законную (false)

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

Несколько слов об искусственных нейронных сетях

Нейронные сети состоят из узлов нейронов или просто нейронов и связей между нейронами (их называют синапсами или связями). Одни узлы отвечают за простую передачу данных в сеть и из неё, другие — за обработку данных. Первые узлы обеспечивают сеть возможностью ввода/вывода и имеют соответствующие им названия: уровень ввода и уровень вывода. Все другие узлы называются скрытыми и не взаимодействуют с «внешним» миром.

 

нейронный сети

 

Будем считать, что входные значения (х1, х2) распространяются слева направо. Каждый узел собирает свои входные значения и вычисляет свои выходные значения. Окончательное значение (у) зависит от входных значений и способа распространения их по сети. Синапсы соединяют узлы, то есть любые 2 связанные синапсом узла могут обменяться информацией. Обмен информацией регулируется параметром, называемым весом синапса, который служит чем-то вроде индикатора важности соединения между этими двумя узлами. На этапе обучения нейронной сети эти веса синапсов постоянно оцениваются и изменяются в соответствии со значениями из набора данных для обучения.

Обратите внимание на рисунок.

  1. Мы указали стрелку только в тех связях, которые помещают переменные в узлы ввода, и в той, которая обеспечивает «ответ» (у). Если узлы и синапсы образуют ациклический направленный граф, практическим правилом для этого условия была бы проверка, все ли стрелки направлены слева направо, — в таком случае мы говорим, что у нас есть нейронная сеть прямого распространения. В противном случае – нейронная сеть с обратным распространением.
  2. Узлы принято располагать слева направо в виде вертикальных стеков. Принято говорить, что узлы из данного вертикального стека принадлежат данному уровню (layer). Поэтому узлы скрытого уровня обозначены L1. Узлы ввода обозначены буквой І, а уровень вывода – буквой О.
  3. Узлы ввода могут быть соединены не со всеми узлами скрытого уровня. Но если все узлы одного уровня соединены с каждым узлом следующего уровня, то эти уровни являются полностью связанными.

Данные наблюдения помогут нам подойти к выводу: мы можем полностью определить нейронную сеть, определив 3 важнейших элемента:

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

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


Детектор мошенничества на основе нейронной сети в действии

Как можно использовать нейронную сеть для выявления мошеннических транзакций?

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

 

Листинг 1. Класс NNFraudClassifier: классификация на основе нейронной сети для обнаружения случаев мошенничества

Взглянем на результаты выполнения нашего кода:

Результат классификации

Что скажете? Классификатор, по-видимому, безупречен! Возможно ли это? Скажем прямо – маловероятно. Это классическая ловушка для тех, кто использует библиотеки по принципу «чёрного ящика» и не понимает внутренних механизмов работы алгоритмов классификации. Чтобы разобраться в этом, откроем в текстовом редакторе файл test-txns.txt и заменим каждое вхождение записи BLACK DIAMOND COFFEE на SOME DUDE.

Выполнив повторно последние три шага из листинга 1, вы увидите следующие результаты (которые будут также включать нормализированные значения транзакций, которые мы опустили для удобочитаемости):

 

Результат классификации 2

Наиболее подходящие транзакции, ассоциированные с заменённым описанием, были допустимыми: их последний атрибут имел значение false. Согласно выходным данным, четыре допустимые транзакции (VALID_TXN) были ошибочно классифицированы как мошеннические. Безупречная репутация нашей оценки подорвана, поскольку замена внесла в данные шум. Иначе говоря, теперь мы имеем дело с данными, которые ранее никогда не встречались.

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

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

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

Важно знать чувствительность классификатора, когда вы вводите шум. В предыдущем примере мы изменили описание для 39 транзакций из 1100, и классификатор на основе нейронной сети оказался неточным в 4 случаях из 39 «загрязнённых» транзакций. Что бы произошло при выборе другой замещающей строки? Сколько «загрязнённых» транзакций классифицируются неверно по мере увеличения их числа? Возьмите в качестве замещающей строки собственное имя и проанализируйте результаты.

 

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *