解读:如何设计一个内容推荐系统?

优采云 发布时间: 2020-09-01 09:54

  如何设计内容推荐系统?

  传输: 用户的兴趣采集越快越好,以便可以将特定用户的操作快速反馈到下一个建议,因此需要稳定的传输和更新日志,但是出于成本考虑,用户配置文件并非所有都可以实时更新. 有些可能会延迟1小时,有些可能每天更新一次,每周更新一次,甚至更长.

  挖掘: 此过程是将用户数据计算并挖掘到我们想要的功能中(通常称为“用户*敏*感*词*”,在行业中通常称为用户*敏*感*词*). 用户挖掘通常需要与算法结合,而不是凭空挖掘特征. 没有算法应用程序就很棒的用户头像也不值钱.

  存储: 用户的兴趣在一段时间内不会有太大变化,因此可以使用用户的长期行为来积累用户肖像,并且需要存储这些配置文件. 如果用户数量很大,那么所需的存储资源也很大,那么就需要一个可以以分布式方式存储大量数据的数据库,并且它必须可靠且便宜,例如hdfs(Hadoop Distributed文件系统),如果您想进行实时计算用户兴趣需要一个可以快速访问的数据库(例如Redis),因此对于微博和头条等公司来说,购买服务器也是一大笔开支.

  当然,用户的兴趣不是一成不变的,因此用户的兴趣需要随着时间的流逝而“衰减”. 设置合理的衰减系数对于用户配置文件也非常重要.

  此外,用户行为挖掘还存在另一个历史问题-用户冷启动. 我们需要在此主题文章上另开篇文章.

  四种排序算法

  在前三个步骤中收录内容和用户数据时,可以在第四步中使用该算法来匹配两者. 个性化推荐的本质是进行前N名排名,该排名通常包括两个模块: “召回”和“排名”. 例如,如果我有100,000条消息,但是用户每天只能看到10条消息,那么我应该向用户推荐10条消息?我可以将100,000个项目从10,000到100,000进行分类,因此,无论用户希望看到多少个项目,我都只需从已排序的10,000个项目中从前到后进行选择. 这个过程是“排序”;但是这种排序方法在实时索引上的计算量太大,可能带来高延迟,因此我们首先使用一种相对简单的方法从100,000个中选择相对可靠的1,000个,然后对1,000个进行排序,然后选择100,000个. 10,000个过程是“召回”.

  算法中有很多方法. 您可以参考官方帐户上发布的文章,其中详细介绍了推荐系统中常用的最有效算法. 另外,无论哪种算法在内容推荐之后都需要使用“动态指标”(例如ctr),如何在推荐之前获得该动态指标?此处涉及的内容的冷启动将在以后另行讨论.

  5. 推荐的搜索引擎

  为什么有搜索引擎?是的,您没有记错. 实际上,个性化推荐和搜索是非常相似的领域. 两者都是信息筛选方法,并且都在做一种“相关性”等级,并且目标函数非常接近(点击率). 只是搜索更加关注用户当前搜索关键字的相关性,而推荐则更加关注内容和用户*敏*感*词*的相关性. 每次用户浏览时,这都是实时请求. 因此,有必要实时地计算出最能满足用户兴趣的内容. 此步骤由在线搜索引擎执行. 但是,由于性能要求,联机索引步骤不应太耗时. 通常,排序算法会计算初始结果,而在线引擎会进行算法调度和规范化排序. 此外,在线索引还将负责接收请求,输出数据并公开服务,例如单击删除通常负责对业务和产品要求进行次要排名(例如插入广告,分解相同类型的内容等). ).

  VI. ABtest系统

  尽管ABtest系统不是个性化推荐系统的必要模块,但是没有ABtest的推荐系统必须是伪造的推荐系统!推荐系统的优化实际上是y = f(x),y​​是目标函数. 首先,目标函数必须非常清晰且可量化的指标; f(x)是选择的算法,算法特征参数和算法调度实际上,业界一直采用如此多的有效算法,而算法原理却很少. 但是,如何结合您自己的产品方案选择功能和参数已成为个性化推荐准确性的关键因素. 如果有一个ABtest系统,那么我们可以尝试引入各种参数和功能,并且ABtest实验将获得最佳y,以便可以迭代和优化推荐系统.

  当然,算法的优化并不像更改参数那样简单. 推荐者需要对数据非常敏感,并且能够将复杂的问题抽象为可量化的指标,然后结合ABtest实验来快速进行迭代. 我总结的算法优化过程是: “数据分析发现问题,合理的假设,设计实验,实现,数据分析,并得出结论或新的假设. ”更改参数只是“实现”步骤,也是最简单的步骤. 大多数人通常只关注“实现”,而很少关注分析和假设的过程. 这种优化的效果无法保证,某些产品和技术人员会陷入盲目的ABtest的误解,漫无目的地尝试,经常进行ABtest并发现AB组数据没有差异,甚至认为ABtest是效率低下. 这些分析思想打开了算法工程师之间的鸿沟.

  摘要

  通过这6个部分,已构建了完整的个性化推荐系统. 整个系统包括算法工程师,自然语言处理/图像处理工程师,服务器工程师/架构师,数据挖掘工程师以及数据分析师,产品经理还需要大量标签审阅者,内容操作人员以及前端和客户端技术支持. 因此,构建良好的个性化推荐系统相对昂贵,但有时我们不需要该系统. 一些简单的规则可能会实现相对个性化并提高用户效率(例如,将用户最近浏览的商品放在首位),因此提高效率的思想和方法最为重要,这是我们需要讨论的问题很久了.

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线