Answers:
好吧,当您说SVD时,大概是在谈论被截断的 SVD(您只保留最大的奇异值)。查看矩阵的截断SVD有两种不同的方法。一种是标准定义:
首先,您要执行SVD:,其中和是旋转矩阵,具有沿对角线的奇异值。然后,选择前奇异值,对其余的零进行归零,然后砍掉不相关的行和列,以使 -rank近似于原始值: üVΣķķX≈〜X =〜Ü Ñ × ķ ķ × ķ 〜Σ〜V Ť ķ × 米
这一切都很好,很花哨(并且很容易在R或Matlab中实现),但是当谈论缺少值的矩阵时,这没有任何意义。但是,截断的SVD 有一个有趣的属性-这是原始的最佳秩近似!那是:ķ
此属性似乎易于推广到缺失值的情况。基本上,您正在寻找一个秩矩阵,该矩阵将原始矩阵的已知条目之间的逐元素均方误差最小化。也就是说,在训练系统时,您将忽略所有遗漏的值。(有关如何实际找到秩近似的提示,这里有一些地方可供参考)。ķ
然后,一旦您提出了与原始图像适当的“接近”秩近似,就可以使用它来填充缺失值。也就是说,如果缺少,则填写。多田!现在完成。X 我Ĵ 〜X我Ĵ
似乎有很多方法可以处理缺失的值。以下第1.3节中有评论的论文可能是一个很好的起点。
我需要更多声誉来评论Stumpy Joe Pete的答案,因此我将其发布为答案。
尽管我认为需要澄清一点,但对此表示感谢。特别是我的意思是:
基本上,您正在寻找一个k秩矩阵,该矩阵将原始矩阵的已知项之间的逐元素均方误差最小化。
首先-最高等级是否会始终将其最小化,或者实际上是重建原始X矩阵?其次-为什么只选择已知条目。从直觉上讲这是有道理的,但是该过程实际上也适合用一些合理的数字替换的空地方。
我的方法是执行类似交叉验证的操作: