Un sistema di raccomandazioni tiene un registro di quali raccomandazioni sono state fatte a un determinato utente e se quell'utente accetta la raccomandazione. È come
user_id item_id result
1 4 1
1 7 -1
5 19 1
5 80 1
dove 1 indica che l'utente ha accettato la raccomandazione mentre -1 indica che l'utente non ha risposto alla raccomandazione.
Domanda: se ho intenzione di formulare raccomandazioni per un gruppo di utenti in base al tipo di registro descritto sopra e desidero massimizzare i punteggi MAP @ 3, come devo gestire i dati impliciti (1 o -1)?
La mia idea è di trattare 1 e -1 come valutazioni e prevedere la valutazione usando algoritmi di tipo macchine di fattorizzazione. Ma questo non sembra giusto, data l'asimmetria dei dati impliciti (-1 non significa che la raccomandazione non piaccia all'utente).
Modifica 1 Pensiamoci nel contesto di un approccio di fattorizzazione a matrice. Se trattiamo -1 e 1 come voti, ci sarà qualche problema. Ad esempio, all'utente 1 piace il film A che segna il punteggio più alto in un fattore (ad esempio con musica di sottofondo gloriosa) nello spazio del fattore latente. Il sistema raccomanda il film B che ha anche un punteggio elevato nella "musica di sottofondo gloriosa", ma per qualche ragione l'utente 1 è troppo impegnato per esaminare la raccomandazione, e abbiamo un film con rating -1 B. Se trattiamo solo 1 o -1 allo stesso modo , quindi il sistema potrebbe essere scoraggiato a raccomandare i film con la gloriosa BGM all'utente 1 mentre l'utente 1 ama ancora i film con la gloriosa BGM. Penso che questa situazione debba essere evitata.