私は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(平均二乗誤差)を計算することは意味がありません。
暗黙的なフィードバックを使用する場合、コラボレーティブフィルタを検証する方法は問題です。
どのようにこの場合は(正式な定義)の精度とカバレッジを計算していますか? – italktothewind
私にとっては、顧客がテスト/検証期間(正確度)でアイテムを購入したかどうかを知ることが重要です。したがって、トレーニングセットとテストセット(トレーニング後の期間)を作成します。例えば私は与えられた顧客のためのトップ5の推奨事項を取って、これをテスト期間の売上と比較します。 カバレッジは、単純に、可能な製品のうち推奨製品の割合(たとえば、上位5%)です。 – Duesentrieb