5

sto provando l'algoritmo di filtraggio collaborativo implementato in Spark e sto correndo nella seguente problema:Spark MLLib filtraggio collaborativo con nuovo utente

Supponiamo che mi alleno un modello con i seguenti dati:

u1|p1|3 
u1|p2|3 
u2|p1|2 
u2|p2|3 

Ora, se i test con i seguenti dati:

u1|p1|1 
u3|p1|2 
u3|p2|3 

non ho mai visto alcun valutazioni per l'utente 'U3', presumibilmente perché l'utente non compare nei dati di addestramento. È questo a causa del problema della partenza a freddo? Avevo l'impressione che questo problema si applicasse solo a un nuovo prodotto. In questo caso, mi sarei aspettato una previsione per "u3" poiché "u1" e "u2" nei dati di addestramento hanno informazioni di classificazione simili a "u3". È questa la distinzione tra filtraggio collaborativo basato su modello e basato sulla memoria?

+0

sei stato in grado di allenarti con utente e prodotto come non-interi? Quando provo ad allenarmi in quel formato ottengo l'errore affermando: Rating, (int (self.user), int (self.product), float (self.rating)) – jKraut

+0

Sembra che abbiamo riscontrato problemi simili: come prevedere per nuovi utenti senza dover riqualificare l'intero modello? –

risposta

1

Suppongo tu stia parlando dell'algoritmo ALS?

'u3' non è una coppia del set di allenamento e quindi il modello non sa nulla di quell'utente. Tutto ciò che si potrebbe fare è forse restituire il punteggio medio su tutti gli utenti.

Esaminare il codice Scala Spark 1.3.0: Lo MatrixFactorizationModel restituito da ALS.train() tenta di cercare utente e prodotto nei vettori di funzionalità quando si chiama predict(). Ricevo un NoSuchElementException quando provo a prevedere una valutazione di un utente sconosciuto. È solo implementato in questo modo.

+0

Grazie. È quello che pensavo. Esistono altri algoritmi di filtraggio collaborativo supportati da MLLib oltre a ALS? –

+0

ALS sembra essere l'unico algoritmo di Spark 1.3.0: https://spark.apache.org/docs/latest/mllib-guide.html – stholzm

Problemi correlati