部分内容转载+一些自己的应用与理解,转载部分内容在最下方注明出处。
推荐系统是一个很大的话题,涉及到很多模块,这里主要是调研了一下推荐召回环节的主流做法。一般有如下几条线路。
所谓召回,在刚接触推荐系统的时候可能只看字面意思无法理解召回的意思,召回可以理解为向用户粗选一批待推荐的商品,相当于粗排序。之后会加一层CTR预估的rank模型,相当于精排序
推荐系统的主要模块即为:召回 => 排序(精排) => 过滤模块(对最终展示商品进行过滤,多样性排序等)
基于Content的推荐
方法:只使用内容信息,而不直接使用用户行为数据。通过分析内容,推荐与用户浏览历史相似的内容。因此,如何计算内容之间的相似性是问题的关键。一般分成“分词”,“词权重分析”,“降维”三个阶段,每个阶段都有很多可以优化的地方,不同的做法会带来不一样的推荐体验。
优点:(一)不依赖用户行为数据,因此不存在新内容的冷启动问题。(二)基于内容的做法很容易在“降维”阶段引入用户行为,从而可以吸收一部分CF的优点。
缺点:(一)需要精细优化的地方会很多,没有工匠精神,效果比较难出来。(二)最重要的模块是通过对用户session实时分析用户意图。
应用: 在电商推荐中,如果基于内容计算商品相似度,内容相似度一般定义为(品牌+品类+价格+标题的内容相似度),大规模两两之间相似度计算非常困难,工程上实现需要LSH等方法
基于CF的推荐
方法:只使用用户行为数据,而不管内容信息。通过用户行为向量,使用item-base和user-base方法推荐相似内容或者相似人群喜欢的内容。
优点:(一)当用户行为数据丰富的时候,itembase和userbase的协同过滤方法非常通用,很容易出效果。(二)用户行为关联可以推荐出偏topic属性的内容,而不会局限于关键词,因此相关性效果一般都很好。
缺点:新内容的冷启动问题很严重,只能通过EE的方式缓解。
应用:电商中基本是item-based CF,即对于一个用户,先取出用户过去的行为session商品(如点击,加购物车,下单等),根据规则向用户的召回集中选择商品,可以配置多个召回源,如相似、相关、偏好店铺热销等。因此重点是离线计算好多种相似度关系(比如商品与商品的相似度、相关度,店铺下商品的热门程度、店铺与店铺的相似程度等) ,注:商品和商品的相似度,一般通过用户的浏览行为,用频繁项集(基于共现次数+热门商品降权方法)来计算,这样不用引入22之间计算的笛卡尔积,计算效率得到保证。
如果是user-based CF,则首要任务是计算用户之间的相似度,同样计算量非常大,但这种方法推荐新颖性较好(网易云音乐好像适用类似方法)。微信的deepwalk(用户的相识关系是典型的图模型),deepwalk通过节点的游走可以算出每个节点的embedding,进而求节点的相似度。
基于内容和CF的混合推荐
方法:不仅使用用户行为信息,而且还使用内容信息。一般是使用feature-based模型来进行推荐。
优点:(一)理论完备,通过模型的推广能力来解决新内容的冷启动问题,而且在小数据集上离线指标往往比CF能取得更好的效果。(二)可以通过提高模型复杂度不断提高推荐效果。
缺点:工程实现时难度比较大,需要解决用户和海量内容的打分服务,这方面可以参考以下Facebook的一篇文章recommending-items-to-more-than-a-billion-people。
部分内容参考:
作者:EasonZhao
链接:https://www.jianshu.com/p/92321832c18c
來源:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。