Хабрахабр

[Перевод] Выявление мошенничества с помощью алгоритмов случайного леса, нейронного автокодировщика и изолирующего леса

Это только подтверждает необходимость для банков научиться распознавать мошенничество заранее, еще до того, как оно состоялось. Согласно отчёту Nilson о ситуации с банковскими картами и мобильными платежами, суммарный объём потерь в результате мошенничества ещё в 2016-м достиг $22,8 млрд, что на 4,4% больше, чем в 2015-м. Сегодня разработано много методик, по большей части опирающихся на такое направление Data science, как обнаружение аномалий.
Это обширная и очень сложная задача. Таким образом, в зависимости от доступного датасета большинство из этих методик можно свести к двум основным сценариям:

  • Сценарий 1: датасет содержит достаточное количество образцов мошенничества.
  • Сценарий 2: в датасете нет (или ничтожно мало) образцов мошенничества.

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

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

Мы реализуем их на датасете для обнаружения мошенничества, созданном Kaggle. Давайте на примере реального датасета посмотрим, как можно применять разные методики. Для каждой транзакции представлено: Он содержит 284 807 транзакций с банковскими картами, выполненными европейцами в сентябре 2013-го.

  • 28 главных компонент, извлечённых из исходных данных.
  • Сколько времени прошло с момента первой транзакции в датасете.
  • Количество денег.

У транзакций две метки: 1 для мошеннических и 0 для легитимных (нормальных). Лишь 492 (0,2 %) транзакции в датасете являются мошенническими, этого маловато, но может хватить для какого-нибудь обучения с учителем.

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

Сценарий 1: машинное обучение с учителем — случайный лес

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

Подготовка информации

Обычно сюда входят:

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

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

Мы можем разделить наш массив информации на два таких датасета. Для всех классифицирующих алгоритмов с учителем требуется обучающий и тестовый датасеты. Мы разделим в соотношении 70 % и 30 %: большая часть исходных данных будет использоваться для обучения, а остаток — для проверки работы получившейся модели. Обычно их пропорции варьируются в диапазоне от 80 % — 20 % до 60 % — 40 %.

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

Обучение модели

Мы можем воспользоваться любым алгоритмом с учителем. Возьмём случайный лес со 100 деревьями. Каждое дерево обучено на глубину до 10 уровней, имеет не более трёх образцов на каждый узел. Алгоритм использует прирост информации (information gain ratio) для оценки критерия разделения (split criterion).

Оценка модели: принятие информированного решения

После обучения модели нужно оценить её работу на тестовом датасете. Можно использовать классические метрики оценки, такие как чувствительность и специфичность, либо каппа-коэффициент (Cohen’s Kappa). Все измерения основаны на прогнозах, сделанных моделью. В большинстве инструментов для анализа данных модели генерируют прогнозы на основе классов с наибольшей вероятностью. В задаче бинарной классификации это эквивалентно использованию по умолчанию порога в 0,5 для вероятностей одного из классов.

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

Им соответствуют каппа-коэффициенты 0,89 и 0,898, полученные на субдискретизированном датасете с одинаковым количеством легитимных и мошеннических транзакций. На иллюстрации 1 приведены матрицы ошибок (confusion matrix), полученные при порогах в 0,5 (слева) и 0,3 (справа). Как видите, снижение порога для мошеннических транзакций привело к ложной классификации нескольких легитимных транзакций, однако мы корректно определили больше мошеннических.

В матрицах ошибок class 0 соответствует легитимным транзакциям, 1 — мошенническим.
Иллюстрация 1. При снижении порога до 0,3 мы корректно определи на 6 мошеннических транзакций больше.

Гиперпараметрическая оптимизация

Как и во всех классификационных решениях, для завершения цикла обучения можно оптимизировать параметры модели. Для случайного леса это означает поиск оптимального количества деревьев и их глубины, чтобы получить оптимальное качество классификации (D. Goldmann, "Stuck in the Nine Circles of Hell? Try Parameter Optimization and a Cup of Tea"; KNIME Blog, 2018, Hyperparameter optimization). Также можно оптимизировать порог прогнозирования.

Мы запустили процесс "Fraud Detection: Model Training" на open source платформе KNIME Analytics Platform. Мы воспользовались очень простым процессом обучения всего с несколькими узлами (иллюстрация 2): считывание, разделение на обучающий и тестовый наборы, обучение случайного леса, генерирование прогноза, применение порога и оценка качества.

