top of page

Rilevamento anomalie nelle transazioni utilizzando Python

Il rilevamento di anomalie nelle transazioni significa identificare modelli insoliti o imprevisti all'interno delle transazioni o delle attività correlate. Questi modelli, noti come anomalie o valori anomali, si discostano in modo significativo dalla norma prevista e potrebbero indicare comportamenti irregolari o fraudolenti.


Se vuoi imparare come rilevare anomalie nelle transazioni, questo articolo fa per te. In questo articolo ti guiderò attraverso l'attività di rilevamento delle anomalie nelle transazioni con machine learning utilizzando Python.



Rilevamento anomalie nelle transazioni utilizzando Python
Rilevamento anomalie nelle transazioni utilizzando Python

Rilevamento di anomalie nelle transazioni

Il rilevamento delle anomalie svolge un ruolo cruciale in varie attività, in particolare quelle che si occupano di transazioni finanziarie, attività online e operazioni sensibili alla sicurezza.

Possiamo seguire un processo sistematico per affrontare la sfida del rilevamento delle anomalie. Possiamo iniziare raccogliendo e preparando i dati delle transazioni, garantendone l'accuratezza e la coerenza.


Quindi, possiamo trovare modelli nei dati per individuare anomalie e utilizzare algoritmi specializzati di rilevamento delle anomalie come la foresta di isolamento per rilevare le anomalie.


Quindi il processo iniziamo con la raccolta dei dati. Ho trovato un set di dati ideale che può essere utilizzato per rilevare anomalie nelle transazioni.



transaction_anomalies_dataset
.csv
Download CSV • 89KB


Rilevamento di anomalie nelle transazioni utilizzando Python


Ora iniziamo con l'attività di rilevamento delle anomalie nelle transazioni importando le librerie Python necessarie.


import pandas as pd
import plotly.express as px
from sklearn.model_selection import train_test_split
from sklearn.ensemble import IsolationForest
from sklearn.metrics import classification_report

data = pd.read_csv("/content/transaction_anomalies_dataset.csv")
print(data.head())
Rilevamento anomalie nelle transazioni utilizzando Python
Rilevamento anomalie nelle transazioni utilizzando Python

Diamo un'occhiata se i dati hanno valori nulli:


print(data.isnull().sum())
Rilevamento anomalie nelle transazioni utilizzando Python
Rilevamento anomalie nelle transazioni utilizzando Python

Ora diamo un'occhiata agli approfondimenti della colonna prima di andare avanti:


 print(data.info())
Rilevamento anomalie nelle transazioni utilizzando Python
Rilevamento anomalie nelle transazioni utilizzando Python


Ora diamo un'occhiata alle statistiche descrittive dei dati:


print(data.describe())
Rilevamento anomalie nelle transazioni utilizzando Python
Rilevamento anomalie nelle transazioni utilizzando Python


Ora diamo un'occhiata alla distribuzione dell'importo delle transazioni nei dati:


# Distribuzione della trnsazioni
fig_amount = px.histogram(data, x='Transaction_Amount',
                          nbins=20,
                          title='Distribution of Transaction Amount')
fig_amount.show()
Rilevamento anomalie nelle transazioni utilizzando Python
Rilevamento anomalie nelle transazioni utilizzando Python


Ora diamo un'occhiata alla distribuzione dell'importo delle transazioni per tipo di conto:


# Distribuzione importo pe tipo account
fig_box_amount = px.box(data,
                        x='Account_Type',
                        y='Transaction_Amount',
                        title='Transaction Amount by Account Type')
fig_box_amount.show()
Rilevamento anomalie nelle transazioni utilizzando Python
Rilevamento anomalie nelle transazioni utilizzando Python


Ora diamo un'occhiata all'importo medio della transazione per età:


 # Importo medio transazione per età
fig_scatter_avg_amount_age = px.scatter(data, x='Age',
                                        y='Average_Transaction_Amount',
                                        color='Account_Type',
                                        title='Average Transaction Amount vs. Age',
                                        trendline='ols')
