2

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))
4

2 に答える 2

0

アプローチを考える必要があります。データ セットにバイナリ フィードバックしかない場合、使用するメトリックは適切ではありません。RMSE は回帰 (つまり、連続値の予測) に使用されます。暗黙的なフィードバックで動作するレコメンデーション システムの場合、適切な指標は適合率または再現率です。クレモンセシ等。トップ N レコメンダー システムの評価に関する優れた論文を書いています ( https://dl.acm.org/citation.cfm?id=2507225 )。

于 2017-10-13T07:32:33.550 に答える