Sistemi di raccomandazione dinamici


14

Un sistema di raccomandazione misurerebbe la correlazione tra le valutazioni dei diversi utenti e genererebbe raccomandazioni per un determinato utente sugli elementi che potrebbero essere di suo interesse.

Tuttavia, i gusti cambiano nel tempo, quindi le classificazioni precedenti potrebbero non riflettere le preferenze correnti e viceversa. Una volta potresti aver messo "eccellente" in un libro che ora considereresti "non troppo disgustoso" e così via. Inoltre, anche gli interessi stessi cambiano.

Come dovrebbero funzionare i sistemi di raccomandazione in un ambiente che cambia?

  1. Un'opzione è quella di tagliare le classificazioni "vecchie", che potrebbero funzionare bene supponendo che tu definisca correttamente "vecchie" (puoi anche dire che le classificazioni non scadono mai e fingere che il problema non esista). Ma non è la migliore opzione possibile: ovviamente i gusti si evolvono, è un normale flusso di vita e non c'è motivo per cui non possiamo usare la conoscenza extra delle valutazioni passate una volta corrette.
  2. Un'altra opzione è quella di accogliere in qualche modo questa conoscenza aggiuntiva. Quindi non potremmo semplicemente trovare una "corrispondenza istantanea" per i tuoi attuali interessi, ma suggerirti le cose che potrebbero piacerti in seguito (al contrario di quelle che potrebbero piacerti ora ).

Non sono sicuro se lo sto spiegando abbastanza bene. Fondamentalmente sono a favore del secondo approccio e sto parlando di un Sistema di Raccomandazione che misurerebbe le correlazioni delle traiettorie del gusto e fornirà raccomandazioni che risponderanno a ... beh, chiamiamolo crescita personale - perché verranno da persone il cui La "traiettoria dei sapori" (e non solo la "istantanea dei sapori") è simile alla tua.

Ora la domanda: mi chiedo se esiste già qualcosa di simile all '"opzione 2" e, in caso affermativo, mi chiedo come funzioni. E se non esiste, sei il benvenuto a discutere su come dovrebbe funzionare! :)

Risposte:


8

Consiglio vivamente il documento Filtro collaborativo con dinamiche temporali di Yehuda Koren (Netflix Contest!) In cui questo problema viene discusso in dettaglio.

Sono d'accordo con l'autore, che la prima opzione ("tagliare") non è la strada da percorrere. È vero che le preferenze obsolete vengono ignorate in questo modo, ma a) alcune preferenze non cambiano mai, quindi si uccidono i dati per identificare i sempreverdi eb) alcune preferenze in passato sono necessarie per comprendere le preferenze del futuro ( ad es. acquistare la stagione 1 -> è probabile che tu acquisti la stagione 2).

Tuttavia, Koren non cerca di identificare esplicitamente tali traiettorie (vale a dire in modo da poter prevedere comportamenti di cambiamento futuri di un utente), dal momento che questo è un compito molto molto difficile. Potete immaginarlo tenendo presente che le "stazioni" di preferenza lungo una traiettoria NON sono legate al tempo, ma allo sviluppo personale di un utente, forse interrotte o attraversate da altre traiettorie o espresse semplicemente in un modo diverso. Ad esempio, se si passa da film d'azione hard a film d'azione, non esiste un "film d'azione soft entry" definito o qualcosa del genere. L'utente può accedere a quest'area in qualsiasi momento (nel tempo e nello spazio degli oggetti). Questo problema combinato con la scarsità dei dati rende quasi impossibile creare un modello fattibile qui.

Invece, Koren cerca di separare i dati passati in segnali di pattern a lungo termine e rumore quotidiano al fine di aumentare l'efficacia delle previsioni di valutazione. Applica questo approccio sia a SVD che a un semplice modello collaborativo di neigborbood. Sfortunatamente, non ho ancora finito con la matematica, quindi non posso fornire ulteriori dettagli al riguardo.

Nota aggiuntiva sulla modellizzazione esplicita delle traiettorie

L'area del mining di sequenze fornisce metodi da fare, ma il punto critico è trovare un'adeguata rappresentazione astratta degli oggetti (dal momento che l'utilizzo degli oggetti stessi non funzionerà a causa della scarsità), ad esempio il raggruppamento in tag. Tuttavia, sebbene questo approccio possa fornire alcune informazioni sul comportamento di alcuni utenti (Data Mining!), Potrebbe non essere pertinente quando si tratta dell'applicazione per tutti i clienti (ad esempio, la massa), quindi la modellazione implicita come suggerito da Koren potrebbe essere meglio alla fine.


Il giornale Yehuda è molto vicino a quello di cui stavo parlando, anche se in effetti non parla di "traiettorie del gusto". Forse hai ragione e il "tasso di variazione del gusto" non è fisso per nessuno .. Grazie per il link!
andreister,

Sì, questa è la prima cosa a cui ho pensato.
Stumpy Joe Pete,

2

Non sono a conoscenza di un sistema funzionante, ma non sarei sorpreso se Amazon, NetFlix o qualcuno avesse un tale sistema. Anche il motore di ricerca di Google potrebbe avere un tipo di sistema simile.

Ci ho pensato mentre frequentavo il corso del Dr. Ng lo scorso semestre. L'approccio che ho pensato inizialmente sarebbe ottimale sarebbe quello di aggiungere un fattore di ponderazione basato sull'età. Più un dato è attuale, più pesantemente sarebbe ponderato. Questo approccio sarebbe relativamente semplice e computazionalmente economico da implementare.

Tuttavia, dopo aver riflettuto più attentamente su questo approccio, penso che abbia gravi difetti per molte applicazioni. Personalmente, seguirò spesso un genere o uno spettacolo per un po 'di tempo, stanco di esso, passerò a qualcos'altro, ma tornerò al genere originale più tardi. Questo ciclo di riaccensione e esaurimento appare anche nella società.

Pertanto, mi sto inclinando verso un sistema leggermente più complicato. I dati dovrebbero essere divisi in due serie; dati correnti - la soglia dovrebbe variare in base all'applicazione più la lunghezza delle interazioni dell'individuo - che sarebbero ponderati più pesantemente e dati "storici" che verrebbero valutati più bassi con un lento declino dei valori nel tempo. In secondo luogo, verrebbe incluso un fattore per cercare di rilevare lo "spegnimento" laddove un interesse o un coinvolgimento pesante scompare improvvisamente. I dati "attuali" classificati allo stesso modo verrebbero riclassificati come se fossero storici.

Nessuno di questi approcci ha rigore o convalida, ma credo che varrebbe la pena di costruire alcune prove dell'ipotesi.


La tua idea di pesi inferiori per i vecchi dati è in effetti simile all'opzione 1. Invece, sto dicendo che l'intera traiettoria del cambiamento del gusto è importante - cioè, se ieri ti è piaciuto il genere A e oggi ti piace il genere B, il sistema guarderebbe le altre persone con lo stesso "AB- ??" il gusto si muove e suggerirei che domani vorresti il ​​genere C.
andreister

1

A mio avviso, può funzionare una versione modificata del filtro collaborativo. Tuttavia, sarà necessario mantenere un timestamp su ogni classifica e imporre una penalità durante il calcolo del peso di una classifica più vecchia.

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.