Filtraggio collaborativo tramite fattorizzazione a matrice con funzione di perdita logistica


9

Prendi in considerazione il problema del filtro collaborativo. Abbiamo una matrice di taglia #user * #items. se l'utente mi piace l'articolo j, se l'utente non ama l'articolo j e M_ {i, j} =? se non ci sono dati sulla coppia (i, j). Vogliamo prevedere M_ {i, j} per utenti futuri, coppie di articoli.M i , j = 1 M i , j = 0 M i , j = ? M i , jMMi,j=1Mi,j=0Mi,j=?Mi,j

L'approccio di filtraggio collaborativo standard consiste nel rappresentare M come prodotto di 2 matrici U×V tale che ||MU×V||2 sia minimo (ad es. Minimizzare l'errore quadratico medio per elementi noti di M ).

Per me la funzione di perdita logistica sembra più adatta, perché tutti gli algoritmi utilizzano MSE?


1
In questo caso ha senso, ma il più delle volte M_i, j può essere una valutazione e in tal caso l'MSE è più utile. Direi che l'MSE è più generale.
Gio

Risposte:


9

Usiamo la perdita logistica per la fattorizzazione implicita della matrice su Spotify nel contesto delle raccomandazioni musicali (usando i conteggi di gioco). Abbiamo appena pubblicato un documento sul nostro metodo in un prossimo seminario NIPS 2014. L'articolo è intitolato Fattorizzazione a matrice logistica per dati di feedback impliciti e può essere trovato qui http://stanford.edu/~rezab/nips2014workshop/submits/logmat.pdf

Il codice per l'articolo può essere trovato sul mio Github https://github.com/MrChrisJohnson/logistic-mf


1
L (R | X, Y, β) = Prod (p (lui | xu, yi, βu, βi) ^ α.r_ui * (1 - p (lui | xu, yi, βu, βi)) ^ (1 - α.r_ui) A ha dato un'occhiata al tuo codice e usi 1 + α.r_ui l64: A = (self.counts + self.ones) * A github.com/MrChrisJohnson/logistic-mf/blob/master/ … Pertanto, mi sto perdendo qualcosa? Cordiali saluti
fstrub

Ho dato un'occhiata al documento che hai pubblicato. È molto interessante poiché la fattorizzazione a matrice con regressione logistica non è stata studiata attivamente. Ad ogni modo, sono un po 'confuso con la tua funzione Loss (2) L (R | X, Y, β) = Prod (p (lui | xu, yi, βu, βi) ^ α.r_ui * (1 - p (lui | xu, yi, βu, βi)) Per quanto riguarda (3), penso che ci sia un errore di battitura L (R | X, Y, β) = Prod (p (lui | xu, yi, βu, βi) ^ α .r_ui * (1 - p (lui | xu, yi, βu, βi)) ^ (1 + α.r_ui ) Ma, in realtà, sono ancora un po 'confuso. Anzi, mi sarei aspettato una legge simile a Bernouilli come as
fstrub,

Forse sono piuttosto in ritardo sull'argomento .. qualcuno ha avuto la possibilità di provare questo algo al di fuori del contesto della raccomandazione musicale e invece del contesto classico della raccomandazione sul prodotto? Grazie.
Marco Fumagalli,

3

La maggior parte degli articoli che troverai sull'argomento tratterà delle matrici in cui le valutazioni sono su una scala [0,5]. Nel contesto del Premio Netflix, ad esempio, le matrici hanno valutazioni discrete da 1 a 5 (+ i valori mancanti). Ecco perché l'errore al quadrato è la funzione di costo più diffusa. Alcune altre misure di errore come la divergenza di Kullback-Leibler possono essere viste.

Un altro problema che può verificarsi con la fattorizzazione a matrice standard è che alcuni degli elementi delle matrici U e V possono essere negativi (in particolare durante i primi passi). Questo è un motivo per cui non dovresti utilizzare la perdita di log qui come funzione di costo.

Tuttavia, se stai parlando di fattorizzazione a matrice non negativa , dovresti essere in grado di utilizzare la perdita del log come funzione di costo. Sei in un caso simile alla regressione logistica in cui la perdita di log viene utilizzata come funzione di costo: i valori osservati sono 0 e 1 e si prevede un numero (probabilità) tra 0 e 1.

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.