2017-07-27 2 views
0

Wir verwenden ALS für ein Empfehlungsmodell basierend auf Benutzer-/Klickdaten über Spark/Scala.Eingang für Alternating Least Square

Die Bewertung Spalte ist eine Punktzahl [0,1]

val als = new ALS() 
    .setImplicitPrefs(true) 
    .setRank(myrank) 
    .setRegParam(mylambda) 
    .setAlpha(myalpha) 
    .setMaxIter(numIter) 
    .setUserCol("myuseridx") 
    .setItemCol("myitemidx") 
    .setRatingCol("rating") 
val model = als.fit(training) 

Meine Frage ist: müssen die Eingabedaten für die implizite Modelle enthalten technisch alle Kombinationen Benutzer Artikel, das heißt auch diejenigen, die nicht gekauft wurden?

Antwort

1

ALS löst das Empfehlungs-Problem, indem es den Benutzer oder die Element-Matrix fixiert und mit kleinsten Quadraten löst. Für einen impliziten Datensatz bedeutet dies im Wesentlichen, dass alle Elemente, die nicht auf eins festgelegt sind, als Nullen betrachtet werden. Sie müssen also nur die positiven Beobachtungen einbeziehen.

Einige weitere Diskussion hier: http://yifanhu.net/PUB/cf.pdf

+0

„Im Gegensatz zu expliziten Datensätzen, hier das Modell alle Benutzer-item Präferenzen als Eingabe verwenden sollten, einschließlich derjenigen, die nicht auf eine Eingangsbeobachtungs bezogen (also anspielend auf einen Null-Präferenz Dies ist entscheidend, da die gegebenen Beobachtungen inhärent auf eine positive Präferenz ausgerichtet sind und daher das Benutzerprofil nicht gut widerspiegeln Wenn jedoch alle User-Item-Werte als Eingabe für das Modell verwendet werden, führt dies zu ernsthaften Skalierbarkeitsproblemen. –

+0

Ja , das ist richtig. Wie ich bereits erwähnt habe, würden Sie die Nullen nicht explizit setzen, sondern das Modell würde sie als Nullen betrachten. – jamborta

+0

Dieses Zitat kommt von: http://yifanhu.net/PUB/cf.pdf aber jetzt, dass ich mich erinnere, was der Zweck des Hyperparameters Alpha ist. Ich glaube, Du hast recht. Aber jetzt habe ich eine andere Frage, wenn es dir nichts ausmacht, mir zu helfen. Wie kann ich den AUC-Score meines Modells berechnen? Ich habe das Bewertungsetikett meines Trainingssatzes und wenn ich der Logik folge, den Nullwert nicht innerhalb meiner RDD [Ratings] zu platzieren, habe ich Schwierigkeiten zu verstehen, wie ich meinen TP - FP - TN - FN Score berechnen kann. danke –