Этот процесс считывает датасет и делит его на обучающий и тестовый наборы.
Иллюстрация 2. Затем обучает случайный лес, применяет получившуюся модель к тестовому набору и оценивает качество её работы при порогах в 0,3 и 0,5.

Развёртывание

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

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

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

Сценарий 2: обнаружение аномалий с помощью автокодировщика

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

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

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

Нейронная архитектура автокодировщика

Как показано на иллюстрации 4, автокодировщик представляет собой нейросеть прямого распространения, обученную с помощью обратного распространения ошибки. Сеть содержит входной и выходной слои, каждый из которых состоит из $n$ узлов. Между ними находится один или несколько скрытых слоёв, а в середине — самый маленький слой, состоящий из $h$ узлов ($h < n$). Идея в том, чтобы научить нейросеть воспроизводить входной вектор x в виде выходного вектора $x'$.

После развёртывания автокодировщик будет воспроизводить входной $x$ в виде выходного $x{}'$, причём для мошеннических транзакций (аномалий) результат будет не оптимальным. Автокодировщик обучается только на образцах одного или двух классов, в нашем случае это легитимные транзакции. Разницу между $x$ и $x{}'$ можно оценить через измерение расстояния:

$d(x,x{}'):=\frac{1}{n}\sum_{i=1}^{n}(x_{i}-x_{i}{}')^{2}$

