3

私は暗黙のフィードバックに基づいて推奨エンジンを開発中です。 http://insightdatascience.com/blog/explicit_matrix_factorization.html#movielens推奨エンジンのテストセットの生成

これは、ユーザーとアイテムベクトルを計算するためにALS(交互最小二乗)を使用していました。以来、私のデータセットは時間によって分割することができません。私は無作為にユーザーからxの数の評価を取ってテストセットに入れます。これは私の訓練ユーザ項目マトリックスの再現可能な例です。私を与え

 

col1 col2  col3 col4 col5 col6 col7  col8 col9 col10 col1 col12 col13 
+---------------------------------------------------------------------------------------------------+ 
| 1  0  0  3  10  0  0   3  0  0  1  0  0 |                     | 
| 0  0  0  5  0  0  1   8  0  0  1  0  0 |                     | 
| 0  0  0  6  7  1  0   2  0  0  1  0  0 |                     | 
+---------------------------------------------------------------------------------------------------+ 
 
I then create a test set using this piece of code 
    test_ratings = np.random.choice(counts[user,:].nonzero()[0],size=1,replace=True) 
     train[user,test_ratings] = 0 
     test[user,test_ratings] = counts[user,test_ratings] 
     assert(np.all((train * test) == 0)) 

 
col1 col2  col3 col4 col5 col6 col7  col8 col9 col10 col1 col12 col13 
+---------------------------------------------------------------------------------------------------+ 
| 0  0  0  0  0  0  0   3  0  0  0  0  0 |                     | 
| 0  0  0  0  0  0  1   0  0  0  0  0  0 |                     | 
| 0  0  0  6  0  0  0   0  0  0  0  0  0 |                     | 
+---------------------------------------------------------------------------------------------------+ 

はここで行は、ユーザーと列がアイテムです。

これが私のテストセットの正しい表現かどうか疑問に思っていました。私は1つのゼロ以外の値を選んで、すべてをゼロにしました。だから、私のアルゴリズムは推奨項目として非ゼロ値をランク付けする必要があります。

これは正しいことですか?

すべてのヘルプは本当に

+0

誰かが私を助けることができますか?私は事を正しくしていますか? –

答えて

1

更新いただければ幸いです。

をはいあなたは、元のカウントの一部でテストセットを作成して、あなたのシステムが良い試合として、それらのユーザーのアイテムを識別するかどうかを確認する必要があります。

あなたはいくつかのことに注意する必要があります:

  • だけあなたが より多くのデータを持っているアイテムやユーザーのためのあなたのTESTSET値に置きます。
  • これらのテストセット値をトレーニングデータから隠す。
  • あなたのモデルは、0のデータではなく、データがあるユーザとアイテムのペアでのみトレーニングします。これは、0がデータを持たず、実際の評価ではないことを前提としているためです;

注:このpapper、Collaborative Filtering for Implicit Feedback Datasetsは、これらおよび他の質問のお手伝いをする必要があります。

+1

返信いただきありがとうございます!あなたは大きな助けになっています。ただし、これは暗黙のフィードバックを伴う推奨エンジンです。したがって、値はカウントであり、レーティングではありません。 MSEは貧弱な測定基準でしょうか? –

+0

はい、あなたは正しいです。あなたのシステムがそのアイテムを推薦するかどうか予測する必要があります。私は答えを更新します。 –

+0

ありがとうございます。あなたの第3のポイントは、データが存在するユーザとアイテムのペアを訓練するよう求めます。ほとんどのデータセットは非常に疎です。これは予測に影響を及ぼしますか? –