Aller au contenu
Kudos AI

Factorisation matricielle

Un modèle qui explique une table d’interactions creuse comme le produit de deux petites matrices, donnant à chaque utilisateur et à chaque article un court vecteur de traits appris dont le produit scalaire prédit les cases manquantes.

Aussi appelé : Modèle à facteurs latents, Filtrage collaboratif

Comprendre Factorisation matricielle

Un recommandeur part d’une table avec les utilisateurs d’un côté, les articles de l’autre, et presque rien au milieu : dans la simulation utilisée tout au long de ce parcours, 17,7 % des cases sont remplies. La factorisation matricielle suppose que cette table est proche du produit de deux matrices bien plus petites, si bien que chaque utilisateur et chaque article se décrit par une poignée de nombres et qu’une prédiction est leur produit scalaire. Les facteurs ne sont pas nommés d’avance : ce sont les directions qui se trouvent expliquer les notes.

Ce qu’il faut intégrer d’abord, c’est tout ce qui vient avant les facteurs. Prédire la moyenne globale donne une RMSE de 0,9368. Ajouter un simple décalage par utilisateur et par article - qui capte qui note généreusement et quels articles plaisent au plus grand nombre - donne 0,6761. Huit facteurs latents par-dessus donnent 0,5393. Les décalages portent donc environ les deux tiers du gain total, et ils sont peu coûteux, robustes sur les lignes creuses et faciles à expliquer.

Les deux parties ont besoin de régularisation, pour la même raison. Les effectifs varient de plusieurs ordres de grandeur : un article avec trois notes recevrait sinon un décalage ajusté sur trois nombres et se verrait accorder autant de confiance qu’un décalage ajusté sur trois cents. Tirer chaque paramètre vers zéro en proportion du peu de données qui le soutient empêche une poignée de notes enthousiastes de promouvoir un article obscur, ce qui fait de la constante de rétrécissement un véritable hyperparamètre.

L’erreur n’est pas répartie uniformément entre utilisateurs. Le même modèle ajusté obtient 0,5210 pour les utilisateurs à plus de trente notes, 0,6018 entre dix et trente, et 0,6693 en dessous de dix : environ 1,28 fois pire pour les plus creux. Comme les gros noteurs fournissent la plupart des lignes d’évaluation, le chiffre annoncé est fixé par les personnes que le système connaît déjà, tandis qu’un nouvel utilisateur en vit la pire version. Toute évaluation digne de confiance est ventilée par volume d’historique.

Comment calculer

r̂(u,i) = μ + b_u + b_i + p_u · q_i; minimise Σ (r − r̂)² + λ(‖p_u‖² + ‖q_i‖² + b_u² + b_i²)

où

μ
la note moyenne globale
b_u, b_i
décalages par utilisateur et par article, ajustés avant toute interaction
p_u, q_i
les vecteurs latents, typiquement 8 à 200 nombres chacun
λ
le rétrécissement qui protège les paramètres estimés sur peu de notes

Exemple : Factorisation matricielle

Sur un catalogue simulé de 800 par 300 observé à 17,7 % : RMSE 0,9368 pour la moyenne globale, 0,6761 après les décalages utilisateur et article, 0,5393 après huit facteurs latents.

Par activité, le même modèle obtient 0,6693 en dessous de dix notes, 0,6018 entre dix et trente et 0,5210 au-dessus de trente : une pénalité de démarrage à froid de 1,28 fois.

En classant chaque article non noté et en prenant les dix premiers de chacun, seuls 91 articles sur 300 apparaissent, alors même que le modèle n’a aucun terme explicite de popularité.

Questions fréquentes

Combien de facteurs faut-il utiliser ?

Assez pour que l’erreur de validation cesse de s’améliorer, et pas davantage. Plus de facteurs ajustent toujours mieux les notes d’entraînement et commencent à mémoriser les lignes creuses, d’où la nécessité de choisir ensemble la constante de rétrécissement et le nombre de facteurs.

Les facteurs appris sont-ils interprétables ?

Il arrive qu’une direction coïncide avec quelque chose de reconnaissable, mais rien ne le garantit : la factorisation n’est identifiée qu’à une rotation près, donc toute interprétation posée sur un axe particulier est une histoire à propos d’une base arbitraire parmi beaucoup.

La RMSE est-elle la bonne chose à optimiser ?

C’est la chose facile à optimiser, et elle mesure la mauvaise tâche. Les utilisateurs voient une liste classée, pas un nombre prédit : un modèle peut donc améliorer sa RMSE sur des notes que personne n’aurait vues tout en laissant inchangé le haut de chaque liste. Les métriques de classement et les tests en ligne mesurent ce qui est réellement livré.

En résumé

La factorisation matricielle est une manière compacte de remplir une table que personne ne pourrait remplir à la main, et l’essentiel de son exactitude arrive avant la partie intéressante : deux décalages portent les deux tiers du gain. Ses modes de défaillance se concentrent exactement là où le produit en a le plus besoin, sur les utilisateurs qui lui ont le moins parlé, alors évaluez-la par tranches plutôt que par une moyenne unique.