Финальное решение, является ли транзакция легитимной или мошеннической, применяется на основе применения порогового значения $\delta$ к расстоянию $d(x,x{}')$. Транзакция $x$ является кандидатом в мошенники в соответствии с правилом определения аномалий:

$x\rightarrow "normal"IF d(x,x{}')\leq \delta$

$x\rightarrow "fraud"IF d(x,x{}')> \delta$


Иллюстрация 4. Здесь показана возможная сетевая структура автокодировщик. В данном случае пять входных узлов и три скрытых слоя с тремя, двумя и тремя узлами соответственно. Выходной $x{}'$ содержит пять узлов, как и входной. Для определения аномалий — мошеннических транзакций — можно использовать расстояние между входным $x$ и выходным $x{}'$.

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

Давайте рассмотрим разные стадии процесса.

Подготовка данных

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

Но он уже очищен и готов к использованию. Обычно данные нужно готовить в обучающем датасете. Необходимо лишь выполнить такой шаг: нормализовать входные векторы, чтобы они укладывались в [0,1]. Никакой дополнительной подготовки не требуется.

Создание и обучение автокодировщик

Архитектура сети-автокодировщик определяется как 30-14-7-7-30. В ней применяются функции активации tanh и ReLU, а также регуляризатор активности L1 = 0,0001, как предложено в посте "Credit Card Fraud Detection using Autoencoders in Keras — TensorFlow for Hackers (Part VII)". Параметр L1 является ограничением разреженности (sparsity constraint), снижающим вероятность переобучения нейросети.

070, 0. Алгоритм обучается до тех пор, пока финальные значения потерь не уложатся в диапазон [0. 071] в соответствии с loss-функцией в виде среднеквадратичной ошибки:

$MSE=\frac{1}{n}\sum_{i=1}^{N}\sum_{j=1}^{n}(x_{ij}{}'-x_{ij})^2$

где $N$ — размер пакета, а $n$ — количество узлов во входном и выходном слое.

В качестве обучающего алгоритма возьмём Adam — оптимизированную версию метода обратного распределения ошибки. Зададим 50 эпох обучения, размер пакета тоже сделаем равным 50. После обучения сохраним нейросеть в виде Keras-файла.

Оценка модели: принятие информированного решения

Значение loss-функции не даёт нам всей полноты картины. Оно лишь говорит нам, насколько хорошо нейросеть можно воспроизводить «нормальные» входные данные в выходном слое. Чтобы получить полное представление о качестве обнаружения мошеннических транзакций, нужно применить к тестовым данным упомянутое выше правило обнаружения аномалий.

Начинать можно с последнего значения loss-функции в конце фазы обучения. Для этого нужно определить порог $\delta$ для срабатывания предупреждения. Мы использовали $\delta = 0,009$, но, как уже говорилось, этот параметр можно настроить в зависимости от ваших требований к консервативности нейросети.

На иллюстрации 5 показана оценка работы нейросети на тестовой выборке, выполненная с помощью измерения расстояний.

Здесь показан оценка работы автокодировщик — матрица ошибок и каппа-коэффициент.
Иллюстрация 5. 0 обозначает легитимные транзакции, 1 — мошеннические.

Скачать весь процесс можно здесь: Keras Autoencoder for Fraud Detection Training. В результате получился такой процесс: собираем нейронный автокодировщик, делим данные на обучающую и тестовую выборку, нормализуем данные перед подачей в нейросеть, обучаем нейросеть, прогоняем через неё тестовые данные, вычисляем расстояние $d(x,x{}')$, применяем пороговое значение $\delta$ и оцениваем результат.

Считываем датасет и разбиваем его на две выборки: 90 % легитимных транзакций в обучающей и остальные 10 % + все мошеннические транзакции в тестовой.
Иллюстрация 6. После нормализации данных обучаем автокодировщик и оцениваем его работу. Нейросеть-автокодировщик определяется в левой верхней части схемы.

Развёртывание

Обратите внимание, что сама нейросеть и пороговое правило были развёрнуты в REST-приложении, которое принимает входные данные из REST-запроса и генерирует прогноз в REST-ответе.

Ниже показан процесс развёртывания, скачать его можно здесь: Keras Autoencoder for Fraud Detection Deployment.

Исполнение этого процесса можно запустить из любого приложения, отправив новую транзакцию в REST-запросе.
Иллюстрация 7. Процесс считывает и применяет модель к входным данным, а затем отправляет ответ с прогнозом: 0 для легитимной транзакции или 1 для мошеннической.

Обнаружение отклонений: изолирующий лес

При отсутствии образцов мошенничества может применяться ещё одна группа стратегий, основанная на методиках обнаружения отклонений. Мы выбрали изолирующий лес (M. Widmann and M. Heine, "Four Techniques for Outlier Detection," KNIME Blog, 2019).

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

С помощью рекурсивного применения этой процедуры разделения генерируется дерево. Алгоритм случайным образом выбирает признак, а затем случайным образом выбирает значение из диапазона этого признака в качестве разделителя (split value). Уровень изоляции (его часто называют средней длиной (mean length)), усреднённый по лесу таких случайных деревьев, является мерой нормальности и нашей функцией принятия решений для обнаружения отклонений. Глубину дерева определяет количество необходимых случайных разделений (уровень изоляции) для изолирования образца. Следовательно, если лес случайных деревьев для определённого образца генерирует более короткие пути, то это наверняка отклонение. Случайное партиционирование делает деревья для отклонений существенно короче, а для нормальных образцов — длиннее.

Подготовка данных

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

Обучение и применение изолирующего леса

Мы обучили лес из 100 деревьев с максимальной глубиной 8 и для каждой транзакции вычислили средний уровень изоляции по всем деревьям в лесу.

Оценка модели: принятие информированного решения

Помните, что средний уровень изоляции для отклонений ниже, чем для других единиц данных. Мы приняли порог $\delta=6$. Следовательно, транзакция считается мошеннической, если средний уровень изоляции будет ниже этого значения. Как и в двух предыдущих примерах, значение порога можно выбирать в зависимости от желаемой чувствительности модели.

Финальный процесс, который можно скачать отсюда, показан на иллюстрации 9. Эффективность этого подхода на тестовой выборке показана на иллюстрации 8.

Оценка эффективности изолирующего леса на том же тестовом наборе, который использовался для автокодировщика.
Иллюстрация 8.

Этот процесс считывает датасет, создаёт обучающую и тестовую выборку и преобразует их в H2O Frame.
Иллюстрация 9. Затем обучает изолирующий лес и применяет модель к тестовому набору, чтобы найти отклонения с помощью уровня изоляции для каждой транзакции.

Развёртывание

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

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

Резюме

Обнаружение мошенничества — это обширное направление исследований в сфере анализа данных. Мы описали два возможных сценария в зависимости от доступного датасета: либо с образцами легитимных и мошеннических транзакций, либо совсем без мошеннических (с пренебрежимо малым количеством).

Это рекомендованный подход. В первом случае мы предложили классический подход на основе алгоритма машинного обучения с учителем, с выполнением всех шагов, принятых в проектах по анализу данных и описанных в процессе CRISP-DM process. В частности, мы реализовали классификатор на основе случайного леса.

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

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

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

Теги
Показать больше

Похожие статьи

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

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

Кнопка «Наверх»
Закрыть