如何实现搜索引擎优化(个性化推荐系统设计的巧妙就可以立竿见影地提升运营效率)
优采云 发布时间: 2021-10-28 12:05如何实现搜索引擎优化(个性化推荐系统设计的巧妙就可以立竿见影地提升运营效率)
个性化推荐系统,设计巧妙,可即时提升运营效率和用户转化率,尤其在内容分发、电子商务、社交等领域(微博、各类新闻门户、今日头条、京东、探探等)取得了不错的效果),个性化推荐已经成为一个产品的基础。
本文从整体上介绍了一个完整的推荐系统所需的模块(不赘述)。核心包括内容来源、内容处理、用户挖掘、算法、推荐搜索引擎、ABtest系统。本文将一一介绍推荐架构的各个模块。
个性化推荐系统架构图
一、 大量推荐内容,即推荐SKU。个性化推荐的本质是提高信息筛选的效率。如果信息层次少,个性化就没有多大意义(比如一个视频网站每天只能产生10条新闻,不管多么个性化,都只是在这10条中流通,没有用户差异),个性化推荐的SKU至少是1000或10000,理论上,内容越优质,品类分布越广,个性化推荐效果越好。
这些内容可以从无版权内容、UGC、版权合作PGC等多个来源进行抓取,由于来源不同,风格和质量可能差异很大,因此通常需要进行内容抓取、清理、转码等确保风格统一。用户管理系统、反垃圾邮件等可能需要配合构建内容生态。个性化推荐系统可能彼此相似,不同的推荐内容造成不同的用户场景和产品壁垒。内容本质上是一种资源。
二、内容标准化处理
第一步是准备内容,下一步是将内容处理成机器和算法可以理解的特征(如分类、标签、产品库等)。如何处理取决于业务需求和需要的技术:如果是文章、新闻、微博等,需要自然语言处理;如果是图片或视频,会涉及到图像识别和处理;如果是歌曲、电影、商品等,机器更难直接理解要标注的内容。最好建立一个机制让用户进行标注,或者手动填写或抓取标签。
但无论内容如何,首先要建立自己的标签体系。这是定义标准的过程。例如,要标记电影,首先要定义有多少种电影。通常标签系统将是一个树或网络结构。; 其次,可能需要采集大量的训练样本。例如,要实现图片的标注,首先需要人工标注数万张图片进行机器学习,标注的样本需要不断更新,这就涉及到大量重复、繁琐的人工劳动。所以圈子里的人经常开玩笑说,“人工智能”的重点其实是“人工”。
三、用户行为日志采集、传输、挖掘和存储
推荐的基础是数据。前两步挖掘内容数据,第三步挖掘用户行为,生成用户画像。
采集:通常使用前端埋藏方式来报告用户的点击、分享、采集等行为。日志采集是数据挖掘中非常重要的一部分。如果采集有遗漏或错误(可能),那以后不管怎么做都没有效果。同时,前端的变化也可能会影响到日志。协调不力会对后端造成很大的影响。
传输:用户的兴趣采集越快越好,让用户的某个操作能快速反馈到下一次推荐。因此,需要日志的稳定传输和更新。然而,出于成本考虑,用户配置文件并不总是可用的。对于实时更新,有的可能会延迟1小时,有的可能一天更新一次,一周更新一次,甚至更长时间。
挖掘:这个过程就是将用户数据计算并挖掘成我们想要的特征(俗称“用户画像”,业内通常称为用户画像)。用户挖掘通常需要结合算法,而不是凭空挖掘特征,没有算法应用,再厉害的用户画像也没有价值。
存储:用户的兴趣在一段时间内不会有太大的变化,因此可以利用用户的长期行为来积累用户画像,而这些画像需要被存储起来。如果用户数量多,需要的存储资源也海量,那么就需要一个可以分布式存储大量数据的数据库,而且需要可靠且便宜,比如hdfs(Hadoop Distributed File System),如果你想要实时计算用户兴趣需要一个可以快速访问的数据库,比如redis,所以购买服务器对于微博和今日头条这样的公司来说也是一笔不小的开支。
当然,用户的兴趣不是一成不变的,所以用户的兴趣需要随着时间的推移而“衰减”。设置合理的衰减系数对于用户配置文件也很重要。
另外,用户行为挖掘存在一个历史问题——用户冷启动。我们需要就这个话题开始一个 文章 讨论。
四、排序算法
有了前三步的内容和用户数据,就可以用算法来匹配第四步的两者了。个性化推荐的本质是做Top N排名,通常包括“召回”和“排名”两个模块。比如我有10万条信息,但用户每天只能看到10条信息,我应该向用户推荐哪10条信息?我可以将 100,000 个项目从 10,000 到 100,000 进行排序,这样无论用户想要查看多少项,我只需要从我排名的 10,000 个项目中从前到后挑选。这个过程就是“排序”;但是这种排序方式在实时索引中计算量太大,可能会带来很高的延迟,所以我们先用比较简单的方法选择比较可靠的1,从 100,000 中选择 000,然后对 1,000 进行排序,并选择 100,000。10,000 过程是“召回”。
在算法方面,有很多方法。可以参考之前公众号发的文章,详细介绍了目前推荐系统常用的最有效算法。另外,无论什么算法需要在内容推荐后使用“动态指标”(如ctr),在推荐前如何获取这个动态指标?这里涉及的内容冷启动后面会单独讨论。
五、推荐搜索引擎
怎么会有搜索引擎?是的,你没有看错。事实上,个性化推荐和搜索是非常相似的领域。两者都是信息筛选方法,都在做一种“相关性”排序,目标函数非常接近(点击率)。只是搜索更关注用户当前搜索关键词的相关性,而推荐更关注内容和用户*敏*感*词*的相关性。用户每次浏览,都是实时请求。因此,需要实时计算出最符合用户兴趣的内容。此步骤由在线搜索引擎执行。但是,由于性能要求,在线索引步骤不应过于耗时的计算。一般来说,排序算法计算初始结果,在线引擎进行算法调度和归一化排序。此外,在线索引还会承担接收请求、输出数据、暴露点击删除等服务,通常还负责业务和产品需求的二次排序(如插入广告、拆分同类型内容、等等。)。
六、ABtest系统
虽然ABtest系统不是个性化推荐系统的必要模块,但没有ABtest的推荐系统一定是假推荐系统!推荐系统的优化其实就是ay=f(x),y就是目标函数。第一,目标函数必须非常明确,是一个可量化的指标;f(x)是选择的算法,算法特征参数,算法调度其实业界一直采用的有效算法那么多,算法原理就那么几个。但是,如何结合自己的产品场景选择特征和参数,成为影响个性化推荐准确率的关键因素。如果有ABtest系统,那么我们可以尝试引入各种参数和特征,ABtest实验会得到最好的y,
当然,算法的优化并不是改变参数那么简单。推荐人需要对数据非常敏感,能够将复杂的问题抽象为可量化的指标,然后结合ABtest实验进行快速迭代。我总结的算法优化过程是:“数据分析发现问题,合理假设,设计实验,实现,数据分析,得出结论或新假设。” 改变参数只是“实现”的一步,也是最简单的一步。大多数人往往只重视“实现”,而对分析和假设的过程关注得太少,因此优化的效果得不到保证,并且有一些产品和技术人员会陷入盲目ABtest的误区,漫无目的地尝试,经常做ABtest发现AB组数据没有差异,甚至有ABtest效率低下的想法。这些分析思路拉开了算法工程师之间的鸿沟。
七、总结
有了这6个部分,就搭建了一个完整的个性化推荐系统。整个系统涉及算法工程师,自然语言处理/图像处理工程师,服务器端工程师/架构师,数据挖掘工程师,数据分析师,产品经理还需要标注大量的审稿人,内容运营,还涉及前端和客户端技术支持。因此,构建一个好的个性化推荐系统的成本相对较高,但有时我们并不需要一个系统。有可能一些简单的规则可以实现相对个性化,提高用户效率(比如把用户最近浏览的商品放在第一位),所以提高效率的思路和方法是最重要的,这就是我们需要讨论的许久。
欢迎觉得有用的朋友点赞转发支持!