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

Контекст проекта.

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

Получение данных

Данные, которые мы использовали в этом проекте, были получены через платформу Kaggle, которая является конкурсной площадкой для специалистов по данным. В этом наборе данных, предоставленном европейскими администраторами кредитных карт, зарегистрированы транзакции, которые были проведены в течение двух дней в сентябре 2013 года. К сожалению, поскольку существует конфиденциальная информация, которая, следовательно, не может быть обнародована, большая часть данных была неправильно охарактеризована с использованием процесса, описанного ниже.
Этот набор данных содержит ровно 284 807 записей, из которых только 492, или примерно 0,17% от общего числа, являются мошенническими.

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

Словарь данных

CSV-файл, полученный через платформу Kaggle, имеет следующие столбцы (или переменные):

Time: время, прошедшее в секундах между текущей транзакцией и первой транзакцией набора данных;
Amount: Сумма транзакции. На странице описания набора данных на Kaggle не указано, какая валюта используется, но предполагается, что это евро, поскольку это финансовые транзакции, происходящие в Европе;
Class: Переменная ответа. Указывает тип сделки относительно ее легитимности. Когда он равен 0, это обычная транзакция; если 1, то мошеннический;
от V1 до V28: столбцы с числовыми значениями, которые в целях сохранения конфиденциальной информации были неверно охарактеризованы с помощью процесса, называемого АПК (анализ основных компонентов).

Процесс PCA

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

Знание структуры набора данных

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

Ниже представлена ​​структура набора данных и типы данных столбцов:

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

Как видите, процесс PCA не оставляет нулевых значений в столбцах, кроме того, их средние значения и медианы всегда близки к нулю. Согласно веб-сайту Kaggle, через PCA не прошли только Time и Amountстолбцов.

Профиль обычных и мошеннических транзакций

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

На верхнем левом графике можно увидеть четко определенную закономерность, которая касается объема транзакций, считающихся нормальными с точки зрения времени их совершения. Не сообщается ни время первой транзакции, ни рабочий день, ни выходной. Эти сделки, вероятно, были завершены в течение двух рабочих дней, учитывая схожую картину на двух половинах графика. Кроме того, первая транзакция должна была состояться около полуночи, когда объем транзакций падает, снова увеличиваясь с 6-го часа, уже начиная день. Что касается нелегитимных транзакций, то они вроде как следуют за обычными транзакциями, но это не так однозначно, возможно, из-за небольшого количества случаев такого рода. Что касается стоимости, то подавляющее большинство из них составляют мелкие покупки, даже мошеннические операции. Было необходимо удалить из гистограммы некоторые более высокие значения транзакций, чтобы гистограмма не отображалась почти исключительно на левом конце.
Диаграмма ниже позволяет визуализировать и сравнить типы транзакций с точки зрения вовлеченных сумм:

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

Проверка баланса данных

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

Анализ отношений между переменными

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

На приведенном выше графике синие области относятся к обычным транзакциям, а оранжевые — к незаконным транзакциям. Из приведенного выше графика видно, что переменные V3, V4, V11 и от V16до V19 ведут себя по-разному в зависимости от типа транзакции, и именно по этой причине они могут быть более полезными при обнаружении мошенничества. Переменные V15, V22 , V25и V26 ведут себя аналогично.
На этом мы закончили предварительный анализ данных. Теперь будет создана модель машинного обучения для обнаружения мошенничества с использованием предоставленных данных.

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

Разделение данных на наборы для обучения, тестирования и проверки

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

Столбцы «Стандартизация времени» и «Сумма»

Перед созданием нашей модели машинного обучения мы должны выполнить некоторые подготовительные процедуры для ее наилучшей производительности. Первое, что нужно сделать, это провести процесс стандартизации данных, чтобы в каждом столбце все значения имели среднее значение 0 и стандартное отклонение 1. Это будет сделано со столбцами, которые не прошли процесс PCA, или то есть столбцы Time и Amount . Для стандартизации используется следующая формула:

x: текущее значение столбца
μ: текущее среднее значение всех значений столбца
σ: текущее стандартное отклонение значений столбца

Для стандартизации классов будет использоваться класс StandardScaler из библиотеки Scikit Learn.

Балансировка данных

