🎵 Recommandeur musical — Factorisation matricielle (ALS) en direct
Observez une véritable factorisation matricielle par moindres carrés alternés apprendre en direct des vecteurs latents d'auditeurs et de morceaux, avec des recommandations de chansons se mettant à jour en direct à mesure que les facteurs appris convergent.
À propos de cette simulation
Cette simulation construit une matrice synthétique de nombre d'écoutes auditeur × morceau avec une véritable structure de rang faible enfouie dans du bruit, puis la factorise avec de véritables moindres carrés alternés (ALS). Chaque passage résout un système linéaire régularisé exact — des équations normales via élimination gaussienne avec pivot partiel — d'abord pour chaque ligne auditeur en maintenant fixes les vecteurs de morceaux, puis pour chaque ligne morceau en maintenant fixes les vecteurs d'auditeurs. Il n'y a pas de descente de gradient, pas de taux d'apprentissage ajusté à la main : chaque mise à jour de ligne est le minimiseur en forme close par moindres carrés de son propre sous-problème, et l'erreur de reconstruction ne peut que s'améliorer ou rester stable à chaque demi-passage.
🔬 Ce que ça montre
Une matrice de notes éparse (environ 28 auditeurs, 42 morceaux, environ 40 % observés) est générée à partir de clusters cachés de goût et de genre plus du bruit, puis divisée en entrées d'entraînement et de test. ALS apprend des vecteurs d'auditeurs U et de morceaux V en dimension k tels que U·Vᵀ reconstruit les écoutes observées. Une décomposition en valeurs propres de Jacobi projette les facteurs appris en dimension k sur leurs 3 principales composantes principales pour la scène 3D, et un graphique en direct suit le RMSE à la fois sur les entrées d'entraînement et de test à chaque itération.
🎮 Comment l'utiliser
Ajustez le nombre de facteurs latents k (2 à 12), la force de régularisation λ, et le nombre maximal d'itérations ALS, puis appuyez sur Exécuter ALS pour animer les passages, ou Étape pour avancer d'un passage à la fois. Choisissez n'importe quel auditeur simulé dans le menu déroulant pour voir son historique d'écoute observé et les 6 meilleures recommandations de morceaux en direct, mises en évidence par des lignes de connexion dans l'espace latent 3D. Faites glisser pour orbiter dans la scène et faites défiler pour zoomer.
💡 Le saviez-vous ?
ALS est devenu le cheval de bataille du filtrage collaboratif à grande échelle — y compris MLlib de Spark et les premiers recommandeurs de type Netflix — précisément parce que chaque demi-passage est une résolution exacte et parallélisable par moindres carrés plutôt qu'une méthode de gradient itérative, ce qui lui permet de converger en une poignée de passages et de s'étendre à des millions de lignes en distribuant les résolutions indépendantes par ligne.
Questions fréquentes
Qu'est-ce que la factorisation matricielle dans un système de recommandation ?
La factorisation matricielle approxime une grande matrice de notes auditeur-par-morceau, majoritairement vide, R comme le produit de deux matrices bien plus petites, U (auditeurs × k facteurs latents) et V (morceaux × k facteurs latents), de sorte que R ≈ U·Vᵀ. Chaque facteur latent est un axe de goût sans étiquette — l'un pourrait être corrélé au tempo, un autre à une production acoustique par opposition à électronique — appris automatiquement à partir des écoutes observées plutôt que conçu à la main. Une fois U et V appris, l'affinité prédite pour toute paire auditeur-morceau, même jamais observée, est simplement le produit scalaire de leurs deux vecteurs latents.
Comment fonctionnent réellement les moindres carrés alternés (ALS) ?
ALS exploite le fait que, si optimiser conjointement U et V est un problème non convexe, optimiser U seul avec V maintenu fixe (ou inversement) est une simple régression linéaire régularisée avec une solution en forme close. Chaque passage ALS fixe d'abord V et, pour chaque ligne auditeur, résout les équations normales k×k (Vᵀ_ᵢV_ᵢ + λ|I_u|·I)u = Vᵀ_ᵢr_ᵢ en utilisant uniquement les morceaux observés de cet auditeur. Il fixe ensuite le U fraîchement mis à jour et résout un système analogue pour chaque ligne morceau. Alterner ces deux résolutions exactes par moindres carrés diminue de façon monotone l'erreur de reconstruction régularisée jusqu'à convergence.
Pourquoi utiliser une résolution par moindres carrés en forme close plutôt que la descente de gradient ?
Parce que chaque sous-problème ALS — mettre à jour une ligne pendant que l'autre matrice de facteurs est gelée — est une petite quadratique bien conditionnée à k inconnues, elle possède une solution exacte via les équations normales, obtenue ici par élimination gaussienne avec pivot partiel. Cela converge en une seule étape par ligne au lieu de nécessiter un taux d'apprentissage ajusté et de nombreuses itérations de gradient, rend chaque demi-passage trivialement parallélisable entre les lignes, et c'est la raison pour laquelle ALS est devenu l'algorithme de factorisation matricielle par défaut pour les systèmes à rétroaction implicite à grande échelle tels que les premiers recommandeurs de type Netflix et Spotify.
Que changent les contrôles k, régularisation et itérations ?
k définit la dimensionnalité de l'espace de goût latent — trop petit sous-ajuste des genres distincts, trop grand peut surajuster les écoutes observées éparses et nuire au RMSE de test. La force de régularisation λ pénalise les grandes valeurs de facteurs dans les équations normales, échangeant la précision d'entraînement contre la généralisation à des morceaux qu'un auditeur n'a pas encore écoutés. Le nombre d'itérations contrôle le nombre de passages alternés U/V exécutés ; le RMSE sur les entrées d'entraînement observées chute rapidement dans les premiers passages puis se stabilise à mesure que la factorisation converge.
Pourquoi le RMSE de test peut-il commencer à augmenter alors que le RMSE d'entraînement continue de baisser ?
Le RMSE d'entraînement est mesuré sur les écoutes exactes auxquelles ALS a été ajusté, donc avec suffisamment de facteurs latents et de passages, il peut continuer à diminuer vers zéro. Le RMSE de test est mesuré sur des écoutes délibérément mises de côté lors de l'ajustement, donc dès que les facteurs commencent à mémoriser les particularités des écoutes d'entraînement plutôt qu'une structure de goût générale, l'erreur de test peut plafonner ou remonter progressivement — la signature classique du surajustement, et c'est exactement pourquoi la régularisation λ et un k modéré comptent plus que la poursuite de l'erreur d'entraînement la plus basse possible.
De véritables moindres carrés alternés sur une matrice synthétique éparse auditeur-morceau : équations normales régularisées en forme close résolues par ligne via élimination gaussienne, RMSE suivi sur les entrées d'entraînement et de test à chaque passage, et une décomposition en valeurs propres de Jacobi projetant les facteurs latents appris en 3D pour une visualisation en direct.
3D · Moteur de rendu Three.js / WebGL · Cible 60 FPS · fonctionne entièrement côté client, sans installation