- 更新用户的行为记录HBase表:UAction
- 为用户生成个性化推荐
用户U对标的物的评分

文章插图
可以采用如下公式计算 。

文章插图
其中t是用户操作过的标的物,

文章插图
是该用户对标的物t的得分(即图10中UAction数据结构中的评分r),

文章插图
是标的物t和标的物s之间的相似度, 可以采用如下公式计算, 这里

文章插图
就是标的物关联表CR中(t,s)对应的得分,

文章插图
和

文章插图
类似 。

文章插图
当我们计算完了用户U跟所有标的物的得分之后, 通过对得分降序排列取topN就可以作为U的推荐了 。 当标的物量很大(特别是新闻短视频类产品)时, 实时计算还是压力非常大的, 这时我们可以采用一个简单的技巧, 我们事先从CR表中过滤出跟用户行为表中至少有一个标的物t有交集的标的物s(即标的物对

文章插图
得分不为零), 只针对这部分标的物计算

文章插图
, 再从这些标的物中选择得分最大的topN推荐给用户 。 为什么可以这么做呢?因为如果某个标的物s与用户行为标的物集合无交集, 那么根据计算

文章插图
的公式,

文章插图
一定为0, 这时计算出的

文章插图
也一定为0 。
上面针对一个用户怎么实时计算协同过滤做了讲解, 那么在一个时间窗口W中有若干个用户都有操作行为, 这时可以将用户均匀分配到不同的Partition中, 每个Partition为一批用户计推荐 。 具体流程可以参考下面图11 。 为每个用户计算好推荐后, 可以插一份到HBase中作为一个副本, 另外还可以通过Kafka将推荐结果同步一份到CouchBase集群中, 供推荐Web服务为用户提供线上推荐服务 。

文章插图
图11:在同一时间窗口W中为多个用户生成个性化推荐
近实时的协同过滤主要用于对时效性要求比较高的产品形态, 比如新闻、短视频等应用 。 这些应用标的物更新快, 用户消耗一个标的物(读一篇文章、看一段短视频)所花的时间较短, 这类应用一般是用于填补用户的碎片化时间的 。 而对于电商、视频等产品, 近实时的协同过滤不是必须的 。
上面我们讲解的只是近实时协同过滤的一种实现方案, 其实近实时协同过滤有很多可行的实现方案, 我们的实现方案跟参考文献6中的covisitation counts方案思路本质上是一致的 。 读者也可以阅读参考文献5, 腾讯给出了另外一个利用Storm来实时实现协同过滤的方案, 思路是非常值得借鉴的 。 另外参考文献6中Google实现了一个新闻的协同过滤算法, 通过MinHash算法基于用户行为来近实时计算用户相似度, 最终通过类似基于用户的协同过滤的算法来为用户推荐 。 参考文献7、8也对怎么增量做协同过滤给出了独特的方法和思路 。
五、协同过滤算法的应用场景协同过滤是非常重要的一类推荐算法, 我们在第三、第四节介绍了批处理(离线)协同过滤和近实时协同过滤的工程实现方案, 相信大家对怎么基于Spark及HBase技术实现协同过滤有了比较清晰的认知 。 那么协同过滤算法可以用于哪些推荐业务场景呢?它主要的及延伸的应用场景有如下3类:
推荐阅读
- 分享一下我在工作中常用的一些工具 运营工具有哪些?
- 重点管控地区及关注地图分享 什么是重点管控地区
- 充满阳光正能量激励人心的句子分享 充满阳光正能量的句子
- 分享企业做品牌网络营销的3大好处 企业做品牌网络营销的好处有哪些?
- 分享企业品牌的5大作用 企业品牌的作用有哪些?
- 分享做企业营销策划的8个技巧 企业营销策划该怎么做?
- 分享制定企业营销策划方案的2大法则 企业营销策划方案如何制定?
- 分享企业招商营销策划的4大策略 企业招商营销策划的策略有哪些?
- 原神手游单手剑攻略-单手剑优缺点及玩法分享你知道吗
- 分享左岸咖啡的文案 简短咖啡文案有哪些?