缺少值的矩阵的SVD


12

假设我具有Netflix风格的推荐矩阵,并且我想建立一个模型来预测给定用户的未来电影收视率。使用Simon Funk的方法,可以使用随机梯度下降法来最小化完整矩阵与逐项*用户对用户矩阵之间的Frobenius范数,并结合L2正则化项。

在实践中,人们如何处理推荐矩阵中的缺失值,这是整个计算的重点?通过阅读Simon的博客文章,我的猜测是,他仅使用非缺失项(由(例如)推荐矩阵的1%组成)来构建模型(可以明智地选择超参数和正则化)来预测其他99%的矩阵?

实际上,您真的跳过所有这些值吗?还是在进行随机梯度下降之前尽可能多地推断?处理缺失值的一些标准最佳实践是什么?


1
这似乎是一个同样的问题到这个。我在那里回答了问题。
d_ijk_stra


2
@d_ijk_stra“已回答”有点慷慨,它等同于指向PDF的链接
ali_m 2016年

Answers:


6

是的,实际上,这些值被跳过。在按照Frobenius规范进行描述时,这对应于将可测量的规范组件(即具有已知等级的组件)最小化。可以将正则化项视为特征向量分量上的贝叶斯先验,而SVD会根据该先验值和已知值来计算最大似然估计量。

最好将SVD视为一种推断缺失值的方法。如果您已经有了更好的方法,为什么需要SVD?如果您不这样做,那么SVD会很乐意为您填补空白。


1
您如何使用SVD推断那些缺失值?您是否尝试过其他方法来推断缺失值,例如使用非缺失值来训练随机森林分类器,然后可以将其用于猜测缺失值?您获得更好的结果,还是真的取决于问题?
维沙尔(Vishal)2012年

1
通过使用SVD分解的相关组件,您可以以与预测未来值相同的方式推断缺失值。预测未来的评级与推断缺失值完全一样。如果您有推论缺失值的好方法,只需使用它来预测未来的收视率。如果您不这样做,那么这就是SVD的目的。
Martin O'Leary

“最好将SVD视为一种推断缺失值的方法”。嗯,不,实际上,SVD取决于用户在运行SVD之前以其他方式预先推断所有缺失值。SVD完全不估算。
杰弗里·安德森

1

在实践中,人们如何处理推荐矩阵中的缺失值,这是整个计算的重点?通过阅读Simon的博客文章,我的猜测是,他仅使用非缺失术语来构建模型。

是的-这就是他和您的模型的目的,可以预测缺失的术语,对吗?这是许多人实际上忘记的关键点。他们认为他们可以“假设”为丢失的数据预先分配一个常量,而无需关心世界,并且从SVD可以神奇地解决问题。垃圾进,垃圾出:这是真实的,您最好看一下。如果希望得到有用的结果,最好不要将垃圾数据提供给模型。

在多数稀疏数据集上肯定不是“最佳推断任何缺失值”,然后对它运行SVD,并希望为您估算出值(在运行SVD之前已经估算出了值,对吗?)。您如何看待模型是魔术?克服多数垃圾数据既不是魔术也不是技术。当数据根本不是真实的数据时,您不能撒谎说数据是真实的数据,而实际上只是凭空凭空构成的一些垃圾。

SVD还有其他有用的功能,所以我当然不是说SVD至少毫无价值。继续并仅在完整的数据集上使用SVD,也许您已经在已经使用机器学习模型的情况下智能地估算了缺失值,并在开发过程中充分注意了偏差和方差。

机器学习就是方法。因此,如果您仍然想知道如何使用矩阵分解设计来推算值,那么肯定有好的方法可以使用机器学习来精确地做到这一点,并且重要的是,它们不会将任何垃圾数据输入模型以进行毫无意义的尝试学习。

斯坦福在线课程“挖掘大量数据集”的讲师恰好很好地介绍了这种机器学习矩阵分解模型,它们向您展示了数学并解释了该模型。他们没有为您编写代码。

没关系,因为如果您了解基本的机器学习,则可以自己编写代码。您知道损失函数和成本函数是什么吗?正则化?梯度下降?可以矩阵乘法和加法吗?偏差误差和方差误差?如果是这样,那么你就很好。如果不是这样,那么您应该考虑在Coursera 上参加Andrew Ng的在线课程Machine Learning,这是许多不错的起点之一。然后,还可以参加在线课程“ 挖掘海量数据集”,该课程完全讨论了矩阵分解和用于创建推荐模型的机器学习。

可以这么说,您可以完全设计并编写自己的分解模型,就像Simon Funk一样,可以很好地处理丢失的数据,您可以从头开始,但是再也不难,就像返回时一样在他的时代,因为现在您可以使用TensorFlow或Microsoft CNTK之类的工具为您做很多事情。定义损失函数和成本函数,选择优化器,将数据集划分为训练,开发,根据实际可用数据(标记数据)进行测试,然后使其运行。说真的,它有效。调试TF及其图形构建错误并非易事,但最终可以很好地工作,并且只需不到一页的代码。

具体来说,不向矩阵分解机器学习模型提供虚假数据的一种方法是跳过损失和成本函数中缺失数据的矩阵元素


1

有一篇论文回顾了许多推荐系统并进行了比较,但没有谈论对丢失项目的长期跟踪,例如,测试预测。那是你的问题吗?以这种方式使用时间成分?在许多论文和方法中,论文综述是时间感知/敏感系统,例如Rendle论文中的研究。如果您的问题也是关于处理数据稀疏性的问题,那么整个论文中也会对此进行详细讨论,并且有很多方法。具有零的稀疏矩阵和归因或矩阵因式分解,它添加了用户群集(对项目进行类似评估的用户)的链接矩阵或项目群集的链接矩阵。

论文标题为Evgeny Frolov撰写的“具有有限首选项信息的推荐系统的低等级模型” https://www.skoltech.ru/app/data/uploads/2018/09/Frolov_Dissertation_Final1.pdf

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.