实时推荐模型的算法设计

2020-12-26 04:31

阅读:808

标签:就是   list   集合   ali   之间   接下来   函数   结果   个数   

  当用户u 对商品p 进行了评分,将触发一次对u的推荐结果的更新。对于用户u 来说,他与p 最相似的商品们之间的推荐强度将发生变化,所以选取与商品p 最相似的K 个商品作为候选商品。每个候选商品按照“推荐优先级”这一权重作为衡量这个商品被推荐给用户u 的优先级。

这些商品将根据用户u 最近的若干评分计算出各自对用户u 的推荐优先级,然后与上次对用户u 的实时推荐结果的进行基于推荐优先级的合并、替换得到更新后的推荐结果。

具体来说:

首先,获取用户u 按时间顺序最近的K 个评分,记为RK;获取商品p 的最相似的K 个商品集合,记为S;

然后,对于每个商品qS ,计算其推荐优先级,计算公式如下:

 

    其中:

表示用户u 对商品r 的评分;

sim(q,r)表示商品q 与商品r 的相似度,设定最小相似度为0.6,当商品q和商品r 相似度低于0.6 的阈值,则视为两者不相关并忽略;

sim_sum 表示q 与RK 中商品相似度大于最小阈值的个数;

incount 表示RK 中与商品q 相似的、且本身评分较高(>=3)的商品个数;

recount 表示RK 中与商品q 相似的、且本身评分较低(

公式的意义如下:

首先对于每个候选商品q,从u 最近的K 个评分中,找出与q 相似度较高(>=0.6)的u 已评分商品们,对于这些商品们中的每个商品r,将r 与q 的相似度乘以用户u 对r 的评分,将这些乘积计算平均数,作为用户u 对商品q 的评分预测即

 

然后,将u 最近的K 个评分中与商品q 相似的、且本身评分较高(>=3)的商品个数记为 incount,计算lgmax{incount,1}作为商品 q 的“增强因子”,意义在于商品q 与u 的最近K 个评分中的n 个高评分(>=3)商品相似,则商品q 的优先级被增加lgmax{incount,1}。如果商品 q 与 u 的最近 K 个评分中相似的高评分商品越多,也就是说n 越大,则商品q 更应该被推荐,所以推荐优先级被增强的幅度较大;如果商品q 与u 的最近K 个评分中相似的高评分商品越少,也就是n 越小,则推荐优先级被增强的幅度较小;

而后,将u 最近的K 个评分中与商品q 相似的、且本身评分较低(

最后,将增强因子增加到上述的预测评分中,并减去削弱因子,得到最终的q 商品对于u 的推荐优先级。在计算完每个候选商品q 的后,将生成一组的列表updatedList:

 

而在本次为用户u 实时推荐之前的上一次实时推荐结果Rec 也是一组的列表,其大小也为K:

 

接下来,将updated_S 与本次为u 实时推荐之前的上一次实时推荐结果Rec进行基于合并、替换形成新的推荐结果NewRec:

 

其中,i表示updated_S 与Rec 的商品集合中的每个商品,topK 是一个函数,表示从 Recupdated _ S中选择出最大的 K 个商品,cmp =  表示topK 函数将推荐优先级值最大的K 个商品选出来。最终,NewRec 即为经过用户u 对商品p 评分后触发的实时推荐得到的最新推荐结果。

总之,实时推荐算法流程流程基本如下:

(1)用户u 对商品p 进行了评分,触发了实时推荐的一次计算;

(2)选出商品p 最相似的K 个商品作为集合S;

(3)获取用户u 最近时间内的K 条评分,包含本次评分,作为集合RK;

(4)计算商品的推荐优先级,产生集合updated_S;

将updated_S 与上次对用户u 的推荐结果Rec 利用公式(4-4)进行合并,产生新的推荐结果NewRec;作为最终输出。

实时推荐模型的算法设计

标签:就是   list   集合   ali   之间   接下来   函数   结果   个数   

原文地址:https://www.cnblogs.com/liangyan131/p/13037542.html


评论


亲,登录后才可以留言!