2016-04-11 1 views
0

Sagen wir, ich habe eine Datenbank mit Benutzern, die Produkte kaufen (Es gibt keine Bewertungen oder ähnliches) und ich möchte andere Produkte für sie empfehlen. Ich verwende ATL.trainImplicit, wo die Trainingsdaten hat das folgende Format:Verwendung von trainImplicit für ein Empfehlungssystem

[Rating(user=2, product=23053, rating=1.0), 
Rating(user=2, product=2078, rating=1.0), 
Rating(user=3, product=23, rating=1.0)] 

Also alle Bewertungen in der Trainingsdatenmenge ist immer 1.

Ist es normal, dass die Vorhersagen Bewertungen gab min Wert -0.6 und max Bewertung 1.85? Ich würde etwas zwischen 0 und 1 erwarten.

+0

Ihre Benutzer haben die Produkte nur einmal gekauft? alle von ihnen einmal? –

Antwort

2

Ja, das ist normal. Die implizite Version von ALS versucht im Wesentlichen, eine binäre Präferenzmatrix P (statt einer Matrix expliziter Bewertungen, R) zu rekonstruieren. In diesem Fall werden die "Bewertungen" als Konfidenzniveaus behandelt - höhere Bewertungen entsprechen einer höheren Konfidenz, dass die binäre Präferenz p(ij) als 1 anstelle von 0 rekonstruiert werden sollte.

Allerdings löst ALS im Wesentlichen ein (gewichtetes) Kleinste-Quadrate-Regressionsproblem, um die Benutzer- und Objektfaktormatrizen zu finden, die die Matrix rekonstruieren. Es ist also nicht garantiert, dass die vorhergesagten Werte in dem Bereich [0, 1] liegen (obwohl sie in der Praxis normalerweise sind, schließen Sie zu diesem Bereich). Es reicht aus, die Vorhersagen als "undurchsichtige" Werte zu interpretieren, bei denen höhere Werte einer größeren Wahrscheinlichkeit entsprechen, dass der Benutzer das Produkt kauft. Das reicht aus, um empfohlene Produkte nach vorhergesagtem Score zu sortieren.

(Anmerkung item-item oder user-user Ähnlichkeiten werden typischerweise unter Verwendung der Kosinusähnlichkeit zwischen den Faktorvektoren berechnet, so dass diese Werte in [-1, 1] liegen. Diese Berechnung ist nicht direkt in Spark verfügbar, kann aber durchgeführt werden dich selber).

Verwandte Themen