Классификация и оценка транзакций по кредитным картам с помощью моделей логистической регрессии и дерева решений
Этот проект будет решать проблему мошенничества с кредитными картами, которая является серьезной проблемой для банков и клиентов, а также процесс обнаружения мошеннических операций с помощью методов машинного обучения.
Мошенничество обычно происходит, когда кто-то получает доступ к номерам вашей кредитной или дебетовой карты с незащищенных веб-сайтов или с помощью схемы кражи личных данных, чтобы обманным путем получить деньги или имущество. Из-за ее повторения и вреда, который она может нанести как физическим лицам, так и финансовым учреждениям, крайне важно принимать превентивные меры, а также выявлять мошеннические транзакции.
Вполне вероятно, что в некоторых случаях ваша кредитная карта блокировалась при попытке совершить простую покупку, что вызывало стресс и смущение. В этом случае ваш банк или эмитент кредитной карты могли обнаружить подозрительную активность, которая иногда является просто ложным срабатыванием.
Из-за огромного объема данных, доступных для каждого клиента и каждой финансовой операции, можно использовать искусственный интеллект для эффективного выявления подозрительных схем в транзакциях. Чтобы повысить точность анализа, многие учреждения вкладывают средства в улучшение алгоритмов ИИ.
шаги:
- Сбор данных:импорт всех необходимых библиотек и наборов данных
набор данных: 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%.