1
Spark ALS:新規ユーザーに推奨
質問 SparkでトレーニングされたALSモデルで新しいユーザーの評価を予測するにはどうすればよいですか?(新規=トレーニング時間中には表示されません) 問題 私はここで公式のSpark ALSチュートリアルに従っています: http://ampcamp.berkeley.edu/big-data-mini-course/movie-recommendation-with-mllib.html まともなMSEで良いレコメンダーを構築できますが、新しいデータをモデルに入力する方法に苦労しています。このチュートリアルでは、トレーニング前に最初のユーザーの評価を変更していますが、これは実際にはハックです。彼らは次のヒントを与えます: 9.2。行列係数の増加: このチュートリアルでは、トレーニングセットに評価を追加します。推奨事項を取得するためのより良い方法は、最初に行列因数分解モデルをトレーニングしてから、評価を使用してモデルを拡張することです。これが面白そうに思える場合は、MatrixFactorizationModelの実装を確認し、新しいユーザーと新しい映画のモデルを更新する方法を確認できます。 ただし、この実装は私にはまったく役立ちません。理想的には、私は次のようなものを探しています: predictions = model.predictAllNew(newinput) しかし、そのような方法は存在しません。元のRDDを変更することもできますが、モデルを再トレーニングする必要があるため、それも理想的なソリューションではありません。きっともっとエレガントな方法があるに違いない? 私が今いるところ: 新しいベクトルの潜在的な表現を見つける必要があると思います。元の論文によると、次のように計算できます。 バツあなた= (YTCあなたY+ λのI)− 1YTCあなたp (u )バツあなた=(YTCあなたY+λ私)−1YTCあなたp(あなた)X_u = (Y^T C^u Y + \lambda I)^{-1} Y^T C^u p(u) CあなたCあなたC^u 私の現在の試み: V = model.productFeatures().map(lambda x: (x[1])).collect() #product latent matrix Y Cui = alpha * np.abs(newinput) Cui = …