العودة إلى المدونة
Machine Learning 10 أكتوبر 2024 10 min للقراءة

بناء نظام توصية: من الفلترة التعاونية إلى Neural CF

تحليل المصفوفة، التغذية الراجعة الضمنية، والفلترة التعاونية العصبية — تنفيذ عملي.

الفلترة التعاونية

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 باستخدام 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))

مقاييس التقييم

  • NDCG@K: المكسب التراكمي المخفّض المُطبّع
  • HR@K: معدل الإصابة عند K
  • MRR: متوسط الرتبة العكسية
Recommendation SystemCollaborative FilteringMatrix FactorizationPyTorch
O

Ossama Elhakki

مهندس ذكاء اصطناعي وأنظمة ML — المغرب