Матричная факторизация: предсказание SVD для недопустимых значений - PullRequest
0 голосов
/ 19 июня 2020

Я использую Surprise-Library для прогнозирования рейтингов клиентов для веб-сайта электронной коммерции. Для каждого customer_id я хочу спрогнозировать рейтинг продукта (который еще не был оценен покупателем).

У меня есть 3 столбца customer_id, product_id, review_score и 100000 строк данных.

CPR_data = tmp_4[['customer_unique_id', 'product_id', 'review_score']].copy() #copy relevant columns for our matrix

reader = Reader(rating_scale=(1,5)) #define upper and lower bound for reader-object.

SVD_data = Dataset.load_from_df(CPR_data[['customer_unique_id', 'product_id', 'review_score']], reader) 

model = SVD() #create SVD model with n = 100 latent feature as a default
model.fit(trainset) #train the model on our trainset

теперь, чтобы вернуться к моему вопросу, когда я хочу предсказать с недопустимыми значениями (не имеет значения, какие недопустимые значения), я получаю такие результаты, как:

customerExample = '871766c5855e863f6eccc05f988b23cb '
productExample = 'Product which doesnt exist'
model.predict(customerExample, productExample)

Я всегда получаю рейтинг 4,015961084515432 для каждого недопустимого значения. Это почему? Если я работаю с допустимыми значениями, все работает нормально. Разве модель не должна знать, что я использовал неверное значение?

Заранее спасибо!

...