2017-07-27 9 views
0

Spark/Scalaによるユーザー/クリックデータに基づく推奨モデルにALSを使用しています。交互最小二乗の入力

評価欄がスコアである[0,1]

val als = new ALS() 
    .setImplicitPrefs(true) 
    .setRank(myrank) 
    .setRegParam(mylambda) 
    .setAlpha(myalpha) 
    .setMaxIter(numIter) 
    .setUserCol("myuseridx") 
    .setItemCol("myitemidx") 
    .setRatingCol("rating") 
val model = als.fit(training) 

私の質問は:暗黙のモデルのための入力データは、技術的には、すべてのユーザーのアイテムの組み合わせを含んでいなければならない、すなわち、も購入されていなかったもの?

答えて

1

ALSは、ユーザまたはアイテムマトリックスを固定し、最小二乗法を使用してそれを解決することによって推奨問題を解決します。基本的に、暗黙のデータセットの場合、1に設定されていないすべてのアイテムは0とみなされます。だから、肯定的な観察だけを含める必要があります。

ここにいくつかのより多くの議論:明示的なデータセットとは異なり、ここでモデルは、任意の入力観察に関連していないものを含む、入力として、すべてのユーザのアイテムの好みを取るべき http://yifanhu.net/PUB/cf.pdf

+0

」(従ってゼロ好みにヒント しかし、すべてのユーザーアイテム値をモデルに入力すると、スケーラビリティの問題が深刻化する " –

+0

はい、 そのとおりです。たとえあなたがゼロを明示的に設定しなくても、モデルはそれらをゼロとみなすでしょう。 – jamborta

+0

この引用はhttp://yifanhu.net/PUB/cf.pdf から引用されていますが、ここでは超パラメータαの目的は何かを覚えています。私はあなたが正しいと思います。しかし、今私はあなたが私を助けても気にしないなら、別の質問があります。私のモデルのAUCスコアをどのように計算できますか? 私は自分のトレーニングセットの評価ラベルを持っています.RDDの[評価]の中にゼロの値を入れないという論理に従えば、TP - FP - TN - FNスコアをどのように計算できるのか分かりません。 ありがとう –

関連する問題