Quali metodi statistici ci sono per raccomandare un film come su Netflix?


14

Sto cercando di implementare un modello dinamico per raccomandare un film a un utente. La raccomandazione dovrebbe essere aggiornata ogni volta che l'utente guarda un film o lo valuta. Per semplicità, sto pensando di prendere in considerazione due fattori:

  • le valutazioni passate di altri film da parte dell'utente
  • il tempo in cui l'utente ha guardato alcuni film passati

Come si potrebbe impostare un tale modello e cosa raccomanda la letteratura accademica?

Sono nuovo in questo campo e suppongo che un modello di regressione lineare possa fornire un buon risultato, non pensare a metodi più complessi per evitare di imporre inutili incertezze nelle stime dei parametri. Ma forse ci sono già metodi consolidati che sono comunemente usati nella pratica?


3
Non penso che questo sia troppo ampio per essere responsabile. Ad esempio, ha 2 risposte votate.
gung - Ripristina Monica

2
Prova i set di dati di mining Mining di coursera e il suo libro gratuito!
Felipe Gerard,

2
Probabilmente vuoi cercare la fattorizzazione di matrice e / o tensore.
Marc Claesen,

1
@ usεr11852 La mia risposta è più ampia della domanda.
Shadowtalker,

1
@ usεr11852, il titolo della domanda chiede: "Quali metodi statistici ci sono ...?" L'ultima frase chiede se esistono metodi diversi dalla regressione. Penso che diverse risposte di seguito forniscano questo tipo di informazioni.
gung - Ripristina Monica

Risposte:


14

Questo è in realtà un problema relativamente famoso nel campo dell'apprendimento automatico. Nel 2006 Netflix ha offerto $ 1 milione all'algoritmo che ha fornito il miglior miglioramento ragionevole al loro sistema di raccomandazione. La teoria della soluzione vincente è brevemente discussa in questo libro di testo Caltech sull'apprendimento automatico introduttivo.

Fondamentalmente è stato utilizzato un metodo di apprendimento dell'ensemble . In particolare, un tipo di fusione o accatastamento stato impiegato . Questo non è banale, ma piuttosto intuitivo. Per capire l'intuizione di usare diversi approcci statistici in armonia, considera le diverse ragioni per cui a persone diverse piacciono gli stessi film: ad esempio, Joe potrebbe piacere a Topgun perché ama i film d'azione anni '80, mentre a Jane piace Topgun perché le piacciono i film con le colonne sonore di Kenny Loggins. Pertanto, il fatto che entrambi gli spettatori abbiano guardato (e valutato il film in modo altamente qualificato) non significa necessariamente che apprezzeranno altri film con alta probabilità. L'algoritmo di previsione sarebbe idealmente in grado di soddisfare queste differenze, almeno in parte.

Ciò può rendere la soluzione abbastanza semplice, ma bilanciare algoritmi concorrenti e dare la priorità all'ipotesi migliore per ogni caso non è sicuramente semplice. Il fatto che Netflix abbia offerto una taglia così grande dovrebbe rendere piuttosto evidente l'entità della sfida.

Se hai appena iniziato l'apprendimento automatico, verificare le risorse di cui sopra può essere utile a seconda del tuo livello di interesse e delle tue conoscenze matematiche. Quindi la regressione probabilmente funzionerebbe bene, ma è possibile ottenere prestazioni significativamente migliori.


2
+1 per il premio Netflix. Come hai sottolineato, quel premio è un buon indicatore di quanto sia grande questa sfida.
Cort Ammon,

11

La metà della sfida in questi problemi è sapere cosa cercare.

Potresti aver aggiunto il tag senza accorgertene, ma in realtà stai cercando informazioni sui sistemi di raccomandazione . Potresti voler iniziare con il filtro collaborativo , o meglio ancora il Manuale introduttivo ai sistemi di raccomandazione di Ricci, Rokach e Shapira citati in quella pagina.


