2010-03-31 9 views
6

Ho bisogno di aiuto per la progettazione di un algoritmo per consigli sui film.Algoritmo: crea un consiglio per i film che potrebbero piacerti

Ogni utente nel sistema classifica film su un punteggio compreso tra 1 e 100.

tabelle sono costituite da:

Table Movies 
ID Name Year Rating Runtime 

Table Con_MoviesToGenres 
MovieID GenreID 

Table Con_MovieToUser 
MovieID UserID Grade 

Sto cercando di costruire una query SELECT per restituire 5 film più consigliato per un film specifico.

Tenendo presente, voglio integrare in qualche modo, generi simili, gradi più alti & film Valutazione (così si vuole essere raccomandato un film d'valutato R per un film PG nominale, a meno che non è davvero consigliabile in ogni altro aspetto). Inoltre, se il film corrisponde a più di un genere, aumenterà il rapporto di raccomandazione.

Bonus: se un utente dà un voto basso a un film -> perderà il rapporto di raccomandazione.

Aggiornamento: Intendevo per un utente e un titolo. Ogni volta che un utente inserisce una "pagina del film", riceverà consigli per altri film che potrebbero piacere.

risposta

4
+0

ahhhhhhhhhhhhhhhhhhhhhhhhh – Faruz

+0

Questo è complicato, lo so, ma non ho mai detto che non lo fosse. (questa linea è stolon;) –

1

Questo deve essere fatto a livello atomico: calcolare le raccomandazioni per un titolo O utente per volta.

Non esiste alcun modo per inserire tutti i dettagli in una query SQL. Questo deve essere fatto è codice reale.

+0

ho pensati per un utente e un titolo. Ogni volta che un utente inserisce una "pagina del film", riceverà consigli per altri film che potrebbero piacere. – Faruz

+0

Buono per te. La mia risposta è sempre la stessa. –

1

non potrebbero essere rilevanti per SQL, ma se vi piace pitone, c'è qualche tutorial su questo argomento in un libro intitolato Collective Intelligence

2

se l'utente A e l'utente B hanno visto 10 film in comune, e non v'è un alta correlazione positiva tra i loro giudizi (che implicano entrambi hanno opinioni simili sui film), si potrebbe quindi prendere un film cui Utente B ha dato un voto alto e raccomandarlo all'Utente A.

Per fare qualcosa del genere, forse puoi precomporre una tabella aggiuntiva che mappa Utente X e Utente Y al numero di film che hanno visto in comune e la correlazione di Pearson tra le loro valutazioni

Quando un utente chiede di raccomandazione si potrebbe usare questa tabella per trovare un utente altamente correlato, e quindi consigliare qualcosa che ha visto e piaciuto che questa persona non ha

Per le situazioni in cui un utente non ha abbastanza utenti comuni con qualcun altro, potresti ricorrere a raccomandare il film con il punteggio più alto nel complesso che l'utente non abbia visto

+0

Ma se entrambi hanno visto gli stessi film, ma l'utente B li ha davvero sgraditi mentre l'utente A li ha amati? – Faruz

+0

quindi la loro correlazione sarebbe inferiore e potresti scegliere qualcun altro invece dell'Utente B, per trovare un film per l'Utente A –

1

Si potrebbe voler controllare la concorrenza NetFlix. Trovato un articolo su di esso here. Potresti almeno darti qualche buona idea ...

Problemi correlati