Обнаружение мошенничества с кредитными картами с помощью машинного обучения

Классификация и оценка транзакций по кредитным картам с помощью логистической регрессии и дерева решений

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

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

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

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

О данных

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

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

Все признаки в наборе данных являются числовыми. Из-за конфиденциальности клиента столбцы были переименованы в V1, V2, …, V28, а их признаки прошли преобразование PCA, заключающееся в обнулении одного или нескольких наименьших главных компонент, в результате чего получается проекция меньшей размерности. данных, которые сохраняют максимальную дисперсию данных. Единственными двумя исключениями были функции Time и Amount, содержащие секунды, прошедшие между каждой транзакцией и первой транзакцией в наборе данных, и сумму транзакции соответственно.

Функция Class является зависимой переменной и принимает значения:

  • 0 для обычных транзакций
  • 1 за мошеннические действия

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

Мы используем следующие библиотеки в этом анализе.

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

Хотя количество мошенничеств значительно меньше, чем количество обычных транзакций, мы можем наблюдать отчетливое поведение, особенно около отметки 100 000 Time.

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

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

Проделав тот же анализ с Amount каждой транзакции, мы получили следующий результат.

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

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

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

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

Теперь мы можем приступить к работе с нашими моделями машинного обучения.

Модели машинного обучения

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

  • Предварительно обработайте функции Time и Amount с помощью StandardScaler
  • Разделите набор данных на обучающие и тестовые данные
  • Работа с несбалансированным набором данных

Предварительная обработка

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

Разделение на обучающие и тестовые данные

После преобразования функций Amount и Time давайте разделим наш набор данных на обучающие и тестовые данные. Размер тестовых данных составляет 0,25, значение по умолчанию.

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

Как мы упоминали ранее, набор данных сильно несбалансирован. Поскольку в распределении классов наблюдается серьезный перекос (284 315 записей в Class = 0 и 492 в Class = 1), наш обучающий набор данных может быть необъективным и влиять на машинное обучение. алгоритм для отображения неудовлетворительных результатов, например, игнорирования класса с меньшим количеством записей.

Чтобы решить эту проблему, мы случайным образом сбалансируем данные с помощью RandomUnderSampler.

Давайте посмотрим, как наше распределение после балансировки набора данных.

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

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

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

Модели классификации

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

  • Логистическая регрессия
  • Древо решений

Логистическая регрессия

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

Обратите внимание, что модель имеет точность 97% и показатель ROC AUC 95%, что означает, что наша логистическая регрессия работает очень хорошо.

Из матрицы путаницы мы можем сделать вывод, что 97% обычных транзакций были правильно классифицированы как обычные (истинно отрицательные), а 93% мошеннических транзакций были точно классифицированы как мошенничество (истинно положительные).

Древо решений

Мы уже видели, что модель логистической регрессии работает хорошо. Теперь давайте посмотрим, как работает дерево решений.

Дерево решений также работает достаточно хорошо, с точностью 97% и оценкой ROC AUC 93%. Истинные отрицательные и истинные положительные результаты были хорошо предсказаны, с 97% и 90% соответственно.

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

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

Вывод

Обе модели, логистическая регрессия и дерево решений, очень хорошо показали себя при классификации операций с кредитными картами по классам обычная транзакция и мошенническая транзакция. strong>, с точностью, оценкой ROC AUC и точностью выше 90%. Хотя они дали схожие результаты, логистическая регрессия показала несколько лучшие результаты с более высоким показателем ROC AUC, который измеряет, насколько хорошо модель способна различать классы.

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

Алгоритмы машинного обучения для обнаружения мошенничества с кредитными картами очень эффективны, но еще есть пробелы, которые необходимо устранить. Одной из самых больших проблем является возникновение ложных срабатываний, то есть когда алгоритм неправильно определяет мошенничество. Таким образом, мы всегда ищем способы уменьшить ложные срабатывания еще больше, чем на 3%.

Полный код смотрите в блокноте.