Обнаруживайте мошеннические транзакции с помощью машинного обучения с помощью Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Обнаружение мошеннических транзакций с помощью машинного обучения с помощью Amazon SageMaker

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

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

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

В качестве альтернативы, если вы ищете полностью управляемый сервис для создания настраиваемых моделей обнаружения мошенничества без написания кода, мы рекомендуем проверить Амазон детектор мошенничества. Amazon Fraud Detector позволяет клиентам, не имеющим опыта машинного обучения, автоматизировать создание моделей обнаружения мошенничества, настроенных для их данных, используя более чем 20-летний опыт обнаружения мошенничества от AWS и Amazon.com.

Обзор решения

Это решение создает ядро ​​системы обнаружения мошенничества с кредитными картами с использованием SageMaker. Начнем с обучения модели обнаружения аномалий без учителя с использованием алгоритма Случайный вырезанный лес (RCF). Затем мы обучаем две модели классификации с учителем, используя алгоритм XGBoost, один в качестве базовой модели, а другой для прогнозирования с использованием различных стратегий для устранения экстремального дисбаланса классов в данных. Наконец, мы обучаем оптимальную модель XGBoost с оптимизация гиперпараметров (HPO) для дальнейшего улучшения характеристик модели.

Для примера набора данных мы используем общедоступные анонимные транзакции по кредитным картам. Набор данных который был первоначально выпущен как часть исследованиям сотрудничество Worldline и Группа машинного обучения ULB (Свободный университет Брюсселя). В пошаговом руководстве мы также обсудим, как можно настроить решение для использования собственных данных.

Результаты решения следующие:

  • неконтролируемый SageMaker RCF модель. Модель выводит оценку аномалии для каждой транзакции. Низкое значение оценки указывает на то, что транзакция считается нормальной (не мошеннической). Высокое значение указывает на то, что транзакция является мошеннической. Определения низкого и высокого уровня зависят от приложения, но обычная практика предполагает, что баллы, превышающие три стандартных отклонения от среднего балла, считаются аномальными.
  • Контролируемый SageMaker XGBoost модель, обученная с использованием встроенной схемы взвешивания для решения проблемы сильно несбалансированных данных.
  • Контролируемая модель SageMaker XGBoost, обученная с использованием Техника передискретизации синтетического меньшинства (СМОТ).
  • Обученная модель SageMaker XGBoost с HPO.
  • Прогнозы вероятности мошенничества для каждой транзакции. Если предполагаемая вероятность транзакции превышает пороговое значение, она классифицируется как мошенническая.

Чтобы продемонстрировать, как вы можете использовать это решение в существующей бизнес-инфраструктуре, мы также включили пример выполнения вызовов REST API к конечной точке развернутой модели с использованием AWS Lambda для запуска моделей RCF и XGBoost.

Следующая диаграмма иллюстрирует архитектуру решения.

Предпосылки

Чтобы опробовать решение в своей учетной записи, убедитесь, что у вас есть следующее:

Когда экземпляр Studio будет готов, вы можете запустить Studio и получить доступ к JumpStart. Решения JumpStart недоступны в экземплярах ноутбуков SageMaker, и вы не можете получить к ним доступ через SageMaker API или Интерфейс командной строки AWS (Интерфейс командной строки AWS).

Запустить решение

Чтобы запустить решение, выполните следующие действия:

  1. Откройте JumpStart с помощью программы запуска JumpStart в Свяжитесь с нами! или выбрав значок JumpStart на левой боковой панели.
  2. Под Решения, выберите Обнаружение вредоносных пользователей и транзакций чтобы открыть решение на другой вкладке Studio.
    Найти решение
  3. На вкладке решение выберите Презентация для запуска решения.
    Запустить решение
    Ресурсы решения предоставлены, и открывается другая вкладка, показывающая ход развертывания. Когда развертывание завершено, Открыть блокнот появляется кнопка.
  4. Выберите Открыть блокнот чтобы открыть блокнот решений в Studio.
    Открыть блокнот

Исследуйте и обрабатывайте данные

