나는 Spark ALS로 공동 작업 시스템을 구축했습니다. 등급 대신에 구입 한 제품을 기준으로 사용자에게 세트 제품을 권하고 싶습니다. 그래서 저는 사용자가 구입 한 모든 제품에 대해 1을 설정했습니다. ALS 시스템을 구축했습니다. 예측은 1 점 이상이고 rmse는 0.99입니다. implicitprefs = True로 설정했습니다. 아래 코드를 찾으십시오. rmse가 0.99로 너무 높지 않습니까? 올바른 접근 방법입니까?바이너리 입력이있는 ALS
참고 : 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))