Ho effettivamente esaminato più a fondo il tag e mi sono imbattuto principalmente in esempi di filtro collaborativo. Il problema che ho con quel metodo è che dipende dall'input di altri utenti, se ho capito il concetto. Sono più alla ricerca di metodi in una situazione di un utente, nessun altro dato o eventualmente altri dati. Dai un'occhiata alle tue altre referenze.
John Andrew

1
@JohnAndrews: Penso che ssdecontrol ti dia i consigli più rilevanti. È necessario esaminare la documentazione relativa ai sistemi di raccomandazione. Ci sono molte tecniche coinvolte, ad es. NNMF , Funk SVD , molte diverse varianti dei classificatori dei vicini più vicini , ecc. Per citarne alcune ovvie. Alla fine vuoi usare il filtro collaborativo ma non puoi semplicemente "tuffarti" senza alcun background.
usεr11852 dice Reinstate Monic il

@JohnAndrews CrossValidated è di solito un brutto posto per iniziare a conoscere un argomento, soprattutto se cerchi solo per tag. Che ne dici di guardare i riferimenti che ho collegato invece? Gli articoli statistici di Wikipedia non sono sempre affidabili, ma sono abbastanza buoni e citano molti riferimenti.
Shadowtalker,

6

Dovresti dare un'occhiata al corso di Andrew Ng su Coursera: https://www.coursera.org/learn/machine-learning Ha una lezione sulla costruzione di sistemi di raccomandazione, che sembra essere quello che stai cercando. Essenzialmente è una forma di regressione lineare che impara gli attributi sintetici per i film da persone che hanno valutato i film e li utilizza per prevedere raccomandazioni per le persone che non hanno valutato / guardato i film.


3
Benvenuti nel nostro sito! Grazie per aver incluso alcune informazioni che sintetizzano i contenuti del collegamento, piuttosto che fornire semplicemente un collegamento "nudo" - lo apprezziamo.
Silverfish,

4

In the Netflix Challenge (ottobre 2006 - settembre 2009) un grande ensemble (107 sottomarini separati) alla fine ha vinto il primo premio da $ 1 milione, ma è istruttivo notare che i primi algoritmi semplici (non assemblati) per battere il Cinematch di Netflix il benchmark era basato su un SVD generalizzato (matrice sparsa). Questa prima pietra miliare del battere Cinematch è stata raggiunta solo 6 giorni dopo l'inizio della competizione da una squadra chiamata WXYZConsulting.

SVD (Singular Value Decomposition) è un algoritmo di fattorizzazione a matrice in cui si inizia con un 2d[user, movie] matrice con una valutazione (da 1 a 5 stelle) in ciascuna[u, m] posizione (*) e la si divide in 3 matrici in cui la matrice centrale è una matrice quadrata di interazioni latenti tra utenti e film.

È possibile ridurre o aumentare il grado della matrice quadrata per includere rispettivamente più o meno tali interazioni tra fattori latenti.

Esistono diverse implementazioni software gratuite di SVD sparse veloce / efficiente. Ad esempio redsvd o vowpal-wabbit, quindi prima di scrivere il tuo, potresti volerli provare.

(*) La maggior parte di queste voci sono pari a zero, poiché la maggior parte degli utenti non ha valutato la maggior parte dei film. cioè la matrice è molto scarsa.

Riferimenti:


Cosa ha usato Netflix prima?
jona,

2
Un algoritmo chiamato "Cinematch" che non è pubblico ma è stato descritto come "combinazione lineare di vari fattori perfezionati nel corso degli anni", ad esempio valutazione globale media ponderata (G) + valutazione media utente ponderata [u] + media film ponderata [m] Valutazione, ecc ...
arielf

Grazie per la risposta elaborata. Ci scaverà dentro. Per quanto riguarda le combinazioni lineari, non è un grosso problema di quella parametrizzazione eccessiva? Questo sarebbe il mio approccio preferito. Ma SVD sembra promettente.
JohnAndrews il

Non è un problema se aggiungi solo fattori che migliorano l' errore di generalizzazione . Ovviamente, è necessario testare ogni aggiunta di questo tipo su dati invisibili per ottenere la sicurezza necessaria.
arielf
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.