低秩矩阵(矩阵填充)-图像修复、协同过滤

转载自: https://blog.csdn.net/manduner/article/details/80564414

一、矩阵填补(Matrix Completion)

        矩阵填补的应用很广泛,论文《Matrix completion by deep matrix factorization》就给出了矩阵填补的两个应用:图像修复(image inpainting)、协同过滤(Collaborative filtering)。

        图像修复:简单来说就是通过矩阵填补模型将“打码”的图片修复成原来的图片,如下图所示:



        协同过滤:是推荐系统的一种模型,该方法通过分析用户的历史记录(主要是用户-商品评分矩阵)来给用户做出推荐。例如我们在看一部电影的时候,如果喜欢看,就会给它打个分,例如3颗星。然后系统,例如Netflix等知名网站就会分析这些数据,看看到底每部影片的题材到底是怎样的?针对每个人,喜欢怎样的电影,然后会给对应的用户推荐相似题材的电影。但有一个问题是:我们的网站上面有非常多的用户,也有非常多的影片,不是所有的用户都看过说有的电影,不是所有看过某电影的用户都会给它评分。假设我们用一个“用户-影片”的矩阵来描述这些记录,例如下图,可以看到,会有很多空白的地方。如果这些空白的地方存在,我们是很难对这个矩阵进行分析的,所以在分析之前,一般需要先对其进行补全。也叫矩阵填充。


        那到底怎么填呢?如何才能无中生有呢?每个为0的地方的信息是否蕴含在其他已有的信息之上了呢?如果有,怎么提取出来呢?Yeah,这就是低秩生效的地方了。这叫低秩矩阵重构问题,它可以用如下的模型表述:已知数据是一个给定的m*n矩阵A,如果其中一些元素因为某种原因丢失了,我们能否根据其他行和列的元素,将这些元素恢复?当然,如果没有其他的参考条件,想要确定这些数据很困难。但如果我们已知A的秩rank(A)<<m且rank(A)<<n,那么我们可以通过矩阵各行(列)之间的线性相关将丢失的元素求出。你会问,这种假定我们要恢复的矩阵是低秩的,合理吗?实际上是十分合理的,比如一个用户对某电影评分是其他用户对这部电影评分的线性组合。所以,通过低秩重构就可以预测用户对其未评价过的视频的喜好程度。从而对矩阵进行填充

        协同过滤算法CF算法分为两大类,一类为基于memory的(Memory-based),另一类为基于Model的(Model-based),User-based和Item-based算法均属于Memory-based类型,具体细分类可以参考wikipedia的说明。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页