Набор данных по умолчанию содержит только числовые признаки, поскольку исходные признаки были преобразованы с использованием Анализ главных компонентов (PCA) для защиты конфиденциальности пользователей. В результате набор данных содержит 28 компонентов PCA, V1–V28, и два объекта, которые не были преобразованы, «Количество» и «Время». Сумма относится к сумме транзакции, а время — к секундам, прошедшим между любой транзакцией в данных и первой транзакцией.

Столбец Класс соответствует тому, является ли транзакция мошеннической.

Образец данных

Мы видим, что большинство не являются мошенническими, потому что из общего числа 284,807 492 примеров только 0.173 (XNUMX%) являются мошенническими. Это случай крайнего дисбаланса классов, который часто встречается в сценариях обнаружения мошенничества.

Дисбаланс классов данных

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

Если вы хотите внести свои данные о тренировках, убедитесь, что это табличные данные в формате CSV, загрузите данные в Простой сервис хранения Amazon (Amazon S3) и отредактируйте путь к объекту S3 в коде записной книжки.

Путь данных в S3

Если ваши данные включают категориальные столбцы с нечисловыми значениями, вам необходимо сразу закодировать эти значения (используя, например, OneHotEncoder от Sklearn), потому что алгоритм XGBoost поддерживает только числовые данные.

Обучите неконтролируемую модель Random Cut Forest

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

Обнаружение аномалий — это форма обучения без учителя, при которой мы пытаемся идентифицировать аномальные примеры, основываясь исключительно на их характеристиках. Random Cut Forest — это современный алгоритм обнаружения аномалий, который является точным и масштабируемым. С каждым примером данных RCF связывает показатель аномалии.

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

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

  • Почти половина положительных примеров (левая гистограмма) имеет оценки аномалий выше 0.9, тогда как большинство отрицательных примеров (правая гистограмма) имеют оценки аномалий ниже 0.85.
  • Алгоритм неконтролируемого обучения RCF имеет ограничения для точного определения мошеннических и не мошеннических примеров. Это связано с тем, что информация о метках не используется. Мы решаем эту проблему, собирая информацию о метках и используя алгоритм обучения с учителем на более поздних этапах.

Прогнозируемые показатели аномалий

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

Гистограмма баллов для тестовых образцов

Наконец, мы сравниваем результат классификации с метками истинности и вычисляем метрики оценки. Поскольку наш набор данных несбалансирован, мы используем метрики оценки сбалансированная точность, Каппа-счет Коэна, Счет F1и РПЦ АУК, потому что они учитывают частоту каждого класса в данных. Для всех этих показателей большее значение указывает на лучшую производительность прогнозирования. Обратите внимание, что на этом шаге мы еще не можем вычислить ROC AUC, потому что нет расчетной вероятности для положительных и отрицательных классов из модели RCF для каждого примера. Мы вычисляем эту метрику на более поздних этапах, используя алгоритмы обучения с учителем.

. RCF
Сбалансированная точность 0.560023
Каппа Коэна 0.003917
F1 0.007082
РПЦ АУК

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

Обучите модель XGBoost со встроенной схемой взвешивания

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

Мы обучаем и развертываем нашу первую контролируемую модель с помощью встроенного в SageMaker контейнера алгоритмов XGBoost. Это наша базовая модель. Чтобы справиться с дисбалансом данных, мы используем гиперпараметр scale_pos_weight, который сопоставляет веса положительных примеров классов с отрицательными примерами классов. Поскольку набор данных сильно искажен, мы устанавливаем этому гиперпараметру консервативное значение: sqrt(num_nonfraud/num_fraud).

Мы обучаем и развертываем модель следующим образом:

  1. Получите URI контейнера SageMaker XGBoost.
  2. Установите гиперпараметры, которые мы хотим использовать для обучения модели, в том числе тот, который мы упомянули, который обрабатывает дисбаланс данных, scale_pos_weight.
  3. Создайте оценщик XGBoost и обучите его с помощью нашего набора данных поездов.
  4. Разверните обученную модель XGBoost на конечной точке, управляемой SageMaker.
  5. Оцените эту базовую модель с помощью нашего тестового набора данных.

