Filtrage Collaboratif

Fondements Mathématiques (SVD & SGD)

1. Décomposition & Factorisation Matricielle

8. Factorisation de base

r̂ui = qi^T × pu

ui = qiT pu = Σ(f=1 à k) [ qi,f × pu,f ]

Variables

  • r̂ui : Note PRÉDITE (user u, item i)
  • qi : Vecteur latents du film i
  • pu : Vecteur latents de l'utilisateur u
  • k : Dimension de l'espace latent

Exemple concret (k=3)

pu (toi) = [2, 9, 7] (comédie, action, émotion)

qi (Avengers) = [8, 9, 6]

r̂ui = (2×8) + (9×9) + (7×6) = 16 + 81 + 42 = 139 (≈ 5 étoiles)

9. Modèle avec Biais

r̂ui = μ + bu + bi + qi^T × pu

ui = μ + bu + bi + qiT pu

Variables Ajoutées

  • μ (mu) : Note moyenne globale
  • bu : Biais de l'utilisateur (sévère/généreux)
  • bi : Biais du film (popularité)

Exemple concret

μ = 3,5 | bu = +0,7 | bi = +1,0

qi^T × pu = 0,8 (normalisé)

r̂ui = 3,5 + 0,7 + 1,0 + 0,8 = 6,0 étoiles (max 5)

2. Modèles SVD Avancés

10. Funk SVD (Singular Value Decomposition)

A = U × Σ × VT

La décomposition SVD casse une grande matrice creuse en trois matrices denses.

Matrice A (grande)           U (Users)     Σ (Poids)    V^T (Films)
[5  2  ?  4  ...]      [0.2  0.7  ...] [2.5  0    0  ] [0.1  0.2  ...]
[5  ?  3  ?  ...]   =  [0.2  0.8  ...] [0    1.8  0  ] [0.3  0.1  ...]
[1  5  5  4  ...]      [0.9  0.2  ...] [0    0    0.9] [0.2  0.4  ...]
[... ... ... ... ...]  [... ... ...]   [... ... ... ] [... ... ...]

11. SVD++ (Améliorations avec Facteurs Implicites)

ui = μ + bu + bi + qiT × [ pu + |N(u)|-1/2 × Σ(j ∈ N(u)) yj ]

SVD++ ajoute des facteurs implicites (yj). L'idée : "Les films que tu as notés disent quelque chose sur tes goûts, même si tu ne les notes pas explicitement."

Exemple de calcul SVD++ :

  • Historique N(u) = {Avengers, Toy Story, Raiponce}. |N(u)| = 3. Normalisation = √(1/3) ≈ 0,577
  • Explicite pu = [2.0, 9.0, 7.0]
  • Implicites yj : Avengers=[0.5, 0.8, 0.7], ToyStory=[0.8, 0.1, 0.2], Raiponce=[0.6, 0.2, 0.8]
  • Somme implicites = [1.9, 1.1, 1.7]
  • Vecteur ajusté = [2.0 + (0.577×1.9), 9.0 + (0.577×1.1), 7.0 + (0.577×1.7)] = [3.1, 9.63, 7.98]

3. Optimisation & Apprentissage (SGD)

12. Fonction Coût (Objectif)

min Σ (rui - r̂ui)² + λ(Σ‖pu‖² + Σ‖qi‖² + Σbu² + Σbi²)

L'algorithme cherche à minimiser l'erreur d'entraînement tout en gardant les paramètres petits (régularisation λ) pour éviter le surapprentissage.

13. Descente de Gradient Stochastique (SGD)

1. Calcul de l'erreur eui = rui - r̂ui
2. Maj Biais (γ = taux app.) bu := bu + γ(eui - λ·bu)
3. Maj Vecteurs Latents pu := pu + γ(eui·qi - λ·pu) qi := qi + γ(eui·pu - λ·qi)

14. Le Compromis Biais-Variance (Régularisation λ)

λ = 0 (Surapprentissage)

Mémorise les données. Biais faible, Variance élevée.

λ optimal

Minimise l'erreur sur l'ensemble de test.

λ très élevé (Sous-apprentissage)

Modèle trop simple. Biais élevé, Variance faible.

Erreur
  |       Ensemble test
  |      /‾‾‾‾‾‾‾‾‾\
  |     /           \___
  |    / 
  |  /‾‾‾‾ Ensemble entraînement
  |_/___________________ λ
    λ=0   optimal   élevé

4. Mesurer la Qualité (RMSE vs MAE)

15. RMSE

Root Mean Squared Error

RMSE = √[ (1/|T|) Σ (rui - r̂ui)² ]

  • Pénalise lourdement les grandes erreurs (mise au carré).
  • Benchmark Netflix : ~0.8 à 1.0
  • À utiliser pour éviter à tout prix les recommandations catastrophiques.

16. MAE

Mean Absolute Error

MAE = (1/|T|) Σ |rui - r̂ui|

  • Erreur linéaire (une erreur de 2 vaut 2x une erreur de 1).
  • Plus intuitif pour comprendre l'erreur moyenne réelle.
  • À utiliser quand toutes les erreurs ont un impact proportionnel.

17. Le duel illustré

Modèle A (1 catastrophe)
Erreurs : [0.1, 0.1, 0.1, 0.1, 4.0]
RMSE = 1.79 | MAE = 0.88
Modèle B (Erreurs constantes)
Erreurs : [1.0, 1.0, 1.0, 1.0, 1.0]
RMSE = 1.00 | MAE = 1.00

Le RMSE punit le Modèle A beaucoup plus sévèrement à cause du carré appliqué à l'erreur de 4.0.