例子,我们考虑下面这个包含用户打分的打分矩阵:
f这个矩阵的每一行代表一个用户u1u2u9、每一列代表一个产品v1v2…v9。用户的打分在19之间。我们只显示观察到的打分。那么问题来了:用户u5给产品v4的打分大概会是多少?粗略地观察一下……这不是数独么?是的,而且如果按照数独来做的话(比较耗时、不推荐),用户u5一定会给产品v4打9分。为什么看上去选择很多,答案却是唯一的?因为数独的规则很强,每添加一条规则,就让整个系统的自由度下降一个量级。当我们要满足所有的规则时,整个系统的自由度已然降为一了。现在请努力地把上面的数独题想成一个打分矩阵。如果我们不添加任何条件的话,打分之间是相互独立的,我们没有任何依据来推断u5给v4的打分。所以在这个打分矩阵的基础上,我们需要提出一个限制其自由度的合理假设,使得我们可以通过观察已有打分猜测未知打分。
ALS的核心就是下面这个假设:打分矩阵是近似低秩的。换句话说,一个阵A可以用两个小矩阵这样我们就把整个系统的自由度从和的乘积来近似:一下降到了
的打分矩。
。当然,我们也可以
随便提一个假设把自由度直接降到一。我们接下来就聊聊为什么ALS的低秩假设是合理的。世上万千事物,人们的喜好各不相同。但描述一个人的喜好经常是在一个抽象的低维空间上进行的,并不需要把其喜欢的事物一一列出。举个例子,我喜欢看略带黑色幽默的警匪电影,那么大家根据这个描述就知道我大概会喜欢昆汀的《低俗小说》、《落水狗》和韦家辉的《一个字头的诞生》。这些电影都符合我对自己喜好的描述,也就是说他们在这个抽象的低维空间的投影和我的喜好相似。再抽象一些,把人们的喜好和电影的特征都投到这个低维空间,一个人的喜好映射到了一个低维向量,一个电影的特征变成了纬度相同的向量
f,那么这个人和这个电影的相似度就可以表述成这两个向量之间的内积
。我们把来
打分理解成相似度,那么打分矩阵A就可以由用户喜好矩阵和产品特征矩阵的乘积近似了。
我们大致解释了ALS低秩假设的合理性,接下来的问题是怎么选这个抽象的低维空间。这个低维空间要能够有效的区分事物,如果我说我喜欢看169宽屏的彩色立体声电影,那一定是我真心不想透露我的喜好。但ALS是很难从实质上理解“黑色幽默”和“彩色”的区别是什么的,它需要一个更明确的可以量化的目标,这就是重构误差。既然我们的假设是打分矩阵A可以通过来近似,那么一个最直接的可以量化的r