推荐算法之BaseLineOnly算法

一、基本思想

BaseLineOnly算法被称为基准预测。其是建立在一定的假设上:

  • 每个用户的评分基准都是不同的,比如有的用户喜欢给高分,就算对于不喜欢的物品他也会给出6分的及格分(10分满分),而有的用户比较苛刻,对于很喜欢的物品也只给出7分,而不喜欢的物品直接给出2分。
  • 每个物品的好坏也是不同的,有些物品很受欢迎,可能大部分人都给出7分左右,而有的物品很差,每次都得到3分左右。

我们的算法就利用了这种偏差,我们称这种偏差为偏置(bias)

二、求解目标

  我们假设整体的平均评分为 μ \mu μ,用户 u u u的评分偏置为 b u b_u bu,物品 i i i的评分偏置为 b i b_i bi,那么我们的目标就是:

  • 找出每个用户普遍高于或低于其他人的评分偏置 b u b_u bu
  • 找出每个物品普遍高于或低于其他物品的评分偏执 b i b_i bi

用户 u u u对物品 i i i的预测评分为: p u i = μ + b u + b i p_{ui}=\mu+b_u+b_i pui=μ+bu+bi
如果用户 u u u对物品 i i i的真实评分为 r u i r_{ui} rui,那么我们的目的就是最小化 r u i − p u i r_{ui}-p{ui} ruipui,我们采用平方损失函数,同时加入L2正则项,那么损失函数就为: L = ∑ ( i , u ) ∈ R ( r u i − p u i ) 2 + λ ( ∣ ∣ b u ∣ ∣ + ∣ ∣ b i ∣ ∣ ) L=\sum_{(i,u)\in R}(r_{ui}-p_{ui})^2+\lambda(||b_u||+||b_i||) L=(i,u)R(ruipui)2+λ(bu+bi) = ∑ ( i , u ) ∈ R ( r u i − μ + b u + b i ) 2 + λ ( ∣ ∣ b u ∣ ∣ + ∣ ∣ b i ∣ ∣ ) =\sum_{(i,u)\in R}(r_{ui}-\mu+b_u+b_i)^2+\lambda(||b_u||+||b_i||) =(i,u)R(ruiμ+bu+bi)2+λ(bu+bi)

我们的目标就是最小化 L L L,其中 R R R为所有发生过交互的用户和物品的集合, λ \lambda λ为正则化系数,是个超参数。

三、优化参数

  此处我们可以采用梯度下降的方法,但此处我们选择采用ALS(交替最小二乘法),具体步骤如下:

  • Step1:求出整体的评分平均分 μ \mu μ
  • Step2:初始化用户偏置向量 U U U(此处可以使用全局评分平均值减去每个用户的评分平均值获得)
  • Step3:固定矩阵 U U U,通过最小化损失参数来求解物品偏置矩阵 M M M
  • Step4:重复Step2和Step3,直到满足停止条件

其具体求解过程可以看我之前ALS算法的博客,其原理相同ALS算法理解,这里就不赘述了。

四、实际应用

  计算出物品偏置矩阵和用户偏置矩阵之后,就可以通过下面公式填充出用户和物品之间的评分矩阵: p u i = μ + b u + b i p_{ui}=\mu+b_u+b_i pui=μ+bu+bi
  之后我们就可以选取出各自的TopK物品进行推荐。

你可能感兴趣的:(推荐算法,推荐算法,算法,机器学习)