MACHINE LEARNING & RECOMMENDER SYSTEMS · 2026
Matrix Completion su MovieLens
Un confronto tra SVP, SVT, una variante di ADMiRA e due baseline per stimare i rating mancanti. Nel nostro esperimento, una baseline regolarizzata ha ottenuto i risultati migliori.
ESPLORA IL CODICE SU GITHUB ↗01 / IL PROBLEMA
Come stimare i voti che mancano?
Questo progetto nasce da un lavoro universitario svolto con Matteo Mancini. Abbiamo studiato un problema comune nei sistemi di raccomandazione: ogni utente valuta soltanto una piccola parte dei film disponibili. Il resto della matrice è vuoto.
L'idea alla base della matrix completion è che le preferenze degli utenti possano essere descritte, almeno in parte, da poche caratteristiche latenti. Abbiamo voluto capire quanto funzionasse questa ipotesi sul dataset MovieLens Latest Small.
02 / IL METODO
Confrontare i modelli senza usare il test per sceglierli
Abbiamo confrontato SVP, SVT e una variante didattica ispirata ad ADMiRA. A questi abbiamo affiancato due riferimenti semplici: la media globale dei rating e un modello che tiene conto degli effetti dei singoli utenti e film.
Bias utente–film
Parte dalla media generale e la corregge in base all'utente e al film.
- Stima la media globale sul training.
- Stima un effetto per ciascun utente e ciascun film.
- Regolarizza gli effetti per ridurre il rischio di adattarsi troppo ai dati.
Esempio: Un utente tende a dare voti alti? Un film riceve spesso voti bassi? Il modello tiene conto di entrambe le tendenze.
- Ripeti fino al criterio di arresto:
- Controlla la variazione dei parametri.
Le implementazioni includono ulteriori controlli numerici e criteri di arresto. SVT usa una variante prossimale; ADMiRA è una variante didattica, non l'algoritmo canonico.
Cattura differenze sistematiche con pochi elementi interpretabili.
Non rappresenta direttamente le interazioni personali tra un utente e uno specifico film.
Un aggiornamento alla volta
Qui i numeri sono calcolati nel browser su una matrice sintetica 2×2. Non sono i risultati di MovieLens. Puoi provare tutti e cinque i metodi: a ogni clic viene calcolato un nuovo aggiornamento. I parametri sono scelti per questo esempio, non quelli ottimizzati su MovieLens.
Come usarlo: scegli uno dei cinque metodi, poi premi «Iterazione successiva». A ogni passo confronta la stima con i tre voti conosciuti. Il quarto voto è nascosto: il modello lo deve stimare senza conoscere il valore vero.
SVP: conserva una componente singolare (rango 1). Cambiare metodo riavvia la simulazione.
Il punto interrogativo non entra nel calcolo degli errori.
La cella arancione è il voto da stimare.
1. Calcoliamo gli errori sui tre voti noti. Con passo 1 correggiamo le tre celle osservate, lasciando invariata quella sconosciuta.
2. La matrice corretta ha valori singolari 6,60 e 1,21. Misurano il peso delle componenti SVD.
3. SVP mantiene la componente maggiore ed elimina la seconda: rango 1.
Se premi il pulsante, l’errore sui tre voti conosciuti passerà da 3,87 a 0,43. Questo non misura la qualità della previsione del voto nascosto.
Attenzione: l’RMSE sui voti conosciuti è un errore di addestramento, non un controllo della previsione mancante. Senza conoscere quel quarto voto non possiamo sapere se la stima sia corretta. I valori della matrice possono anche uscire dall’intervallo 0–5: qui non applichiamo limiti artificiali alle previsioni.
Dimostrazione numerica ridotta: schema didattico calcolato per tutti e cinque i metodi; per ADMiRA-inspired il passo di selezione è ridotto a una sola direzione e non replica il solver originale, ma dimensioni e parametri scelti per essere leggibili. L'RMSE mostrato è sul piccolo esempio osservato, non sulla validation del progetto.
Il criterio di confronto è l'RMSE, la radice dell'errore quadratico medio. Penalizza maggiormente gli errori grandi: se prevediamo 4 stelle quando il voto reale è 2, l'errore pesa più di una previsione sbagliata di mezza stella.
Tutti i modelli sono stati confrontati sugli stessi rating di validation. Abbiamo poi valutato una sola volta sul test il modello selezionato.
03 / I RISULTATI
La baseline regolarizzata è risultata la migliore
Tra i tre metodi di matrix completion, SVP con rango 5 ha ottenuto l'RMSE più basso sulla validation. Ma il modello con effetti utente–film, molto più semplice, ha fatto meglio di tutti.
Il modello selezionato è stato quindi valutato sui 15.126 rating del test finale, ottenendo un RMSE di 0,8781. Sui film già presenti nel training l'RMSE è stato 0,8713; sui 701 rating relativi a film non osservati nel training è salito a 1,0068.
Questi numeri suggeriscono che prevedere i rating di film non visti durante l'addestramento è più difficile. Non dimostrano, invece, che le baseline siano sempre migliori dei metodi low-rank: il risultato riguarda le implementazioni e le configurazioni che abbiamo effettivamente provato.
04 / CODICE E VERIFICHE
Che cosa si può controllare nel repository
Abbiamo pubblicato codice, configurazioni, risultati registrati e test automatici. Il repository distingue i controlli eseguibili senza MovieLens da quelli che richiedono l'archivio originale. Quando manca, questi ultimi vengono segnalati come saltati, non come superati.
Alcuni algoritmi hanno raggiunto il numero massimo di iterazioni; non dichiariamo quindi una convergenza che non abbiamo verificato. La CI controlla il codice e gli artefatti offline, ma non ripete l'intero esperimento né dimostra un isolamento del processo a livello di sistema operativo.
CODICE, RISULTATI E DOCUMENTAZIONE SU GITHUB ↗