Ich brauche einige Vorschläge, um ein gutes Modell zu bauen, um Empfehlung zu machen, indem man Collaborative Filtering
des Funkens verwendet. Es gibt einen Beispielcode in official website. Ich bin auch dran vorbei:wie RMSE (mittlerer quadratischer Fehler) klein, wenn ALS von Funken zu verwenden?
from pyspark.mllib.recommendation import ALS, MatrixFactorizationModel, Rating
# Load and parse the data
data = sc.textFile("data/mllib/als/test.data")
ratings = data.map(lambda l: l.split(','))\
.map(lambda l: Rating(int(l[0]), int(l[1]), float(l[2])))
# Build the recommendation model using Alternating Least Squares
rank = 10
numIterations = 10
model = ALS.train(ratings, rank, numIterations)
# Evaluate the model on training data
testdata = ratings.map(lambda p: (p[0], p[1]))
predictions = model.predictAll(testdata).map(lambda r: ((r[0], r[1]), r[2]))
ratesAndPreds = ratings.map(lambda r: ((r[0], r[1]), r[2])).join(predictions)
RMSE = ratesAndPreds.map(lambda r: ((r[1][0] - r[1][1])**2).mean())**.5)
print("Root Mean Squared Error = " + str(RMSE))
Ein gutes Modell braucht den RMSE so klein wie möglich.
Ist das, weil ich nicht den richtigen Parameter auf
ALS.train
Methode, wie Rand numIterations und so weiter?Oder ist das, weil mein Datensatz klein ist, um RMSE groß zu machen?
Also könnte mir jemand helfen, herauszufinden, welche Ursache RMSE groß ist und wie man es beheben kann.
Zusatz:
Wie @eliasah sagte, ich brauche einige Details hinzuzufügen, um den Antwortsatz zu verengen. Lassen Sie uns diese besondere Situation betrachten:
Jetzt, wenn ich ein Empfehlungssystem aufbauen möchte, um Musik meinen Klienten zu empfehlen. Ich habe ihre Verlaufsrate für Titel, Alben, Künstler und Genres. Offensichtlich baut diese 4-Klasse eine Hierarchiestruktur auf. Tracks gehören direkt zu Alben, Alben gehören direkt Künstlern, und Künstler können verschiedenen Genres angehören. Schließlich möchte ich alle diese Informationen nutzen, um einige Tracks auszuwählen, die den Kunden empfohlen werden.
Also, was ist die beste Praxis, um ein gutes Modell für diese Situation zu bauen und sicherzustellen, dass RMSE so klein wie möglich für die Vorhersage zu machen.
Es gibt zu viele mögliche Antworten und gute Antworten würden für dieses Format zu lang sein. Bitte fügen Sie Details hinzu, um die Antwortmenge einzuschränken oder ein Problem zu isolieren, das in einigen Absätzen beantwortet werden kann. – eliasah
@eliasah Ich füge eine bestimmte Situation hinzu. vielleicht macht es leichter zu antworten. – sydridgm