本文是推荐系统系列的第三篇了,主要来讲一下 LFM 算法,与之前一样,注重原理方面,不会在算术上多做纠结,以方便快速理解该算法
一种基于矩阵分解的用来预测用户对物品兴趣度的推荐算法
这里大概只是我自己的理解,其具体定义,还真没找到。。。
在谈LFM前,我们先来看下这么一种大白话推荐方法:
R = 0.8 * 0.85 + 0.9 * 0.95 = 1.535
这种根据 用户 和 物品 之间对应的分类权重来衡量 用户 对 物品 喜欢程度的方式就是 LFM 的原型上面这种方式推荐方式有个问题就在于,如何给用户打上合适的标签呢?又如何给 物品 分好合适的类呢?我们知道,这种任务是很难的。。。至于为什么难,请自行脑补。。。哈哈,也正是因为分类的困难,所以才有了我们的 LFM 算法,我们完全可以从 用户 对 物品 产生的行为,来实现对 物品 和 用户的 自动分类;
那么我们就可以推测 用户A 对 item1 的打分 ps
真实打分 2 和 我们预测的打分 ps 越接近,我们则认为我们的分类越可靠
ok!上面应该还是很好看懂的。。。我们可以将上面的公式泛化一下就可以得到 用户u 对于 物品w 的打分的预测公式:
其中:
这里我们假设 用户u 对于 物品w 的真实打分为
那么衡量 真实打分 和 预测打分 的差距就可以用他们的 平方和的大小,即可得下面公式
当然为了模型得泛化能力,可能需要再加一些正则化的尾巴。。。为了加快计算,可能还需要将公式做一些向量化处理。。。等等一些机器学习方面通用规则就不一一提了,这里主要还是讲解 LFM 的原理为主。最后就是一个梯度下降法
求解的问题了,将上面的公式作为我们的目标函数,通过梯度下降法就可以求出 用户对每个分类的喜好程度 以及 物品对于分类的符合程度,即公式中的
和
,这也就是说,LFM 最后就是 给每个用户 和 物品 都进行了分类,尽管这个分类你并不知道他叫什么。。。。这也正是 隐语义的 含义了。
ok,原理方面就说到这里了,文中公式主要是为了理解而写的,很多地方不是很标准,更不能作为算法的实现来用,如果你想要标准的公式,相信随便搜一搜就可以找到了!
ok,就到这里啦,还是比较简单的一种推荐算法,嗯,应该说,原理比较简单的算法。。。