Виявляйте шахрайські транзакції за допомогою машинного навчання за допомогою Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Виявляйте шахрайські транзакції за допомогою машинного навчання за допомогою Amazon SageMaker

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

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

У цій публікації ми покажемо вам, як побудувати динамічну систему виявлення шахрайства з кредитними картками, що самовдосконалюється та придатну для обслуговування, за допомогою машинного навчання (ML) Amazon SageMaker.

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

Огляд рішення

Це рішення створює ядро ​​системи виявлення шахрайства з кредитними картками за допомогою SageMaker. Ми починаємо з навчання моделі виявлення аномалій без нагляду за допомогою алгоритму Випадковий ліс (RCF). Потім ми навчаємо дві контрольовані моделі класифікації за допомогою алгоритму XGBoost, один як базова модель, а інший для прогнозування, використовуючи різні стратегії для вирішення надзвичайного дисбалансу класів у даних. Нарешті, ми тренуємо оптимальну модель XGBoost гіперпараметрична оптимізація (HPO) для подальшого покращення продуктивності моделі.

Для зразка набору даних ми використовуємо загальнодоступні анонімні транзакції кредитних карток набору даних який спочатку був випущений як частина a дослідження співпраця Worldline і Група машинного навчання ULB (Université Libre de Bruxelles). У покроковому керівництві ми також обговорюємо, як ви можете налаштувати рішення для використання ваших власних даних.

Результати рішення такі:

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

Щоб продемонструвати, як можна використовувати це рішення у вашій існуючій бізнес-інфраструктурі, ми також надаємо приклад здійснення викликів API REST до кінцевої точки розгорнутої моделі за допомогою AWS Lambda щоб запускати моделі RCF і XGBoost.

Наступна діаграма ілюструє архітектуру рішення.

Передумови

Щоб випробувати рішення у власному обліковому записі, переконайтеся, що у вас є наступне:

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

Запустіть рішення

Щоб запустити рішення, виконайте такі дії:

  1. Відкрийте JumpStart за допомогою засобу запуску JumpStart у Розпочати або вибравши піктограму JumpStart на лівій бічній панелі.
  2. під Рішеннявиберіть Виявляти зловмисних користувачів і транзакції щоб відкрити рішення в іншій вкладці Studio.
    Знайдіть рішення
  3. На вкладці рішення виберіть Запуск щоб запустити рішення.
    Запустіть рішення
    Ресурси рішення надано, і відкриється інша вкладка, на якій показано хід розгортання. Коли розгортання завершено, an Відкрийте Блокнот з'являється кнопка.
  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 — це сучасний алгоритм виявлення аномалій, який є водночас точним і масштабованим. З кожним прикладом даних RCF пов’язує оцінку аномалії.

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

По-перше, ми розглядаємо та малюємо передбачувані показники аномалій для позитивних (шахрайських) і негативних (не шахрайських) прикладів окремо, оскільки кількість позитивних і негативних прикладів значно відрізняється. Ми очікуємо, що позитивні (шахрайські) приклади матимуть відносно високі бали аномалії, а негативні (не шахрайські) матимуть низькі бали аномалії. З гістограм можна побачити такі закономірності:

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

Прогнозовані бали аномалії

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

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

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

. RCF
Збалансована точність 0.560023
Каппа Коена 0.003917
F1 0.007082
РПЦ AUC -

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

Навчіть модель XGBoost за допомогою вбудованої схеми зважування

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

Ми навчаємо та розгортаємо нашу першу керовану модель за допомогою контейнера алгоритму XGBoost, вбудованого в SageMaker. Це наша базова модель. Щоб впоратися з дисбалансом даних, ми використовуємо гіперпараметр 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
РПЦ AUC - 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 через an Amazon Kinesis Data Firehose потік доставки. Ви можете знайти назву сегмента призначення 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
РПЦ AUC - 0.983515 0.967497

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

Експериментуйте з різними пороговими значеннями, щоб відновити баланс між показниками

