推荐系统的矩阵分解模型如何确定潜在特征的数量?

机器算法验证 推荐系统 矩阵分解 参数化 集成学习
2022-04-10 12:33:56

我正在尝试为简单的用户项目评级推荐系统设计矩阵分解技术。我对此有两个问题。

首先在我看到的用于电影推荐的矩阵分解技术的一个简单实现中,作者只是初始化了潜在特征的维度,我们将其称为两个潜在特征 User 和 Item 矩阵的 K,假设为某个常数 K,假设为 2,因此每个他的潜在特征矩阵 P 和 Q 是 NXK 和 MXK,其中 R 是我们试图用维度 NXM(N 个用户和 M 个项目)近似的原始用户项目评分矩阵。所以我的问题是在这种情况下如何确定最佳的“K”(潜在特征的数量),而不是仅仅将其设置为某个常数?

还有什么方法可以将我的数据集中已有的用户或项目信息(例如特定用户的平均评分、用户的性别、用户位置等)合并到矩阵分解的结果中,同时做出我的最终推荐(我猜也许混合模型与其他基于内容的过滤模型中表示的用户和项目信息以及我的矩阵分解模型一起工作?)。

1> 我的第一个问题是如何确定潜在特征的最佳数量 K 2> 有没有人知道最近的文献实现了矩阵分解和基于内容的过滤的混合模型(因为我猜这将是表示人口统计信息的唯一方法共同特征空间中的用户和项目。)

2个回答

在回答您的第一个问题时,交叉验证是一种广泛使用的方法。一种可能的方案如下。

对于预选范围内的每个 K 值,使用交叉验证来估计模型性能(例如预测准确度)。这将为每个 k 值提供一个估计的模型性能指标。然后,选择与最高性能对应的k。

在回答您的第二个问题时,我将查看“混合方法”的示例,例如http://www.stanford.edu/~abhijeet/papers/cs345areport.pdf

要回答您的第一个问题,我会进行交叉验证,而对于第二个问题,我会说您应该研究张量分解。如果你有多维数据表示,你肯定会考虑张量分解,它允许你将一些额外的数据作为另一个维度来玩。

您可以查看以下链接。

https://github.com/kuleshov/tensor-factorization