私は暗黙のフィードバックに基づいて推奨エンジンを開発中です。 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つのゼロ以外の値を選んで、すべてをゼロにしました。だから、私のアルゴリズムは推奨項目として非ゼロ値をランク付けする必要があります。
これは正しいことですか?
すべてのヘルプは本当に
誰かが私を助けることができますか?私は事を正しくしていますか? –