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
- Comprendre el problema de la detecció de fraus.
- Preprocessar les dades per preparar-les per al modelatge.
- Construir i entrenar models de Machine Learning per detectar fraus.
- Avaluar el rendiment dels models utilitzant mètriques adequades.
- 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
- Què és el Machine Learning?
- Història i evolució del Machine Learning
- Tipus de Machine Learning
- Aplicacions del Machine Learning
Mòdul 2: Fonaments d'Estadística i Probabilitat
- Conceptes bàsics d'estadística
- Distribucions de probabilitat
- Inferència estadística
- Teorema de Bayes
Mòdul 3: Preprocessament de Dades
Mòdul 4: Algoritmes de Machine Learning Supervisat
- Regressió lineal
- Regressió logística
- Arbres de decisió
- Màquines de suport vectorial (SVM)
- K-Veïns més propers (K-NN)
- Xarxes neuronals
Mòdul 5: Algoritmes de Machine Learning No Supervisat
- Clustering: K-means
- Clustering jeràrquic
- Anàlisi de components principals (PCA)
- Anàlisi d'agrupament DBSCAN
Mòdul 6: Avaluació i Validació de Models
Mòdul 7: Tècniques Avançades i Optimització
- Ensemble Learning
- Gradient Boosting
- Xarxes neuronals profundes (Deep Learning)
- Optimització d'hiperparàmetres
Mòdul 8: Implementació i Desplegament de Models
- Frameworks i biblioteques populars
- Implementació de models en producció
- Manteniment i monitoratge de models
- Consideracions ètiques i de privacitat
Mòdul 9: Projectes Pràctics
- Projecte 1: Predicció de preus d'habitatges
- Projecte 2: Classificació d'imatges
- Projecte 3: Anàlisi de sentiments a xarxes socials
- Projecte 4: Detecció de fraus