Полный код вы можете найти здесь

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

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

Сбор данных

Я использовал набор данных Kaggle, который содержит 284807 транзакций. Этот набор данных представляет транзакции, которые произошли за два дня, где у нас есть 492 мошенничества из 284 807 транзакций. Набор данных сильно несбалансирован, на положительный класс (мошенничество) приходится 0,172% всех транзакций.

Исследовательский анализ данных

Изначально я хотел изучить столбцы данных Time, Amount и class.

Время записывается в секундах, а набор данных включает все транзакции, зарегистрированные в течение двух дней. Большая часть сделок происходила в дневное время. Подавляющее большинство транзакций являются относительно небольшими, и лишь малая часть приходится даже на максимальное значение. Большинство ежедневных транзакций не очень дороги (большинство из них стоит ‹ 50 долларов США), но, вероятно, именно здесь также происходит большинство мошеннических транзакций.

В «длинном хвосте» мошеннические операции происходили чаще. Кажется, было бы трудно отличить мошенничество от обычных транзакций только по сумме транзакции. Час «ноль» соответствует часу, когда произошла первая транзакция, и не обязательно 12:00–1:00. Учитывая резкое сокращение количества обычных транзакций с 1 до 8 часов и снова примерно с 24 до 32 часов, кажется, что мошенничество чаще происходит ночью. Для доказательства этого факта можно использовать статистические тесты.

Глядя на распределение классов, мы видим, что мошеннических транзакций всего 492. Это всего 0,173% всех транзакций в этом наборе данных!

Масштабирование функций

Как мы знаем из набора данных, функции V1-V28 были преобразованы с помощью PCA и уже масштабированы. В то время как функции «Время» и «Сумма» не имеют. А учитывая, что мы будем анализировать эти две особенности с другими V1-V28, их лучше масштабировать, прежде чем мы будем обучать нашу модель с помощью различных алгоритмов. Какой метод масштабирования мы должны использовать? Стандартный масштабатор не рекомендуется, поскольку функции «Время» и «Количество» обычно не распределяются. Также не рекомендуется использовать Min-Max Scaler, так как в функции «Сумма» есть заметные выбросы. Надежный скалер устойчив к выбросам: (xi–Q1(x))/(Q3(x)–Q1(x)) (Q1 и Q3 представляют 25 % и 75% квартили). Поэтому мы выбираем Robust Scaler для масштабирования этих двух функций.

Корреляционные матрицы

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

Модель построения

Я разделил набор данных на 70%-30% для обучения и тестирования, прежде чем создавать какие-либо модели. Еще одна проблема, которую необходимо решить, — это крайне несбалансированный набор данных. Существуют различные способы оценки и решения проблемы дисбаланса. Метод передискретизации синтетического меньшинства (SMOTE) является одним из методов передискретизации, решающих эту проблему. Основываясь на методе SMOTE, я использовал метод borderline-SMOTE для устранения дисбаланса моего набора данных. С этой настройкой я теперь готов запустить данные через некоторые модели. Прежде чем приступить к работе с тремя моделями логистической регрессии, DecisionTreeClassifier и RandomForestClassifier, я использовал конвейерный метод, чтобы упростить рабочий процесс.

Сводный результат трех моделей:

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

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

RandomForestClassifier зафиксировал 117 из 147 случаев мошенничества, и только 13 из них были ошибочно признаны обычной транзакцией мошеннической транзакцией.

Модель TensorFlow Keras

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

Я использовал функцию активации Relu для всех слоев для кодирования и сигмовидную функцию активации для декодирования вывода. Затем модель Keras была обучена оптимизатору Adam. В качестве функции потерь использовалась binary_crossenttropy, а модель обучалась на 100 эпохах, размер партии был равен 256.

Оценка модели

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

По окончании обучения из 85334 проверочных транзакций мы смогли правильно определить 82 мошеннические транзакции и пропустили 26 из них. Мы неправильно пометили 1552 законных транзакции.

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

Заключение

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

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