Retour au Blog
Machine Learning 12 décembre 2024 8 min de lecture

Détection d'anomalies avec des autoencodeurs : mieux que les règles, moins cher que les étiquettes

Utiliser des autoencodeurs pour la détection d'anomalies non supervisée — seuillage de l'erreur de reconstruction.

Pourquoi les autoencodeurs pour la détection d'anomalies

Vous n'avez besoin que de données normales pour l'entraînement. L'autoencodeur apprend à bien reconstruire les motifs normaux. Les anomalies ont une erreur de reconstruction élevée.

Architecture

class Autoencoder(nn.Module):
    def __init__(self, input_dim, latent_dim=32):
        super().__init__()
        self.encoder = nn.Sequential(
            nn.Linear(input_dim, 128), nn.ReLU(),
            nn.Linear(128, 64), nn.ReLU(),
            nn.Linear(64, latent_dim)
        )
        self.decoder = nn.Sequential(
            nn.Linear(latent_dim, 64), nn.ReLU(),
            nn.Linear(64, 128), nn.ReLU(),
            nn.Linear(128, input_dim)
        )
    
    def forward(self, x):
        z = self.encoder(x)
        return self.decoder(z)

Réglage du seuil

# Set threshold at 99th percentile of train reconstruction error
recon_errors = ((X_train - model(X_train)) ** 2).mean(dim=1)
threshold = np.percentile(recon_errors.numpy(), 99)
Anomaly DetectionAutoencoderUnsupervisedPyTorchFraud
O

Ossama Elhakki

Ingénieur IA & Systèmes ML — Maroc