推荐系统之LFM隐语义模型个人总结

一、基本原理

1、LFM模型实在推荐系统中非常常用的模型,它的核心思想就是通过隐形特征(latent factor)联系用户的兴趣和特征。在原理中隐形特征数量K是人为经验制定,该参数对推荐效果影响较大,是LFM重要参数之一。

2、如果要根据用户兴趣对物品分类,那么主要解决的问题包括:

  • 如何对物品进行分类;

  • 如何确定用户对哪些物品感兴趣,即计算出用户对某个物品的兴趣度;

  • 在某一已经分好的类中,如体育类,如何将该类中的物品如篮球、足球等更好的推荐给用户;

3、如果用人工分类解决那么当商品类数很大就会出现人工成本急剧上升,而且人工会产生主观和专业限制因素。相比于人工分类,LFM算法采用的用户客观行为数据,模型结果分类能够代表用户主观想法,而且成本更低,所以该模型具有更好的商业适用性。

4、相比于基于用户或者商品的协同过滤,LFM模型的数学意义更加清晰,以下是LFM模型的数学推导过程:

上图中u_{i}代表用户,k_{i}代表定义的隐分类个数,I_{j}代表物品,p_{1,k}代表用户u_{1}对k隐类的关系,q_{1,k}代表物品I_{1}与第k隐类的权重系数,系数越大说明I_{1}与k类的关系程度越高。那么用户u_{1}对物品I_{1}的兴趣度如何计算方式就是

                                                        preference(1,1)=r_{1,1}=\sum_{k=1}^{K}p_{1,k}q_{1,k}

将用户和物品扩大到整个用户和物品空间得出u_{i}I_{j}的兴趣计算方式为

                                                        preference(i,j)=r_{i,j}=\sum_{k=1}^{K}p_{i,k}q_{j,k}

上述公式中p_{i,k}q_{j,k}以及隐类数K都是未知的,其中K决定分类的粒度是粗还是细。

二、模型求解

上述LFM算法的网络构造思路非常类似于神经网络,所以对于该算法的求解思路可以分为两种:

1、可以用最大似然函数来求解,这种算法是从概率学的角度求解,如果有兴趣可以去查询这种方式的求解方法,这里我主要推荐用第二种方法求解;

2、将这种算法转化为求解损失函数极小值的方式,通过梯度下降法来求解模型系数。

  • 损失函数构造方法

                                              Loss=\sum_{i,j}(r_{i,j}-\tilde{r}_{i,j})^{2}=\sum_{i,j}(r_{i,j}-\sum_{k=1}^{K}p_{i,j}q_{i,j})^{2}+\lambda\left \| p_{i} \right \|^{2}+\lambda \left \| q_{j} \right \|^{2}

其中\tilde{r}_{i,j}为预测的兴趣度,r_{i,j}为用户实际对商品兴趣度,损失函数loss就是他们的误差平方和。\left \| p_{i} \right \|^{2}\left \| q_{j} \right \|^{2}为惩罚系数,其作用就是为了防止过拟合,因为当K足够大时总能找到一组参数使得loss达到最小,但是很容易过拟合,\lambda参数可以用来控制拟合程度,值越大惩罚越重越不容易发生过拟合。

  • 梯度下降法求解

学过神经网络或者优化理论的人都知道梯度下降法的求解过程,就是沿着损失函数的负梯度方向下降速度最快,可以最快速度获取模型最优值,具体推导过程我就不重复了这不是本文讲的重点,大家可以点击这里查看。

上面定义的损失函数主要有两大参数p_{i,k}q_{j,k},梯度下降法首先要对它们求偏导:

                                                                             \frac{\partial Loss }{\partial p_{i,k}}=-2q_{j,k}+2\lambda p_{i,k}

                                                                              \frac{\partial Loss }{\partial q_{j,k}}=-2p_{i,k}+2\lambda q_{j,k}

上面的公式是我根据项亮的推荐系统实践弄来的,不过我觉得这个偏导公式求错了,所以大家可以尝试重新推导一下。

然后根据梯度下降法,将参数沿着下降最快的方向前进,那么可以得到:

                                                                         p_{i,k}=p_{i,k}-\alpha (\frac{\partial Loss }{\partial p_{i,k}})

                                                                         q_{j,k}=q_{j,k}-\alpha (\frac{\partial Loss }{\partial q_{j,k}})

因为上面的偏导求错了所以我就用等式前面部分代替,\alpha为学习速率即步长,表示下降的步伐迈步大一下还是小一些。

  • 学习集(训练集)的构造

根据不同的场景训练集可以分为显性数据集和隐性数据集。

显性数据集就是指那些对物品给出精确评价的数据,如豆瓣评分中某用户对某个电影打了4星或者5星,说明还用户喜欢该电影反之打了1星或者2星说明用户不喜欢该电影。

隐性数据集就是指没有负样本的数据集如淘宝购物,通过购买或者点击行为来判断该用户是否喜欢某种商品,但是对于那些没有产生行为的商品就无法清晰判断该用户是否不喜欢该商品。

根据推荐系统实践这本书,得到负样本数据的方式是:对于一个用户,他没有产生过行为的商品中随机采样得到负样本,但是负样本个数要和正样本个数相当而且要偏重采样那些热门的商品,因为热门的商品都不存在行为那说明喜欢该商品的概率不大。

  • 总结

通过对LFM算法的数学推导可以看出该模型主要以下重要参数:

1、隐特征个数K,该特征是用来控制商品分类的粒度;

2、梯度下降法的步长,该参数用来控制算法收敛的快慢以及是否能找到全局最优解;

3、损失函数的惩罚系数\lambda,可以用来控制模型的拟合度,防止过拟合;

4、训练样本正/负比率,可以用来控制模型的准确率和召回率

发布了2 篇原创文章 · 获赞 5 · 访问量 44

猜你喜欢

转载自blog.csdn.net/muxiangqiang159753/article/details/104790168