fig_scatter_avg_amount_age.show()
Rilevamento anomalie nelle transazioni utilizzando Python
Rilevamento anomalie nelle transazioni utilizzando Python

Non c'è differenza nell'importo medio della transazione in base all'età. Ora diamo un'occhiata al conteggio delle transazioni per giorno della settimana:


# Conteggio trnasazioni per giorno settimana
fig_day_of_week = px.bar(data, x='Day_of_Week',
                         title='Count of Transactions by Day of the Week')
fig_day_of_week.show()
Rilevamento anomalie nelle transazioni utilizzando Python
Rilevamento anomalie nelle transazioni utilizzando Python


Ora diamo un'occhiata alla correlazione tra tutte le colonne nei dati:


# Correlation Heatmap
correlation_matrix = data.corr()
fig_corr_heatmap = px.imshow(correlation_matrix,
                             title='Correlation Heatmap')
fig_corr_heatmap.show()
Rilevamento anomalie nelle transazioni utilizzando Python
Rilevamento anomalie nelle transazioni utilizzando Python



Ora ecco come possiamo visualizzare le anomalie nei dati:


# Calcoliamo la media e la derivazione della Transaction_Amount
mean_amount = data['Transaction_Amount'].mean()
std_amount = data['Transaction_Amount'].std()

# Definiamo l'anomaly threshold 
anomaly_threshold = mean_amount + 2 * std_amount

# Flag anomalies
data['Is_Anomaly'] = data['Transaction_Amount'] > anomaly_threshold

# Scatter plot 
fig_anomalies = px.scatter(data, x='Transaction_Amount', y='Average_Transaction_Amount',
                           color='Is_Anomaly', title='Anomalies in Transaction Amount')
fig_anomalies.update_traces(marker=dict(size=12), 
                            selector=dict(mode='markers', marker_size=1))
fig_anomalies.show()
Rilevamento anomalie nelle transazioni utilizzando Python
Rilevamento anomalie nelle transazioni utilizzando Python



Ora calcoliamo il numero di anomalie nei dati per trovare il rapporto delle anomalie nei dati, che sarà utile durante l'utilizzo di algoritmi di rilevamento delle anomalie come la foresta di isolamento:


# Calcoliamo il numero di anomalie
num_anomalies = data['Is_Anomaly'].sum()

# Calcoliamo il numero delle istanze nei dati
total_instances = data.shape[0]

# Calcoliamo il ratio delle anomalie
anomaly_ratio = num_anomalies / total_instances
print(anomaly_ratio)
Rilevamento anomalie nelle transazioni utilizzando Python
Rilevamento anomalie nelle transazioni utilizzando Python


Ora ecco come possiamo addestrare un modello di Machine Learning per il rilevamento di anomalie:


relevant_features = ['Transaction_Amount',
                     'Average_Transaction_Amount',
                     'Frequency_of_Transactions']

# Split data in features (X) e target (y)
X = data[relevant_features]
y = data['Is_Anomaly']

# Split data inì train e test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Alleniamo l'Isolation Forest model
model = IsolationForest(contamination=0.02, random_state=42)
model.fit(X_train)
Rilevamento anomalie nelle transazioni utilizzando Python
Rilevamento anomalie nelle transazioni utilizzando Python


Qui stiamo addestrando un modello di rilevamento delle anomalie utilizzando l'algoritmo Isolation Forest. Innanzitutto, abbiamo selezionato le funzionalità rilevanti per il rilevamento, vale a dire Transaction_Amount, Average_Transaction_Amount e Frequency_of_Transactions.


Dividiamo il set di dati in caratteristiche (X) e variabile di destinazione (y), dove X contiene le caratteristiche selezionate e y contiene le etichette binarie che indicano se un'istanza è un'anomalia o meno. Quindi, dividiamo ulteriormente i dati in set di training e test utilizzando un rapporto di suddivisione 80-20. Successivamente, abbiamo creato un modello di foresta di isolamento con un parametro di contaminazione specificato di 0,02 (che indica il rapporto atteso di anomalie) e un seme casuale per la riproducibilità. Il modello viene quindi addestrato sul set di addestramento (X_train).


