Ich habe ein kollaboratives System mit Spark ALS gebaut. Anstatt zu bewerten, wollte ich dem Benutzer basierend auf dem, was er gekauft hat, empfohlene Produkte empfehlen. Also habe ich für alle Produkte, die der Benutzer gekauft hat, 1 gesetzt. und baute ein ALS-System. Die Vorhersage hat mehr als 1 als Ergebnis und auch RMSE ist 0,99. Ich habe implicyprefs = True gesetzt. Bitte finden Sie den Code unten. Ist es nicht zu hoch, um 0,99 zu haben? Ist es ein richtiger Ansatz?ALS mit Binäreingang
Hinweis: Ich habe Iteration und Rang-Parameter mit For-Schleife verbessert.
Ratings = Ratings.withColumn("Ordered",Ratings["Ordered"].cast('int'))
Ratings = Ratings.withColumn("UserId", Ratings["UserId"].cast('int'))
Ratings = Ratings.withColumn("ProductId", Ratings["ProductId"].cast('int'))
Ratings = Ratings.na.drop()
(train, test) = Ratings.randomSplit([0.8, 0.2])
Model = (ALS(maxIter=3,regParam=0.01,rank=4,
userCol="UserId",itemCol="ProductId",ratingCol="Ordered",
implicitPrefs=True,nonnegative=True))
Fit = Model.fit(train)
print(Model.getImplicitPrefs)
Pred = Fit.transform(test)
Pred = Pred.na.drop()
Pred.toPandas().to_csv("Prediction.csv")
print("before printing")
#print(Pred.show(100))
Evaluator = RegressionEvaluator(metricName="rmse",labelCol="Ordered",predictionCol="prediction")
rmse = Evaluator.evaluate(Pred)
print("rmse is",str(rmse))