推荐系统中的矩阵分解方法

我在研究推荐系统中的矩阵分解方法时,发现了一个非常不错的教程:http://www.quuxlabs.com/blog/2010/09/matrix-factorization-a-simple-tutorial-and-implementation-in-python/

内容都很不错,但有一段话引起了我的兴趣:

你可能已经想到了一个问题:如果我们找到两个矩阵PQ,使得PXQ近似于R,那么我们对所有未见评分的预测不都是零吗?实际上,我们并不是真的试图找到能够完全重现RPQ。相反,我们只会尝试最小化已观察到的用户-项目对的误差。换句话说,如果我们让T是一个元组集合,每个元组的形式为(u_i, d_j, r_ij),其中T包含所有已观察到的用户-项目对及其相关的评分,我们只试图最小化T中每个(u_i, d_j, r_ij)e_ij。(换句话说,T是我们的训练数据集。)至于其余未知的部分,一旦用户、项目和特征之间的关联被学习后,我们就能确定它们的数值。

我想问一下,有人能帮我解释一下吗?潜在因素是否有助于我们理解每个用户和项目的行为?

谢谢


回答:

潜在因素是两组数值(一组用于用户,一组用于项目),它们描述了用户和项目。你所尝试做的本质上是找到项目和用户的数值表示。

想象一下,你有一个电影评分系统,并且有3个用户因素和3个电影(项目)因素。用户因素可以是你对喜剧、戏剧或动作电影的喜好程度,而电影因素则是电影是喜剧、戏剧或动作电影的程度。通过这些属性,你可以估计其他用户-项目对的评分。这个模型会为你找到这些抽象的因素。

这意味着你只能为有评分的项目和用户找到合理的表示。因此,当你训练模型时,你使用已知的评分来估计这种表示。从中你可以尝试预测一个用户和项目的未知评分。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注