Ora diamo un'occhiata alle prestazioni di questo modello di rilevamento delle anomalie:


# Prevediamo le anomalie nel set di dati
y_pred = model.predict(X_test)

# Convertiamole in valori binari(0: normal, 1: anomaly)
y_pred_binary = [1 if pred == -1 else 0 for pred in y_pred]

# Valutiamo il modello
report = classification_report(y_test, y_pred_binary, target_names=['Normal', 'Anomaly'])
print(report)
Rilevamento anomalie nelle transazioni utilizzando Python
Rilevamento anomalie nelle transazioni utilizzando Python

Infine, ecco come possiamo utilizzare il nostro modello addestrato per rilevare anomalie:


# features rilevanti usate nell'allenamento del modello
relevant_features = ['Transaction_Amount', 'Average_Transaction_Amount', 'Frequency_of_Transactions']

# user inputs per le features
user_inputs = []
for feature in relevant_features:
    user_input = float(input(f"Inserisci un valore per '{feature}': "))
    user_inputs.append(user_input)

# Creiamo un DataFrame dall' user inputs
user_df = pd.DataFrame([user_inputs], columns=relevant_features)

# Prevediamo le anomalie usando il modello
user_anomaly_pred = model.predict(user_df)

# Convertiamo la previsione in valori binari(0: normal, 1: anomaly)
user_anomaly_pred_binary = 1 if user_anomaly_pred == -1 else 0

if user_anomaly_pred_binary == 1:
    print("Anomaly detected: Questa transazione risulta anomala.")
else:
    print("No anomaly detected: Questa transazione sembra normale.")
Rilevamento anomalie nelle transazioni utilizzando Python
Rilevamento anomalie nelle transazioni utilizzando Python
Rilevamento anomalie nelle transazioni utilizzando Python
Rilevamento anomalie nelle transazioni utilizzando Python

Conclusione sul Rilevamento anomalie nelle transazioni utilizzando Python


Ecco come eseguire il rilevamento delle anomalie nelle transazioni utilizzando Machine Learning e Python.


Il rilevamento di anomalie nelle transazioni significa identificare modelli insoliti o imprevisti all'interno delle transazioni o delle attività correlate. Questi modelli, noti come anomalie o valori anomali, si discostano in modo significativo dalla norma prevista e potrebbero indicare comportamenti irregolari o fraudolenti.


Spero che questo articolo sul rilevamento delle anomalie nelle transazioni utilizzando Python ti sia piaciuto. Sentiti libero di porre domande preziose nella sezione commenti qui sotto.



PCR (5).gif
PCR (4).gif
PCR.gif
PCR.gif
PCR.gif
PCR.gif
PCR (5).gif
3.gif
Vediamo se riesci a cliccarmi ! Nascondo una Sorpresa... (2).png

Ciao 

🤗 Articoli consigliati dalla nostra
Intelligenza Artificiale in base ai tuoi interessi

Correlazione Alta

Correlazione Media

Correlazione Bassa

Iscriviti

VUOI DIVENTARE UN MEMBRO DI INTELLIGENZA ARTIFICIALE ITALIA GRATUITAMENTE E TRARNE I SEGUENTI BENEFICI?

Corsi Gratis

più di 150 lezioni online

Dataset Gratis

più di 150o dataset

Ebook Gratis

più di 10 libri da leggere

Editor Gratis

un editor python online

Progetti Gratis

più di 25 progetti python

App Gratis

4 servizi web con I.A.

Unisciti Ora a oltre
1.000.000
di lettori e appassionanti d'I.A.

Tutto ciò che riguarda l'intelligenza Artificiale, in unico posto, in italiano e gratis.

MEGLIO DI COSI' NON SI PUO' FARE

Dopo l'iscrizione riceverai diversi Regali

VUOI SCRIVERE ARTICOLI INSIEME A NOI.

Grazie

bottom of page