Retour au Blog
Machine Learning 10 octobre 2024 10 min de lecture

Construire un système de recommandation : du filtrage collaboratif au Neural CF

Factorisation matricielle, feedback implicite et filtrage collaboratif neuronal — implémentation pratique.

Filtrage collaboratif

from scipy.sparse.linalg import svds
import numpy as np

# SVD-based matrix factorization
U, sigma, Vt = svds(R, k=50)  # R = user-item matrix
predictions = np.dot(np.dot(U, np.diag(sigma)), Vt)

Neural CF avec PyTorch

class NeuralCF(nn.Module):
    def __init__(self, n_users, n_items, embed_dim=64):
        super().__init__()
        self.user_embed = nn.Embedding(n_users, embed_dim)
        self.item_embed = nn.Embedding(n_items, embed_dim)
        self.mlp = nn.Sequential(
            nn.Linear(embed_dim*2, 128), nn.ReLU(),
            nn.Linear(128, 64), nn.ReLU(),
            nn.Linear(64, 1), nn.Sigmoid()
        )
    
    def forward(self, user_ids, item_ids):
        u = self.user_embed(user_ids)
        i = self.item_embed(item_ids)
        return self.mlp(torch.cat([u, i], dim=-1))

Métriques d'évaluation

  • NDCG@K : Normalized Discounted Cumulative Gain
  • HR@K : Hit Rate à K
  • MRR : Mean Reciprocal Rank
Recommendation SystemCollaborative FilteringMatrix FactorizationPyTorch
O

Ossama Elhakki

Ingénieur IA & Systèmes ML — Maroc