decision-tree

Предсказание мошеннических транзакций используя деревья решений

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

Dataset

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

Все столбцы из набора данных

  • step: представляет единицу времени, где 1 шаг равен 1 часу
  • type: тип онлайн-транзакции
  • amount: сумма транзакции
  • nameOrig: клиент, начинающий транзакцию
  • oldbalanceOrg: баланс до транзакции
  • newbalanceOrig: баланс после транзакции
  • nameDest: получатель транзакции
  • oldbalanceDest: начальный баланс получателя перед транзакцией
  • newbalanceDest: новый баланс получателя после транзакции
  • isFraud: флаг подозрительной транзакции

Чтение данных

In [1]:
import pandas as pd
import numpy as np
import plotly.express as px

data = pd.read_csv("./archive/PS_20174392719_1491204439457_log.csv")
data.head()
Out[1]:
step type amount nameOrig oldbalanceOrg newbalanceOrig nameDest oldbalanceDest newbalanceDest isFraud isFlaggedFraud
0 1 PAYMENT 9839.64 C1231006815 170136.0 160296.36 M1979787155 0.0 0.0 0 0
1 1 PAYMENT 1864.28 C1666544295 21249.0 19384.72 M2044282225 0.0 0.0 0 0
2 1 TRANSFER 181.00 C1305486145 181.0 0.00 C553264065 0.0 0.0 1 0
3 1 CASH_OUT 181.00 C840083671 181.0 0.00 C38997010 21182.0 0.0 1 0
4 1 PAYMENT 11668.14 C2048537720 41554.0 29885.86 M1230701703 0.0 0.0 0 0
In [2]:
data.isnull().sum()
Out[2]:
step              0
type              0
amount            0
nameOrig          0
oldbalanceOrg     0
newbalanceOrig    0
nameDest          0
oldbalanceDest    0
newbalanceDest    0
isFraud           0
isFlaggedFraud    0
dtype: int64

Подготовка данных

Изучение типа транзакций

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

figure = px.pie(data,
                values=quantity,
                names=transactions,
                hole= 0.6,
                title="Распределение по типу транзакций"
                )
figure.show()