构建企业级推荐系统:算法、工程实现与案例分析
上QQ阅读APP看书,第一时间看更新

4.4.2 基于用户行为记录更新标的物关联表CR

基于4.4.1节中获取的用户行为记录,在这一步需要更新标的物关联表CR,这里涉及两类更新。首先,计算用户U在时间窗口W内的所有k次行为[(sid1,score1,time1),…,(sidk,scorek,timek)],我们对标的物两两组合(自身和自身做笛卡儿积)并将得分相乘更新到CR中,比如(sid1,sid2)组合,它们的得分score1、score2相乘,score1×score2更新到CR表中rowkey为(sid1,sid2)的行中。(sid1,sid2)的得分score更新为score+score1×score2。其次,对于用户U在时间窗口W中的行为,还要与用户行为表UAction中的行为两两组合(做笛卡儿积),并采用前面介绍的一样的策略更新到CR表中,为了防止组合过多,可以只选择在一定时间范围内(比如2天内)的标的物对组合,从而减少计算量。

这里说一下,如果用户操作的某个标的物已经在行为表UAction中(这种情况一般是用户对同一个标的物做了多次操作,昨天看了这短视频,今天又看了一遍),我们需要将这两次相同的行为合并起来,具体操作是将这两次行为中得分高的赋值为行为表中该标的物的得分,同时将操作时间更新为最新操作该标的物的时间。再将时间窗口W中该操作剔除掉,该操作就不参与跟UAction表中同样的操作行为的笛卡儿积计算。而这个出现两次的标的物还需要与UAction表中其他所有的标的物做笛卡儿积计算得分,并替换掉原来的CR表中的得分。