[原]内容分发平台个性化推荐系统经验简单总结
推荐在电商和互联网应用中已经应用的非常广泛,相比于根据query进行主动的搜索,推荐是更加被动的由系统自动推出商品给用户。搜索的意图比较明显,直接由query给出,而推荐需要计算猜测用户的意图,根据用户历史数据和当前行为,基于各种模型推荐合适的商品,提升用户体验,提高转化率。不过近些年来,搜索和推荐在底层模型和技术方面越来越趋于融合,利用机器学习的方式来改进搜索和推荐的质量,像搜索排序LTR等等。
推荐系统需要考虑用户、平台、内容提供方之间的共赢,推荐系统可以增加长尾销售能力,增加用户粘性和提高用户体验,提高转化率以及商业收入。
先说一下在我们应用内容分发平台中几种推荐算法:
基于内容Content-based的推荐,在内容分发平台中,利用用户画像中的用户-分类兴趣和分类-应用的矩阵向量进行乘法操作,得出应用打分排名进行推荐,用于解决应用的冷启动和用户行为数据稀疏问题。这种方式问题在于,对于物品对应分类比重需要人工的来进行指定,存在人为方面的因素,很难把控,在推荐的精度方面存在问题。
人工对应于的分类进行标注,难免有缺陷,对应用的内容主题相似度建模,为用户推荐和之前有过行为的应用的主题相似的应用。
在内容推荐中,还有一种是对应用进行打标签Tag,结合用户画像中的标签,通过内容的匹配算法,推荐应用给用户。
基于协同过滤的推荐,为了增加应用推荐的新颖性,利用用户的历史行为数据,进行基于Item的协同过滤推荐,该推荐算法需要离线计算Item之间的相似度,对于用户行为的稀疏性问题,采用Jaccard来计算物品的相似度,同时需要考虑规避活跃用户的影响。
基于关联规则的推荐,利用并行FPGrowth来计算应用之间的相关性。
推荐系统的架构
推荐系统架构包括离线和在线两部分,
离线部分,基于用户特征(画像分类兴趣、标签、行为特征)和应用库(类别、标签,每个应用都可以用类别和标签来特征化),利用机器学习、文本挖掘、统计以及相关的推荐算法进行离线模型(用户特征表、特征物品表、融合模型)计算,比如利用LDA进行应用的内容主题抽取以做主题相似度的比较;基于Item的协同过滤,需要根据用户的行为,计算物品之间的相似度;以及针对各种算法的融合模型的训练等等。这些处理过程一般都可以采用分布式的并行处理过程MR来进行离线的计算。
在线数据处理部分,是给予用户静态和实时行为特征进行相关物品检索,以及物品排序的过程。主要由场景意图、规则设定、算法融合组成。
场景主要负责对用户意图的识别,对于场景的判断,需要结合用户的实时行为,来明确用户的意图是发散还是聚焦的,不同的场景采用不同的算法进行组装,比如在首页或者频道栏用户的目的性不是那么强,为了增加用户的粘性,可以基于标签分类的推荐、协同过滤、最新最热等的算法进行推荐。在用户浏览到某一应用的详情页,那么用户的意图比较明显,可以基于内容的和关联规则的算法给用户推荐应用。在下载进行或者完成后,可以用采用基于Item的协同过滤、最新最热算法进行推荐。还有一种方式是以PUSH推送客户端的方式为用户精准的推送,可以融合推广、协同过滤、最新最热等算法。
在推荐过程中,除了在不同的场景用不同的算法进行融合外,也需要考虑商业的目标,运营业务希望通过人工规则来干预推荐的结果,比如商业推广。这就需要设定规则来进行干预。
每种算法考虑的问题角度会不一样,面对特征的多样性、模型多样性、规则多样性,需要有一种机制来ensemble融合起来,采用逻辑回归,以候选应用的每种算法或规则打分作为特征输入,以用户是否下载该应用作为二元因变量,进行建模,得出推荐的最终排名,通过这样一种融合的模型,来学习隐藏在群体背后的规则。
效果评测部分,可以采用在线A/BTesting方式,引用部分流量,在进行算法调整时对比调整前后的转化率情况;也可以离线的基于一些评价标准,F1、多样性、新颖度、RMSE、AUC等进行评测。
设计一个推荐系统,需要算法、数据、产品方面都需综合考虑,利用算法和数据得出模型并应用于推荐,推荐的结果展示以及对最终的效果的反馈也需要良好的产品设计来支撑,以提高人机交互的能力,提高推荐的效果。