Использование алгоритма классификатора дерева решений

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

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

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

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

🔹Шаг относится к единице времени, где каждый шаг равен одному часу.

🔹Тип обозначает характер онлайн-транзакции.

🔹Сумма означает стоимость транзакции.

🔹NameOrig представляет имя клиента, инициировавшего транзакцию.

🔹OldbalanceOrg относится к балансу счета клиента перед транзакцией.

🔹NewbalanceOrig означает баланс счета клиента после транзакции.

🔹NameDest обозначает имя получателя транзакции.

🔹OldbalanceDest означает начальный баланс счета получателя перед транзакцией.

🔹NewbalanceDest означает баланс счета получателя после транзакции.

🔹IsFraud — это флаг, указывающий, является ли транзакция мошеннической или нет.

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

Обнаружение мошенничества с платежами в онлайн-транзакциях с помощью Python

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

import pandas as pd
import numpy as np

data = pd.read_csv("credit card.csv")
print(data.head())

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

print(data.isnull().sum())

Рассматриваемый набор данных лишен какой-либо отсутствующей или неполной информации.

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

#Checking the transaction type
print(data.type.value_counts())

type = data["type"].value_counts()
transactions = type.index
quantity = type.values

import plotly.express as px
figure = px.pie(data, values=quantity,
               names=transactions, hole = 0.5,
               title="Distribution of Transaction Type")
figure.show()

Давайте рассмотрим взаимосвязь между характеристиками или атрибутами набора данных и столбцом isFraud.

#checking correlation
correlation = data.corr()
print(correlation["isFraud"].sort_values(ascending=False))

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

data["type"] = data["type"].map({"CASH_OUT":1, "PAYMENT": 2,
                                "CASH_IN":3, "TRANSFER": 4,
                                "DEBIT":5})

data["isFraud"] = data["isFraud"].map({0: "No Fraud", 1: "Fraud"})
print(data.head())

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

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

#splitting the data
from sklearn.model_selection import train_test_split
x= np.array(data[["type", "amount", "oldbalanceOrg", "newbalanceOrig"]])
y= np.array(data[["isFraud"]])

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

# training a machine learning model
from sklearn.tree import DecisionTreeClassifier
xtrain, xtest, ytrain, ytest = train_test_split(x,y, test_size = 0.10, random_state=512)
model = DecisionTreeClassifier()
model.fit(xtrain,ytrain)
print(model.score(xtest, ytest))
0.9997265277511466
#Let's predict

# feautes = [type, amount, oldbalanceOrg, newbalanceOrig]

features = np.array([[4, 9560.60, 8563.56, 0.0]])
print(model.predict(features))
['No Fraud']

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

Репозиторий GitHub: https://github.com/k98vishwas/Online-Payments-Fraud-Detection-using-Decision-Tree

Заключение

Если вы обнаружите какие-либо трудности при следовании части кода, укажите их в разделе комментариев.

Спасибо за чтение! Дайте мне знать в комментарии или на LinkedIn, если вы считаете, что это помогло или не помогло. У меня есть еще несколько статей, которые я пишу и буду публиковать их каждые пару недель. В основном это аккаунты из моего проектного опыта. Если есть какие-либо другие вопросы или что-то еще, о чем вы хотели бы услышать, пожалуйста, не стесняйтесь отправить запрос.