Introducció

La detecció de fraus és una aplicació crítica del Machine Learning en sectors com la banca, les assegurances i el comerç electrònic. En aquest projecte, aprendrem a construir un model de Machine Learning per detectar transaccions fraudulentes utilitzant un conjunt de dades de transaccions financeres.

Objectius del Projecte

  1. Comprendre el problema de la detecció de fraus.
  2. Preprocessar les dades per preparar-les per al modelatge.
  3. Construir i entrenar models de Machine Learning per detectar fraus.
  4. Avaluar el rendiment dels models utilitzant mètriques adequades.
  5. Implementar tècniques per millorar el rendiment del model.

Pas 1: Comprensió del Problema

Descripció del Conjunt de Dades

El conjunt de dades que utilitzarem conté informació sobre transaccions financeres. Cada fila representa una transacció i inclou diverses característiques com l'import de la transacció, el tipus de transacció, la ubicació, etc. La columna objectiu indica si la transacció és fraudulenta (1) o no (0).

Exploració de Dades

Abans de començar amb el preprocessament, és important explorar les dades per comprendre millor les seves característiques.

import pandas as pd

# Carregar el conjunt de dades
data = pd.read_csv('transactions.csv')

# Mostrar les primeres files del conjunt de dades
print(data.head())

# Resum estadístic de les dades
print(data.describe())

# Comprovació de valors mancants
print(data.isnull().sum())

Pas 2: Preprocessament de Dades

Neteja de Dades

El primer pas és netejar les dades eliminant o imputant valors mancants i eliminant duplicats.

# Eliminar duplicats
data = data.drop_duplicates()

# Imputar valors mancants (si n'hi ha)
data = data.fillna(method='ffill')

Transformació de Dades

Convertirem les característiques categòriques en variables numèriques utilitzant codificació one-hot.

# Codificació one-hot de les característiques categòriques
data = pd.get_dummies(data, columns=['type', 'location'])

Normalització i Estandardització

Normalitzarem les característiques numèriques per assegurar-nos que totes tinguin la mateixa escala.

from sklearn.preprocessing import StandardScaler

# Seleccionar les característiques numèriques
numeric_features = ['amount', 'balance', 'age']

# Normalitzar les característiques numèriques
scaler = StandardScaler()
data[numeric_features] = scaler.fit_transform(data[numeric_features])

Pas 3: Construcció i Entrenament de Models

Divisió del Conjunt de Dades

Dividirem el conjunt de dades en un conjunt d'entrenament i un conjunt de prova.

from sklearn.model_selection import train_test_split

# Separar les característiques i la columna objectiu
X = data.drop('is_fraud', axis=1)
y = data['is_fraud']

# Dividir el conjunt de dades
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Entrenament de Models

Entrenarem diversos models de Machine Learning i compararem el seu rendiment.

Regressió Logística

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, confusion_matrix

# Entrenar el model
logreg = LogisticRegression()
logreg.fit(X_train, y_train)

# Prediccions
y_pred = logreg.predict(X_test)

# Avaluació del model
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))

Arbres de Decisió

from sklearn.tree import DecisionTreeClassifier

# Entrenar el model
tree = DecisionTreeClassifier()
tree.fit(X_train, y_train)

# Prediccions
y_pred = tree.predict(X_test)

# Avaluació del model
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))

Pas 4: Avaluació del Rendiment dels Models

Mètriques d'Avaluació

Utilitzarem diverses mètriques per avaluar el rendiment dels models, com ara la precisió, la precisió, la sensibilitat i l'F1-score.

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

# Mètriques per al model de Regressió Logística
print("Logistic Regression Metrics:")
print("Accuracy:", accuracy_score(y_test, y_pred))
print("Precision:", precision_score(y_test, y_pred))
print("Recall:", recall_score(y_test, y_pred))
print("F1 Score:", f1_score(y_test, y_pred))

# Mètriques per al model d'Arbre de Decisió
print("Decision Tree Metrics:")
print("Accuracy:", accuracy_score(y_test, y_pred))
print("Precision:", precision_score(y_test, y_pred))
print("Recall:", recall_score(y_test, y_pred))
print("F1 Score:", f1_score(y_test, y_pred))

Pas 5: Millora del Model

Tècniques d'Ensemble Learning

Podem millorar el rendiment del model utilitzant tècniques d'ensemble com el Random Forest o el Gradient Boosting.

Random Forest

from sklearn.ensemble import RandomForestClassifier

# Entrenar el model
rf = RandomForestClassifier()
rf.fit(X_train, y_train)

# Prediccions
y_pred = rf.predict(X_test)

# Avaluació del model
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))

Gradient Boosting

from sklearn.ensemble import GradientBoostingClassifier

# Entrenar el model
gb = GradientBoostingClassifier()
gb.fit(X_train, y_train)

# Prediccions
y_pred = gb.predict(X_test)

# Avaluació del model
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))

Conclusió

En aquest projecte, hem après a construir un model de Machine Learning per detectar fraus en transaccions financeres. Hem explorat les dades, les hem preprocessat, hem entrenat diversos models i hem avaluat el seu rendiment. Finalment, hem implementat tècniques d'ensemble per millorar el rendiment del model.

Aquest projecte ens proporciona una base sòlida per abordar problemes de detecció de fraus en el món real i aplicar tècniques de Machine Learning per millorar la seguretat i l'eficiència en sectors crítics.

Curs de Machine Learning

Mòdul 1: Introducció al Machine Learning

Mòdul 2: Fonaments d'Estadística i Probabilitat

Mòdul 3: Preprocessament de Dades

Mòdul 4: Algoritmes de Machine Learning Supervisat

Mòdul 5: Algoritmes de Machine Learning No Supervisat

Mòdul 6: Avaluació i Validació de Models

Mòdul 7: Tècniques Avançades i Optimització

Mòdul 8: Implementació i Desplegament de Models

Mòdul 9: Projectes Pràctics

Mòdul 10: Recursos Addicionals

© Copyright 2024. Tots els drets reservats