考虑协同过滤问题。我们有矩阵大小#users * #items。如果用户 i 喜欢项目 j,如果用户 i 不喜欢项目 j 并且如果没有关于 (i,j) 对的数据。我们想预测对于未来的用户,项目对。
标准协同过滤方法是将 M 表示为 2 个矩阵的乘积这样是最小的(例如,最小化已知元素的均方误差)。
对我来说,逻辑损失函数似乎更合适,为什么所有算法都使用 MSE?
考虑协同过滤问题。我们有矩阵大小#users * #items。如果用户 i 喜欢项目 j,如果用户 i 不喜欢项目 j 并且如果没有关于 (i,j) 对的数据。我们想预测对于未来的用户,项目对。
标准协同过滤方法是将 M 表示为 2 个矩阵的乘积这样是最小的(例如,最小化已知元素的均方误差)。
对我来说,逻辑损失函数似乎更合适,为什么所有算法都使用 MSE?
在音乐推荐的背景下(使用播放次数),我们在 Spotify 使用逻辑损失进行隐式矩阵分解。我们刚刚在即将召开的 NIPS 2014 研讨会上发表了一篇关于我们方法的论文。这篇论文的标题是隐式反馈数据的逻辑矩阵分解,可以在这里找到http://stanford.edu/~rezab/nips2014workshop/submits/logmat.pdf
这篇论文的代码可以在我的 Github 上找到https://github.com/MrChrisJohnson/logistic-mf
您会在该主题上找到的大多数论文都将处理评级为 [0,5] 的矩阵。例如,在 Netflix Prize 的上下文中,矩阵具有从 1 到 5 的离散评分(+ 缺失值)。这就是为什么平方误差是最分散的成本函数。可以看到其他一些误差度量,例如 Kullback-Leibler 散度。
标准矩阵分解可能出现的另一个问题是矩阵U和V的某些元素可能是负数(尤其是在第一步期间)。这就是为什么您不会在这里使用对数损失作为成本函数的原因。
但是,如果您谈论的是非负矩阵分解,您应该能够使用对数损失作为您的成本函数。您处于与 Logistic 回归类似的情况,其中 log-loss 用作成本函数:您的观察值是 0 和 1,并且您预测一个介于 0 和 1 之间的数字(概率)。