Spark ALS で構築されたコラボレーティブ システムがあります。評価ではなく、ユーザーが購入したものに基づいてセット商品をユーザーに推奨したかったのです。そのため、ユーザーが購入したすべての製品に 1 を設定しました。ALSシステムを構築しました。予測はスコアが 1 以上で、rmse も 0.99 です。Implicitprefs =True を設定しました。以下のコードを見つけてください。rmseが0.99というのは高すぎませんか?それは正しいアプローチですか?
注: for ループでイテレーションとランク パラメータを改善しました。
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))