我正在研究基於隱式反饋的推薦引擎。我正在使用此鏈接: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 | | +---------------------------------------------------------------------------------------------------+
這裏行是用戶和列的項目。
現在,我想知道這是否是我的測試集的正確表示。我已經拿起一個非零值,並把所有東西都歸零。所以,我的算法應該將非零值作爲推薦項目進行排序。
這是關於事情的正確方法嗎?
任何幫助將非常感激
有人可以幫我嗎?我是否正確地做事? –