Затем мы оцениваем нашу модель с теми же четырьмя метриками, что и на последнем шаге. На этот раз мы также можем рассчитать показатель ROC AUC.

. RCF XGBoost
Сбалансированная точность 0.560023 0.847685
Каппа Коэна 0.003917 0.743801
F1 0.007082 0.744186
РПЦ АУК 0.983515

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

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

Матрица путаницы модели XGBoost

. точность вспоминать f1-счет поддержка
без мошенничества 1.00 1.00 1.00 28435
мошенничество 0.80 0.70 0.74 46

Продолжайте отправлять тестовый трафик на конечную точку через Lambda

Чтобы продемонстрировать, как использовать наши модели в производственной системе, мы создали REST API с Шлюз API Amazon и лямбда-функция. Когда клиентские приложения отправляют HTTP-запросы на вывод в REST API, который запускает функцию Lambda, которая, в свою очередь, вызывает конечные точки моделей RCF и XGBoost и возвращает прогнозы из моделей. Вы можете прочитать код функции Lambda и отслеживать вызовы на консоли Lambda.

Мы также создали скрипт Python, который отправляет HTTP-запросы логического вывода к REST API, используя наши тестовые данные в качестве входных данных. Чтобы увидеть, как это было сделано, проверьте generate_endpoint_traffic.py файл в исходном коде решения. Выходные данные прогноза регистрируются в корзине S3 через Пожарный шланг данных Amazon Kinesis поток доставки. Имя целевой корзины S3 можно найти в консоли Kinesis Data Firehose и проверить результаты прогноза в корзине S3.

Обучите модель XGBoost с помощью метода передискретизации SMOTE

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

Эти шаги заключаются в следующем:

  1. Используйте SMOTE для передискретизации класса меньшинства (мошеннического класса) нашего набора данных поезда. SMOTE увеличивает выборку класса меньшинств примерно от 0.17 до 50%. Обратите внимание, что это случай крайней передискретизации класса меньшинства. В качестве альтернативы можно было бы использовать меньший коэффициент повторной выборки, например, иметь одну выборку класса меньшинства для каждого sqrt(non_fraud/fraud) мажоритарная выборка или использование более продвинутых методов повторной выборки. Дополнительные параметры избыточной выборки см. Сравните сэмплеры с избыточной выборкой.
  2. Определите гиперпараметры для обучения второго XGBoost, чтобы удалить scale_pos_weight, а другие гиперпараметры остались такими же, как при обучении базовой модели XGBoost. Нам больше не нужно обрабатывать дисбаланс данных с помощью этого гиперпараметра, потому что мы уже сделали это с помощью SMOTE.
  3. Обучите вторую модель XGBoost с новыми гиперпараметрами в наборе данных поезда, обработанном SMOTE.
  4. Разверните новую модель XGBoost на управляемой конечной точке SageMaker.
  5. Оцените новую модель с помощью тестового набора данных.

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

. RCF XGBoost XGBoost SMOTE
Сбалансированная точность 0.560023 0.847685 0.912657
Каппа Коэна 0.003917 0.743801 0.716463
F1 0.007082 0.744186 0.716981
РПЦ АУК 0.983515 0.967497

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

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

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

Обучите оптимальную модель XGBoost с помощью HPO

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

Процессу HPO требуется набор данных проверки, поэтому мы сначала разделяем наши данные обучения на наборы данных обучения и проверки, используя стратифицированная выборка. Чтобы решить проблему дисбаланса данных, мы снова используем схему взвешивания XGBoost, установив scale_pos_weight гиперпараметр к sqrt(num_nonfraud/num_fraud).

Мы создаем оценщик XGBoost, используя встроенный в SageMaker контейнер алгоритма XGBoost, и указываем объективную метрику оценки и диапазоны гиперпараметров, в которых мы хотели бы поэкспериментировать. С ними мы затем создаем Гиперпараметртюнер и запустите работу по настройке HPO, которая параллельно обучает несколько моделей в поисках оптимальных комбинаций гиперпараметров.

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