Це додає корисне калібрування до нашої моделі. Ми можемо використовувати низький поріг, якщо нашим пріоритетом є не пропускати випадки шахрайства (хибнонегативні результати), або ми можемо підвищити поріг, щоб мінімізувати кількість помилкових спрацьовувань.

Навчіть оптимальну модель XGBoost за допомогою HPO

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

Для процесу HPO потрібен набір даних перевірки, тому ми спочатку додатково розділили наші дані навчання на набори даних навчання та перевірки за допомогою стратифікований відбір проб. Щоб вирішити проблему дисбалансу даних, ми знову використовуємо схему зважування XGBoost, встановлюючи scale_pos_weight гіперпараметр до sqrt(num_nonfraud/num_fraud).

Ми створюємо оцінювач XGBoost за допомогою вбудованого в SageMaker контейнера алгоритму XGBoost і вказуємо метрику об’єктивної оцінки та діапазони гіперпараметрів, у яких ми хочемо експериментувати. З ними ми потім створюємо a HyperparameterTuner і почати роботу з налаштування HPO, яка паралельно навчає кілька моделей, шукаючи оптимальні комбінації гіперпараметрів.

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

Список інформації про кожну модель із завдання налаштування

Потім ми розгортаємо найкращу модель і оцінюємо її за допомогою нашого тестового набору даних.

Оцініть і порівняйте продуктивність усіх моделей на тих самих тестових даних

Тепер у нас є результати оцінки всіх чотирьох моделей: RCF, XGBoost baseline, XGBoost with SMOTE і XGBoost with 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
РПЦ AUC - 0.983515 0.967497 0.981564

Ми бачимо, що XGBoost із HPO досягає навіть кращої продуктивності, ніж із методом SMOTE. Зокрема, показник Каппа Коена та F1 перевищують 0.8, що вказує на оптимальну продуктивність моделі.

Прибирати

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

Очистіть, видаливши розчин

Крім того, ви можете використовувати AWS CloudFormation щоб видалити всі стандартні ресурси, автоматично створені рішенням і блокнотом. Щоб скористатися цим підходом, на консолі AWS CloudFormation знайдіть стек CloudFormation, опис якого містить виявлення шахрайства за допомогою машинного навчання, і видаліть його. Це батьківський стек, і вибір видалення цього стека призведе до автоматичного видалення вкладених стеків.

Очищення через CloudFormation

За будь-якого підходу вам усе одно доведеться вручну видалити будь-які додаткові ресурси, які ви могли створити в цьому блокноті. Деякі приклади включають додаткові відра S3 (на додаток до відра рішення за замовчуванням), додаткові кінцеві точки SageMaker (з використанням спеціальної назви) та додаткові Реєстр контейнерів Amazon Elastic (Amazon ECR) репозиторії.

Висновок

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

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


Про авторів

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

Виявляйте шахрайські транзакції за допомогою машинного навчання за допомогою Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Доктор Синь Хуан є прикладним науковцем для вбудованих алгоритмів Amazon SageMaker JumpStart і Amazon SageMaker. Він зосереджується на розробці масштабованих алгоритмів машинного навчання. Його наукові інтереси пов’язані з обробкою природної мови, глибоким вивченням табличних даних та надійним аналізом непараметричної просторово-часової кластеризації. Він опублікував багато робіт у конференціях ACL, ICDM, KDD та журналі Royal Statistical Society: Series A.

Виявляйте шахрайські транзакції за допомогою машинного навчання за допомогою Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Ведант джайн є старшим архітектором спеціалістів з AI/ML, який допомагає клієнтам отримувати користь від екосистеми машинного навчання в AWS. До того, як приєднатися до AWS, Vedant обіймав посади спеціальності ML/Data Science Speciality в різних компаніях, таких як Databricks, Hortonworks (тепер Cloudera) і JP Morgan Chase. Крім своєї роботи, Ведант захоплюється музикою, використовуючи науку, щоб вести змістовне життя та досліджуючи смачну вегетаріанську кухню з усього світу.

Часова мітка:

Більше від AWS Машинне навчання