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

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

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

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

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

шаги:

  1. Сбор данных:импорт всех необходимых библиотек и наборов данных

набор данных: https://www.dropbox.com/s/b44o3t3ehmnx2b7/creditcard.csv?dl=1

ссылка на github: https://github.com/sachinkatageri/ML_data_science/blob/master/Credit_Card__Fraud_Detection.ipynb

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

  • 0 для обычных транзакций
  • 1 за мошеннические действия
print(df_fraud['Class'].value_counts())
print('\nPercentage of fraudulent activity: {:.2%}'.format((df_fraud[df_fraud['Class'] == 1].shape[0] / df_fraud.shape[0])))
Percentage of fraudulent activity: 0.17%

Мы можем подтвердить, насколько несбалансирован наш набор данных, со скудными 0,17% мошеннических транзакций.

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

3. Разделение на поезд и тестовые данные

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

# define our feature matrix and target vector
X = df_fraud_clean.drop('Class', axis=1)
y = df_fraud_clean['Class']
# train and test data
X_train, X_test, y_train, y_test = train_test_split(X, y)

10 первых транзакций, имеющих наибольшее сходство с идентификатором транзакции

Class  Similarity  Transaction ID
16709    0.0         1.0           16709
18754    0.0         1.0           18754
15840    0.0         1.0           15840
16254    0.0         1.0           16254
18586    0.0         1.0           18586
16628    0.0         1.0           16628
18438    0.0         1.0           18438
18046    0.0         1.0           18046
15946    0.0         1.0           15946
14804    0.0         1.0           14804

4. Модели

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

  • Логистическая регрессия
precision    recall  f1-score   support

           0       1.00      0.96      0.98     71080
           1       0.04      0.93      0.07       122

    accuracy                           0.96     71202
   macro avg       0.52      0.95      0.53     71202
weighted avg       1.00      0.96      0.98     71202

AUC: 0.95

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

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

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

Вывод

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

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

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