3

我正在关注这个博客http://www.quuxlabs.com/blog/2010/09/matrix-factorization-a-simple-tutorial-and-implementation-in-python/(这里也附上矩阵)用于评级预测使用矩阵分解。最初我们有一个稀疏的用户电影矩阵 R 。

在此处输入图像描述

然后我们应用 MF 算法来创建一个新的矩阵 R',它是 2 矩阵 P(UxK) 和 Q(DxK) 的乘积。然后,我们将 R 和 R' 中给出的值的误差“最小化”。到目前为止一切都很好。但在最后一步,当矩阵被填满时,我不太相信这些是用户将给出的预测值。这是最终的矩阵:

在此处输入图像描述

这些实际上是“预测”评级的理由是什么?另外,我打算使用 P 矩阵 (UxK) 作为用户的潜在特征。我们能否以某种方式“证明”这些实际上是用户的潜在特征?

4

2 回答 2

0

使用为每个用户获得的向量作为潜在特征向量的理由是,使用这些潜在特征的值将最小化预测评分和实际已知评分之间的误差。

如果您查看您发布的两个图表中的预测评级和已知评级,您会发现两者共有的单元格中的两个矩阵之间的差异非常小。示例:U1D4 在第一个图中为 1,在第二个图中为 0.98。

由于特征或用户潜在特征向量在已知评级上产生了良好的结果,我们认为它可以很好地预测未知评级。当然,我们使用正则化来避免过度拟合训练数据,但这是一般的想法。

于 2017-07-03T20:55:08.033 回答
0

为了评估你的潜在特征向量有多好,你应该将你的数据分成训练、验证和测试。

训练集是您用来学习潜在特征的观察评级。验证集用于在学习期间调整模型参数,但适当的学习和测试集用于评估学习到的潜在特征。您可以简单地留出一定百分比的观察样本用于验证和测试。如果您的评级带有时间戳,那么自然的选择方法就是使用最新的样本作为验证和测试。

有关拆分数据的更多详细信息,请参见 https://link.medium.com/mPpwhdhjknb

于 2022-02-02T19:06:05.347 回答