3

私はScalaでプログラミングしていますが、言語はここでは重要ではありません。Spark MLlib - 暗黙のフィードバックコラボレーティブフィルタを検証する方法

暗黙のフィードバック協調フィルタ(ALS.trainImplicit)への入力は、この場合には、製品の図である。

  • 評価( "USER1"、 "製品1"、21.0)//は、USER1の手段製品1の 詳細を見た21回
  • 評価( "USER2"、 "製品1"、4.0)
  • 評価( "USER3"、 "product2"、7.0)

しかし、出力(MatrixFactorizationModel .re commendProductsForUsers)などがある。

  • 評価( "USER1"、 "製品1"、0.78)
  • 評価( "USER2"、 "製品1"、0.63)

値0.78と0.64で出力は0と1の間で正規化されたもののように見えますが、入力の値は21,4,7などです。

この場合、明示的なフィードバックを伴うコラボレーティブフィルタを使用しているときにできるように、入力と出力の間のMSE(平均二乗誤差)を計算することは意味がありません。

暗黙的なフィードバックを使用する場合、コラボレーティブフィルタを検証する方法は問題です。

答えて

0

重要なフィードバック検証のためのKPIは、精度、カバレッジ、その他多数実際には、ユースケース(いくつの製品を表示したいのですか?いくつの製品を提供しますか?)と達成したい目標によって異なります。

暗黙のフィードバックALSモデルを作成すると、私は常にこの2 KPIを計算します。アキュラシーが非常に良好なモデルは、利用可能な製品の量を抑える傾向があります。 Alswaysはカバレッジを計算し、そこから決定します。

この投稿へ詳しく見てみましょう: https://stats.stackexchange.com/questions/226825/what-metric-should-i-use-for-assessing-implicit-matrix-factorization-recommender

と、このスパークライブラリ: https://github.com/jongwook/spark-ranking-metrics

+0

どのようにこの場合は(正式な定義)の精度とカバレッジを計算していますか? – italktothewind

+0

私にとっては、顧客がテスト/検証期間(正確度)でアイテムを購入したかどうかを知ることが重要です。したがって、トレーニングセットとテストセット(トレーニング後の期間)を作成します。例えば私は与えられた顧客のためのトップ5の推奨事項を取って、これをテスト期間の売上と比較します。 カバレッジは、単純に、可能な製品のうち推奨製品の割合(たとえば、上位5%)です。 – Duesentrieb

関連する問題