Компанії можуть втрачати мільярди доларів щороку через зловмисників і шахрайські операції. Оскільки все більше і більше бізнес-операцій переміщується в Інтернет, шахрайство та зловживання в онлайн-системах також зростають. Для боротьби з онлайн-шахрайством багато компаній використовують системи виявлення шахрайства на основі правил.
Однак традиційні системи виявлення шахрайства покладаються на набір правил і фільтрів, створених вручну фахівцями. Фільтри часто можуть бути крихкими, і правила можуть не вловлювати весь спектр шахрайських сигналів. Крім того, незважаючи на те, що шахрайська поведінка постійно розвивається, статична природа попередньо визначених правил і фільтрів ускладнює підтримку та ефективне вдосконалення традиційних систем виявлення шахрайства.
У цій публікації ми покажемо вам, як побудувати динамічну систему виявлення шахрайства з кредитними картками, що самовдосконалюється та придатну для обслуговування, за допомогою машинного навчання (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).
Запустіть рішення
Щоб запустити рішення, виконайте такі дії:
- Відкрийте JumpStart за допомогою засобу запуску JumpStart у Розпочати або вибравши піктограму JumpStart на лівій бічній панелі.
- під Рішеннявиберіть Виявляти зловмисних користувачів і транзакції щоб відкрити рішення в іншій вкладці Studio.
- На вкладці рішення виберіть Запуск щоб запустити рішення.
Ресурси рішення надано, і відкриється інша вкладка, на якій показано хід розгортання. Коли розгортання завершено, an Відкрийте Блокнот з'являється кнопка. - Вибирати Відкрийте Блокнот щоб відкрити блокнот розв’язків у Studio.
Дослідіть і обробіть дані
Набір даних за замовчуванням містить лише числові об’єкти, оскільки вихідні об’єкти були перетворені за допомогою Аналіз основних компонентів (PCA), щоб захистити конфіденційність користувачів. У результаті набір даних містить 28 компонентів PCA, V1–V28, і дві функції, які не були перетворені, кількість і час. Сума означає суму транзакції, а час – це секунди, що минули між будь-якою транзакцією в даних і першою транзакцією.
Стовпець «Клас» відповідає тому, чи є транзакція шахрайською.
Ми бачимо, що більшість не є шахрайськими, оскільки із загальних 284,807 492 прикладів лише 0.173 (XNUMX%) є шахрайськими. Це випадок екстремального дисбалансу класів, який часто зустрічається в сценаріях виявлення шахрайства.
Потім ми готуємо наші дані для завантаження та навчання. Ми розділили дані на набір тренувань і тестовий набір, використовуючи перший для навчання, а другий — для оцінки ефективності нашої моделі. Важливо розділити дані перед застосуванням будь-яких методів для усунення дисбалансу класів. Інакше ми можемо отримати витік інформації з тестового набору в набір поїздів і погіршити продуктивність моделі.
Якщо ви хочете ввести власні дані про навчання, переконайтеся, що це табличні дані у форматі CSV, завантажте дані в Служба простого зберігання Amazon (Amazon 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)
.
Ми навчаємо та розгортаємо модель наступним чином:
- Отримайте URI контейнера SageMaker XGBoost.
- Встановіть гіперпараметри, які ми хочемо використовувати для навчання моделі, включаючи той, який ми згадували, який обробляє дисбаланс даних,
scale_pos_weight
. - Створіть інструмент оцінки XGBoost і навчіть його за допомогою нашого набору даних поїздів.
- Розгорніть навчену модель XGBoost на керованій кінцевій точці SageMaker.
- Оцініть цю базову модель за допомогою нашого тестового набору даних.
Потім ми оцінюємо нашу модель за тими ж чотирма показниками, що й у попередньому кроці. Цього разу ми також можемо розрахувати показник 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 можуть надати більше інформації про продуктивність нашої моделі.
. | точність | згадувати | 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), який виконує передискретизацію класу меншості шляхом інтерполяції нових точок даних між існуючими.
Ці кроки є наступними:
- Використовуйте SMOTE, щоб збільшити вибірку меншості класу (шахрайського класу) нашого набору даних потягу. SMOTE надлишково вибирає клас меншості приблизно з 0.17–50%. Зверніть увагу, що це випадок екстремально надмірної вибірки класу меншини. Альтернативою було б використання меншого коефіцієнта повторної вибірки, наприклад мати одну вибірку класу меншин для кожного
sqrt(non_fraud/fraud)
мажоритарної вибірки або використання більш просунутих методів повторної вибірки. Додаткові параметри надмірної вибірки див Порівняйте семплери із надмірною вибіркою. - Визначте гіперпараметри для навчання другого XGBoost, щоб scale_pos_weight було видалено, а інші гіперпараметри залишилися такими ж, як і під час навчання базової моделі XGBoost. Нам більше не потрібно обробляти дисбаланс даних за допомогою цього гіперпараметра, оскільки ми вже зробили це за допомогою SMOTE.
- Навчіть другу модель XGBoost з новими гіперпараметрами в наборі даних поїзда, обробленого SMOTE.
- Розгорніть нову модель XGBoost на керованій кінцевій точці SageMaker.
- Оцініть нову модель за допомогою тестового набору даних.
Оцінюючи нову модель, ми бачимо, що за допомогою 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, опис якого містить виявлення шахрайства за допомогою машинного навчання, і видаліть його. Це батьківський стек, і вибір видалення цього стека призведе до автоматичного видалення вкладених стеків.
За будь-якого підходу вам усе одно доведеться вручну видалити будь-які додаткові ресурси, які ви могли створити в цьому блокноті. Деякі приклади включають додаткові відра 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 JumpStart і Amazon SageMaker. Він зосереджується на розробці масштабованих алгоритмів машинного навчання. Його наукові інтереси пов’язані з обробкою природної мови, глибоким вивченням табличних даних та надійним аналізом непараметричної просторово-часової кластеризації. Він опублікував багато робіт у конференціях ACL, ICDM, KDD та журналі Royal Statistical Society: Series A.
Ведант джайн є старшим архітектором спеціалістів з AI/ML, який допомагає клієнтам отримувати користь від екосистеми машинного навчання в AWS. До того, як приєднатися до AWS, Vedant обіймав посади спеціальності ML/Data Science Speciality в різних компаніях, таких як Databricks, Hortonworks (тепер Cloudera) і JP Morgan Chase. Крім своєї роботи, Ведант захоплюється музикою, використовуючи науку, щоб вести змістовне життя та досліджуючи смачну вегетаріанську кухню з усього світу.
- AI
- ai мистецтво
- AI арт генератор
- ai робот
- Amazon SageMaker
- Amazon SageMaker JumpStart
- штучний інтелект
- сертифікація штучного інтелекту
- штучний інтелект у банківській справі
- робот зі штучним інтелектом
- роботи зі штучним інтелектом
- програмне забезпечення для штучного інтелекту
- AWS Машинне навчання
- blockchain
- блокчейн конференція AI
- coingenius
- розмовний штучний інтелект
- крипто конференція ai
- dall's
- глибоке навчання
- у вас є гугл
- середній (200)
- навчання за допомогою машини
- plato
- платон ai
- Інформація про дані Платона
- Гра Платон
- PlatoData
- platogaming
- масштаб ai
- синтаксис
- Технічні інструкції
- зефірнет