本小节主要从数学上重点介绍LFM,主要从建模方法、迭代、收敛等方面认识LFM算法。
1.LFM理论知识
(1)LFM建模公式:
p(u,i)表示user-item对,如果user点击了item,那么p(u,i)=1,否则p(u,i)=0。模型的最终输出为user向量和item向量,即和
。其中F表示维度,也就是上一小节阐述的user对item喜欢与否的影响因素的个数。
那么具体如何得到和
呢?
我们用机器学习中监督学习的思想解决。在F设定好之后,和
可以用随机数进行初始化,初始化之后,如何进行迭代呢?这里采用的方法是梯度下降。
(2)损失函数
解释公式:p(u,i)是训练样本的label,也就是说如果user点击了item,那么p(u,i)=1,否则p(u,i)=0。后面项是模型预估的user对item喜好程度,也就是前面所说的模型产出的参数和
转置的乘积。这里的D是所有的训练样本的集合。
可以看到如果模型预估的数值与label越接近的话,损失函数数值越小,反之则越大。这里为了防止过拟合,增加了正则化项,并进行展开,得到如下:
这里是正则化系数,是用来平衡平方损失与正则化项,这里采用的是L2正则化,正则化目的是为了让模型更加简单化,防止由于
和
过度拟合训练样本中的数据使模型的参数过度复杂,造成泛化能力减弱。
(3)LFM算法迭代
损失函数对和
的偏导:
得到偏导之后,采用梯度下降的方法,
其中,是learning rate,即学习率。
同理:
(4)影响因素
哪些参数的设定会影响最终的模型效果?
1.负样本的选取
比起正样本,负样本的数量是非常多的。因为,展现给用户的item比用户点击的item要多的多。我们要有一定的负采样规则,我们选取那些充分展现而用户没有点击的item作为负样本。
那么什么叫做充分展现?
充分展现是指,这个item在所有的用户中,已经有了比较高的展现次数。
然后,我们就可以用user没有点击过的物品中,按照该item在所有用户中的展现次数做排序,取一定数目的item作为负样本。这个一定数目只要保证对该user来说,它的正负样本均衡就可以。比如,一个用户点击了100个item,那么同样也取100个负样本来保证正负样本的均衡。
2.隐特征F、正则参数、学习率
以上是对模型比较重要的三个参数。其中和
通常设置为0.01-0.05,隐特征个数F通常设置为10-32之间。