协同过滤(隐语义模型)

隐语义分析主要是根据隐含的特征将用户和物品联系起来,采用的是ALS算法(交替最小二乘法)

假设有N个用户和M个物品,器user-item矩阵为N*M

第一步:分解,将用户和物品都分解为F个因子的矩阵,则有(F*N)T*(F*M)=N*M,其中T表示转置

协同过滤(隐语义模型)_第1张图片

图中R为用户与物品的历史关系矩阵,其中R11…R34等等为用户对物品的兴趣度。

对于隐形反馈数据,只要用户浏览了该产品,我们就可以认为用户对物品的兴趣度为1,也就是Rxx为1,否则为0。

对于显性反馈数据,比如用户对物品的评分为1-5分,那么Rxx的取值范围为1-5,对于显性数据,可以将其归一化进行计算。

我们的目标就是要得到一个合适的P、Q。使得他们的乘积结果等于Rxy

                                      其中Rxy=P*Q

这是一个简单的线性回归模型

    初始化的P、Q矩阵相乘得到的结果带入sigmod函数计算出结果在0-1之间,肯定与R有差异,那么我们就通过梯度下降来优化模型参数,加入正则化参数来避免过拟合。

 

1.计算用户对物品i的相似性(传统算法)

This set of k neighbors is denoted by Sk(i;u). The predicted value of rui is taken as a weighte daverage ofth eratings for neighboring  items:

协同过滤(隐语义模型)_第2张图片

协同过滤(隐语义模型)_第3张图片

3.2求解模型采用梯度下降法

3.3偏好值得计算

    用户u对物品i的隐性反馈动作超过一次,我们就觉得u喜欢i。动作频次越多。这个如果的置信度就越高。如果没有动作,则觉得u对i的偏好值为0。当然由于动作次数为0。所以“u对i的偏好值为0”这个如果的置信度就非常低。动作频次越大,置信度越高

你可能感兴趣的:(推荐系统文章阅读)