Список информации о каждой модели из задания по настройке

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

Оценивайте и сравнивайте производительность всех моделей на одних и тех же тестовых данных.

Теперь у нас есть результаты оценки всех четырех моделей: RCF, базовая линия XGBoost, XGBoost с SMOTE и XGBoost с HPO. Давайте сравним их производительность.

. RCF XGBoost XGBoost со SMOTE XGBoost с HPO
Сбалансированная точность 0.560023 0.847685 0.912657 0.902156
Каппа Коэна 0.003917 0.743801 0.716463 0.880778
F1 0.007082 0.744186 0.716981 0.880952
РПЦ АУК 0.983515 0.967497 0.981564

Мы видим, что XGBoost с HPO обеспечивает даже лучшую производительность, чем метод SMOTE. В частности, показатели Каппа Коэна и F1 превышают 0.8, что указывает на оптимальную производительность модели.

Убирать

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

Очистить, удалив решение

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

Очистка через CloudFormation

При любом подходе вам все равно придется вручную удалять все дополнительные ресурсы, которые вы могли создать в этой записной книжке. Некоторые примеры включают дополнительные корзины S3 (в дополнение к корзине решения по умолчанию), дополнительные конечные точки SageMaker (с использованием пользовательского имени) и дополнительные Реестр Amazon Elastic Container (Amazon ECR) репозитории.

Заключение

В этом посте мы показали вам, как создать ядро ​​динамической, самосовершенствующейся и удобной в сопровождении системы обнаружения мошенничества с кредитными картами с помощью машинного обучения с помощью SageMaker. Мы создали, обучили и развернули неконтролируемую модель обнаружения аномалий RCF, контролируемую модель XGBoost в качестве базовой, еще одну контролируемую модель XGBoost с SMOTE для решения проблемы дисбаланса данных и окончательную модель XGBoost, оптимизированную с помощью HPO. Мы обсудили, как справляться с дисбалансом данных и использовать собственные данные в решении. Мы также включили пример реализации REST API с API Gateway и Lambda, чтобы продемонстрировать, как использовать систему в существующей бизнес-инфраструктуре.

Чтобы попробовать сами, откройте Студия SageMaker и запустите решение JumpStart. Чтобы узнать больше о решении, ознакомьтесь с его Репозиторий GitHub.


Об авторах

Сяоли ШенСяоли Шен является архитектором решений и членом сообщества технических специалистов по машинному обучению (TFC) в Amazon Web Services. Она сосредоточена на том, чтобы помогать клиентам создавать архитектуру в облаке и использовать сервисы AWS для извлечения выгоды для бизнеса. До прихода в AWS она была техническим руководителем и старшим инженером полного цикла по созданию распределенных систем с интенсивным использованием данных в облаке.

Обнаруживайте мошеннические транзакции с помощью машинного обучения с помощью Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Доктор Синь Хуан — научный сотрудник Amazon SageMaker JumpStart и встроенных алгоритмов Amazon SageMaker. Он занимается разработкой масштабируемых алгоритмов машинного обучения. Его исследовательские интересы лежат в области обработки естественного языка, объяснимого глубокого обучения на табличных данных и надежного анализа непараметрической пространственно-временной кластеризации. Он опубликовал множество статей на конференциях ACL, ICDM, KDD и в журнале Royal Statistical Society: Series A.

Обнаруживайте мошеннические транзакции с помощью машинного обучения с помощью Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.ведант джайн — старший архитектор решений AI/ML, помогающий клиентам извлечь выгоду из экосистемы машинного обучения в AWS. До прихода в AWS Ведант занимал должности специалиста по машинному обучению/науке о данных в различных компаниях, таких как Databricks, Hortonworks (теперь Cloudera) и JP Morgan Chase. Вне своей работы Ведант увлечен созданием музыки, использует науку, чтобы вести осмысленную жизнь, и исследует вкусные вегетарианские блюда со всего мира.

Отметка времени:

Больше от Машинное обучение AWS