Использование алгоритма классификатора дерева решений
Рост систем онлайн-платежей, безусловно, упростил платежи, но также привел к росту мошенничества с платежами. Любой, кто использует любую платежную систему, особенно при оплате кредитной картой, может стать жертвой мошенничества с онлайн-платежами. В результате компаниям, выпускающим кредитные карты, крайне важно выявлять такое мошенничество, чтобы гарантировать, что с их клиентов не будет взиматься плата за продукты или услуги, которые они не приобретали. Если вас интересует обнаружение мошенничества с онлайн-платежами с помощью машинного обучения с помощью 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, если вы считаете, что это помогло или не помогло. У меня есть еще несколько статей, которые я пишу и буду публиковать их каждые пару недель. В основном это аккаунты из моего проектного опыта. Если есть какие-либо другие вопросы или что-то еще, о чем вы хотели бы услышать, пожалуйста, не стесняйтесь отправить запрос.