В науке о данных очень важно знать, как поступать с несбалансированными данными, так как полученные результаты могут привести к неправильной интерпретации. Возьмите этот набор данных в качестве примера, где мошенничество составляет крошечную часть от общего количества записей. Глупая модель, которая помечает все записи как законные транзакции, даст 99,8% правильных прогнозов! Поэтому важно сбалансировать данные.
Существует два метода балансировки данных. Один из них называется недостаточная выборка и заключается в исключении большинства данных. Другая называется избыточной выборкой, которая уравновешивает данные, создавая записи класса меньшинства. В этом проекте мы рассмотрим оба метода. Для балансировки данных использовалась библиотека Imbalanced-learn.

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

Метод передискретизации
Для этого метода использовался алгоритм под названием SMOTE (Synthetic Minority Over-sampling Technique), который генерирует фиктивные данные меньшинства на основе существующих с использованием K-ближайших Техника соседей. Чтобы проект не стал слишком обширным, использовалась только модель логистической регрессии, чтобы сравнить ее с этой же моделью, применяющей недостаточную выборку.

Применение моделей машинного обучения

Первоначальные соображения

Для измерения производительности моделей машинного обучения использовались следующие показатели:

· Точность: количество правильных прогнозов по отношению к общему количеству. Для несбалансированных данных это ненадежная мера. Формула: (TP+VF)/(TP+TN+FP+FN)*

· Точность: доля истинно положительных результатов от общего числа положительных прогнозов. Формула: TP/(TP+FP)

· Отзыв:доля истинно положительных результатов по отношению к общему количеству положительных записей. Формула: ТП/(ТП + FN). Это самая важная мера для нас, поскольку она измеряет способность обнаруживать мошенничество.

· Оценка F1:среднее гармоническое между точностью и отзывом. Формула = 2*точность*отзыв/(точность + отзыв)

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

Примечание: TP: истинно положительный. FP: ложноположительный, TN: истинно отрицательный, FN: ложноотрицательный

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

Тестирование моделей на проверочных данных

1. Логистическая регрессия с недостаточной выборкой
Сбалансированная модель логистической регрессии с недостаточной выборкой в среднем была верной для 89% всех мошеннических транзакций, но многие положительные прогнозы были ошибочными. Это отражается в очень низкой точности модели (менее 5%).

Конечный результат:
Точность: 96,5%. Точность: 4,5%. Напомним: 90,7%. Оценка F1: 0,085. ППК: 0,937

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

Конечный результат:
Точность: 96,9%. Точность: 4,5%. Напомним: 87,2%. Оценка F1: 0,087. ППК: 0,921

K-ближайшие соседи
Для этой модели были определены следующие гиперпараметры:

· Количество опрашиваемых соседей поблизости: 7

· Вес: расстояние — присваивает больший вес точкам, которые находятся ближе:

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

Окончательный результат :
Точность: 98,4%. Точность: 8,5%. Напомним: 88,2%. Оценка F1: 0,155. ППК: 0,932

Дерево решений
Эта модель имела самую низкую точность и наихудшую точность (менее 3%). Однако именно это правильно определило положительные результаты (92,3%).

Конечный результат:
Точность: 94,3%. Точность: 2,9%. Напомним: 92,2%. Оценка F1: 0,055. ППК: 0,923

Логистическая регрессия с избыточной выборкой
Техника избыточной выборки значительно снизила количество ложноотрицательных результатов, так что точность этой модели составила 97 %, а полнота был практически идентичен модели дерева решений (92,2%), немного выше, чем модель логистической регрессии с недостаточной выборкой (90,8%).

Конечный результат:
Точность: 94,6%. Точность: 97,0%. Напомним: 92,2%. Оценка F1: 0,945. ППК: 0,946

Применение моделей машинного обучения к исходным тестовым данным

Ранее мы говорили, что данные были разбиты на три группы: обучение, валидация и тестирование. До сих пор были проведены тесты на проверочных данных. Пришло время поработать с моделями на тестовых данных.

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

Конечный результат:
Точность: 96,5%. Точность: 4,5%. Напомним: 92,6%. Оценка F1: 0,086. ППК: 0,949

Логистическая регрессия с избыточной выборкой
При тестировании модели машинного обучения с использованием метода логистической регрессии с недостаточной выборкой возможность обнаружения мошеннических транзакций значительно улучшилась (94,6 %). ), но точность снова была плохой (менее 6%).

Конечный результат:
Точность: 97,3%. Точность: 5,7%. Напомним: 94,5%. Оценка F1: 0,108. ППК: 0,961

Сравнительный обзор методов машинного обучения

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

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

Полный рабочий лист с подробными данными казней можно найти здесь.

Выводы

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

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

Взгляните на мою другую статью:

Нажмите здесь, чтобы просмотреть мое профессиональное портфолио