paint-brush
为什么以及如何构建自定义推荐引擎by@itrex
1,328
1,328

为什么以及如何构建自定义推荐引擎

ITRex17m2023/06/13
Read on Terminal Reader

人们在 [Netflix](https://hackernoon.com/company/Netflix/) 上观看的节目中有超过 80% 是通过该平台的推荐引擎发现的。在这篇博文中,我们将指导您完成构建推荐引擎的过程,并阐明在求助 AI 服务供应商之前您需要了解的所有信息。
featured image - 为什么以及如何构建自定义推荐引擎
ITRex HackerNoon profile picture
0-item
1-item


人们在Netflix上观看的节目中有超过 80% 是通过该平台的推荐引擎发现的。这意味着你的眼睛所看到的大部分内容都是复杂机器做出决定的结果。


流媒体服务依靠人工智能来查看内容中的细微差别,并深入了解观众的喜好。可以肯定地说:努力得到回报!

如果您仍然落后于潮流,但想改善客户对您的业务的体验,请继续阅读。在这篇博文中,我们将指导您完成构建推荐引擎的过程,并阐明在求助 AI 服务供应商之前您需要了解的所有信息。


Recommendation Engines 101:进入开发之前需要知道的事情

在开始讨论如何构建推荐引擎之前,让我们先了解一下推荐引擎的类型、用例和实施选项。


推荐引擎的类型

传统上,推荐系统分为两大类:基于内容的过滤和协同过滤系统。

基于内容的过滤

基于内容的过滤系统根据内容的特性或特性生成推荐。换句话说,他们推荐与用户之前喜欢或互动过的产品或内容相似的产品或内容。这样,推荐引擎可能会向喜欢“西线无战事”和“第 22 条军规”的读者推荐“永别了,武器”。


但是引擎如何知道哪些项目是相似的呢?让我们看看 Netflix 构建推荐引擎的方法来理解这一点。虽然 Netflix 的推荐系统是混合性质的,但它在很大程度上依赖于内容相似性。


流媒体服务有一个标记器团队,他们会观看每一个新内容并对其进行标记。标签的范围很广,从作品的动感程度到它是在太空中设置还是由特定演员主演。使用机器学习算法根据观众行为分析标签数据,让流媒体平台找出与每个用户真正相关的内容。


协同过滤

协作过滤系统根据用户反馈提出建议。此类系统假设喜欢类似项目的用户可能对新产品和内容有类似的反应。


有两种方法可以构建依赖协同过滤的推荐引擎:基于用户和基于项目。


通过基于用户的过滤,您可以创建具有共同偏好的相似用户群。因此,用户很可能会被推荐该细分市场中其他用户喜欢的项目。不考虑内容的特征。


通过基于项目的过滤,引擎会根据用户喜欢的项目与建议的项目的相似性创建推荐。听起来类似于基于内容的过滤,不是吗?虽然基于内容的过滤和基于项目的协同过滤系统都使用项目相似性来进行推荐,但它们在确定相似性的方式上有所不同。


基于内容的过滤系统仅推荐与用户已经喜欢的项目相似的项目。使用基于项目的协同过滤,您将被推荐一个与您喜欢的项目相似并且您的细分用户也喜欢的项目。




推荐引擎的用例

高度个性化已成为用户所期望的必需品,促使企业通过推荐引擎丰富他们的在线体验。推荐引擎已经变得相当普遍的领域包括:


  • 零售和电子商务:电子商务中的推荐引擎可以做任何事情,从产品分类到推荐新商品供客户购买。在电子商务中实施推荐引擎以及增强的客户服务、改进的营销以及随之而来的更广泛的追加销售的可能性所带来的影响很难被高估。例如,著名的电子商务大亨亚马逊, 其 35% 的收入都得益于其推荐系统。


  • 媒体和娱乐:从策划播放列表到根据过去的互动提供个性化建议,推荐引擎通过向用户展示他们不会发现的内容,帮助媒体和娱乐平台更长时间地吸引用户。最大的媒体和娱乐平台,如YouTubeNetflixSpotify ,都严重依赖人工智能生成的个性化推荐来吸引和留住新用户。


  • 社交媒体:社交媒体行业也在利用技术提供个性化建议。社交媒体平台帮助用户发现相似的页面和帐户,促使用户花更多时间与内容互动,从而提高点击率并增加收入。


  • 银行和金融:基于人工智能的推荐系统允许银行分析用户的交易和追加销售以增加收入。例如,当用户购买一张价值 500 美元的机票时,推荐引擎会自动假定他们是在国外飞行,并建议他们购买保险旅行套装。



可供选择的实施方案

当您踏上构建推荐引擎的旅程时,您会遇到几个各有优势和考虑因素的实施方案,即:

即插即用推荐引擎

即插即用的推荐引擎提供了一种方便且无忧的方式,可以将个性化推荐整合到您的产品或平台中。它们是预构建的,旨在无缝集成到您现有的基础架构中。


即插即用推荐引擎的主要优势在于它们的简单性和易用性。它们通常设计为用户友好型,即使是非技术人员也可以轻松设置它们。即插即用推荐引擎的示例跨越 Recombee、Seldon 和 LiftIgniter 等平台。


即插即用推荐引擎的缺点是定制化和适应性有限。虽然它们提供了便利和速度,但它们可能无法提供定制解决方案所提供的灵活性和微调水平。

预训练的基于云的推荐服务

基于云的推荐引擎允许利用云服务提供商的大量计算资源和专业知识。这些推荐服务通常提供易于使用的 API,使开发人员能够轻松地将推荐功能集成到他们的应用程序中。


基于云的推荐引擎也具有高度可扩展性,这使它们能够处理庞大的用户群和高流量负载。另一个优势是持续改进,因为基础模型由服务提供商更新和改进。


领先的云服务供应商,如 Amazon Web Services、Google Cloud Platform 和 Microsoft Azure,提供预训练的推荐服务。


选择预训练的基于云的推荐服务时要考虑的因素包括数据隐私、供应商锁定和定制要求。虽然这些服务提供了便利性和可扩展性,但它们在定制推荐算法以满足您的特定业务需求方面可能存在局限性。

自定义推荐引擎

自定义推荐引擎提供最高程度的灵活性和控制,允许您合并专有算法、利用特定领域的知识并考虑数据的细微差别。采用自定义方式可以让您捕获用户偏好、项目特征和上下文因素的复杂性,通常会产生更准确和相关的推荐。


然而,虽然自定义推荐引擎提供了最大的灵活性,但它们也需要大量的开发资源、机器学习方面的专业知识和持续的维护工作。因此,在构建自定义推荐引擎之前,请仔细评估您的业务需求、可用资源和长期目标。


经验法则是在以下情况下使用自定义路由:


  • 您有独特的业务需求:如果您的企业有现成的解决方案无法满足的独特需求,请进行定制。它将允许您根据您的特定任务定制算法。比如说,您是一个销售手工艺品的利基电子商务平台。在推荐产品时,您可能有不同的要求:推荐引擎必须考虑产品稀有性、工艺以及用户对特定样式或材料的偏好等因素。从头开始构建推荐引擎将更有可能让您生成符合用户偏好的推荐。


  • 您想要完全控制和所有权:构建自定义推荐引擎使您可以完全控制整个推荐生成过程:从数据预处理到算法选择再到微调。它允许您获得系统的完全所有权,并随着业务的发展对其进行调整,而无需依赖第三方解决方案。


  • 您拥有特定领域的知识:如果您拥有特定领域的专业知识或可以访问可以显着提高推荐准确性的专业数据,那么构建自定义解决方案可以让您有效地利用这些知识。通过开发定制的推荐引擎,您可以合并预训练解决方案中可能不可用的特定于领域的功能或约束。


  • 您的应用程序需要高可扩展性和性能:如果您预计会有大量的用户或项目,有严格的延迟限制,或者需要处理大型和复杂的数据集,构建自定义推荐引擎可以让您灵活地设计和优化系统以获得最大可扩展性和性能。如果您想生成实时或近实时的推荐,这同样适用。


  • 您想获得竞争优势:如果准确的推荐是您的产品或服务的核心差异化因素,那么构建自定义推荐引擎可能会给您带来竞争优势。在这种情况下,投资于量身定制的解决方案可以提供提供独特和个性化体验、提高参与度、忠诚度和客户满意度的机会。

逐步构建自定义推荐引擎

提供个性化推荐是一项通常通过机器学习解决的任务。也可以使用神经网络。然而,它们的作用主要限于预处理训练数据。以下是 ITRex 的机器学习开发人员分享的构建推荐引擎过程中的关键步骤。

Step 1. 设定方向

通过为项目的其余部分设定方向来启动开发。在这个阶段要做的基本事情包括:


  • 设定目标和定义项目范围

清楚地概述您打算使用推荐系统实现的目标,并根据资源和预算限制权衡既定目标。例如,如果您想提高客户参与度并增加在线商店的销售额,您可以将项目范围限制在向已经购买的客户推荐产品。与构建针对所有客户的推荐引擎相比,保持范围非常狭窄需要更少的工作,同时产生投资回报率的潜力仍然很高。


  • 评估可用数据源

推荐系统的性能在很大程度上取决于训练数据的数量和质量。在冒险进行培训之前,请仔细评估您是否有足够的数据点来生成建议。


  • 定义性能指标

构建推荐引擎的主要挑战之一应该在一开始就考虑在内,即定义成功指标。在开始训练 ML 算法之前,找出一种方法来判断用户是否真的喜欢新生成的推荐。


步骤 2. 收集训练数据

构建自定义推荐系统过程的下一步是收集和准备用于训练机器学习算法的数据。要构建可靠的推荐系统,您需要足够的用户偏好数据。


根据构建推荐引擎的方法,您的重点将会转移。在制作协同过滤系统时,您收集的数据以用户行为为中心。使用基于内容的过滤系统,您可以专注于用户喜欢的内容的特征。


协同过滤

有关用户行为的数据可能有不同的形式:


  • 明确的用户反馈是需要用户做出努力的任何事情,例如撰写评论、喜欢一段内容或产品、抱怨或发起退货。
  • 隐式用户反馈,例如过去的购买历史记录、用户花在查看某个优惠上的时间、查看/收听习惯、在社交媒体上留下的反馈等等。


在构建推荐引擎时,我们建议将显式和隐式反馈结合起来,因为后者可以挖掘用户可能不愿意承认的偏好,从而使系统更加准确。



基于内容的过滤

在为基于内容的过滤系统收集数据时,了解在挖掘用户喜欢什么时应该依赖哪些产品/内容功能至关重要。


假设您正在为音乐爱好者构建一个推荐引擎。您可以依靠频谱图分析来了解特定用户喜欢什么类型的音乐,并推荐具有相似频谱图的音乐。


或者,您可以选择歌词作为推荐的基础,并推荐处理相似主题的歌曲。


关键是测试和调整,以便了解最适合您的方法,并准备好不断改进初始模型。


步骤 3. 清理和处理数据

要构建高性能推荐引擎,您必须考虑到不断变化的用户口味。根据您的推荐,较早的评论或评分可能不再相关。

为防止不准确,请考虑只查看更可能代表当前用户品味的特征,删除不再相关的数据,并为最近的用户操作增加比旧操作更多的权重。


步骤 4. 选择最优算法

构建推荐引擎过程的下一步是选择适合您任务的机器学习算法。 ITRex 的数据科学家建议考虑以下因素:


  • 矩阵分解将大型数据集分解成较小的部分,以揭示隐藏的模式以及用户和项目之间的相似性。


  • 张量分解是矩阵分解的扩展,可以处理称为张量的高维数据结构。它通过将张量分解为潜在因子来捕获更复杂的模式,从而提供对用户-项目交互的更详细的理解。


  • 分解机是可以处理高维和稀疏数据的强大模型。它们捕获特征之间的交互,并可应用于推荐任务。通过考虑特征交互,即使数据不完整,他们也可以提供准确的建议。


  • 邻域模型根据属性或行为发现用户或项目之间的相似性。它们对协同过滤特别有效,它们在网络中的用户或项目之间建立联系,并根据相似用户或项目的偏好进行推荐。


  • Random Walk是一种基于图形的算法,用于探索网络中项目或用户之间的联系。通过在网络中导航,它可以捕获项目或用户之间的相似性,并根据捕获的连接进行推荐。


  • SLIM是推荐系统中使用的一种技术,用于了解项目之间的关系。它侧重于在项目之间的关系中寻找模式,并使用这些模式进行推荐。


  • 线性模型根据特征之间的线性关系预测用户项目偏好。虽然它们易于理解和快速训练,但它们可能无法像其他方法那样有效地捕捉复杂的模式。


此外,您还可以从以下深度学习模型中进行选择:


  • DSSM(深度结构化语义模型)学习文本或文档的表示。他们专注于在结构化框架内捕捉单词的语义及其关系。


  • 图卷积网络专为图结构数据而设计。它们对图进行操作,捕获图中节点之间的关系和交互。


  • 变分自动编码器是一种生成模型,它通过捕获数据的潜在潜在空间来学习数据的表示。这些模型使用编码器-解码器架构将数据压缩到低维空间并重建它。


  • Transformer是一种使用自我注意机制来捕获句子或文档中单词之间的上下文关系的模型。


需要注意的是,上述方法很少单独使用。相反,它们通过以下技术和算法组合在一起:


  • 集成涉及独立训练多个模型,然后通过各种技术组合它们的预测。每个模型对最终预测的贡献相同,组合通常很简单,不涉及训练额外的模型。


  • 堆叠采用更高级的方法。它涉及训练多个模型,称为基础模型,然后通过元模型组合它们的预测。基础模型根据输入数据进行预测,它们的预测成为元模型的输入特征。然后训练元模型以做出最终预测。


  • AdaBoost是一种集成学习算法,它通过在不同的数据子集上迭代训练基础模型来提高它们的准确性。该方法侧重于难以正确分类的实例,并在后续的训练迭代中给予它们更多的关注。在每次迭代中,AdaBoost 都会根据分类准确度为训练实例分配权重。然后它在加权数据上训练表现不佳的模型,其中权重强调先前迭代中错误分类的实例。


  • XGBoost是一种集成方法,它迭代地组合弱预测模型以创建更强的模型。它以顺序方式训练模型,其中每个后续模型都会纠正前一个模型所犯的错误。



步骤 4. 训练和验证模型

一旦您确定了推荐引擎的算法,就可以训练和验证模型了。以下是构建推荐引擎过程中的这一步:


首先,您需要将数据分成两组:训练集和测试集。顾名思义,训练集会教您的模型识别用户偏好中的模式。测试集有助于评估模型在新数据上的性能。


准备好训练集后,开始训练您的模型。这涉及将算法暴露给数据,使其能够学习潜在的模式和关系。


在训练阶段之后,是时候使用测试集评估模型的性能了。这将帮助您了解模型对新数据的泛化效果如何。


或者,您可以依靠实时反馈来了解模型的执行情况。这样,您就可以在生产中部署模型并将生成的建议映射到用户反馈。然后进入下一步,设置模型以通过迭代学习过程调整其参数。

步骤 5. 调整模型超参数

评估模型的性能后,您可以根据需要对其进行微调。让我们考虑一个基于协同过滤算法的推荐系统示例。

在协同过滤中,邻居的数量决定了推荐时考虑了多少相似的用户或物品。假设您正在构建一个依赖协同过滤并推荐新电影的推荐引擎。最初,您将邻居数设置为 10,这意味着模型在生成推荐时会考虑 10 个最相似用户的偏好。


评估模型的性能后,您发现建议的精度低于预期。为了改进这一点,您决定通过调整邻居的数量来微调模型。


要探索不同邻居大小的影响,您可以使用范围值运行实验。例如,将邻居的数量减少到 5 可能会导致精度显着提高。但是,您可能会注意到召回率略有下降,这表明该模型遗漏了一些相关建议。反过来,增加数字 20 可能会导致召回率略有提高,但建议可能会变得不那么个性化。


关键是要在准确率和召回率之间取得折衷,并在捕捉不同的用户偏好和保持准确的推荐之间取得平衡。


步骤 6. 实施、监控和更新模型

模型准备就绪并准备推出后,就该实施它了。


为确保成功实施,请考虑以最有效的方式将模型整合到您现有的基础架构中。例如,您可以将模型嵌入网站的后端,确保它与用户界面无缝交互。这种集成支持动态适应用户偏好的实时推荐。


或者,您可以将模型部署为服务,例如推荐引擎 API,您的应用程序的其他组件可以轻松调用该服务。这种面向服务的方法确保了灵活性和可扩展性,使您的应用程序能够毫不费力地利用推荐引擎的功能。


实施阶段也是考虑如何将建议呈现给用户的好时机。它们会作为个性化建议显示在网站主页上,并在直观的界面中整齐地分类吗?或者它们会无缝集成到应用程序的界面中,适时出现给用户惊喜?选择权在您手中,但始终将用户体验放在首位。


最后,严格测试实施的模型以确保其无缝功能至关重要。运行综合测试以验证其在各种用户交互中的性能和行为,以确保推荐准确、及时并符合用户期望。


构建推荐引擎的挑战,以及如何解决它们

了解构建推荐引擎的挑战对于提供个性化和相关的推荐至关重要。以下是最常见的概要:

挑战 1. 衡量成功

构建推荐引擎的主要挑战之一应该在一开始就考虑在内,即定义成功指标。换句话说,在开始收集数据和训练 ML 算法之前,您应该想出一种可靠的方法来判断用户是否真的喜欢新生成的推荐。这将指导您的开发过程。

比如说,你是一个流媒体平台。你可以计算点赞数或每月付费订阅数来衡量你的推荐引擎的表现。然而,您的推荐很可能是好的,而用户不愿意明确说明他们的偏好或为服务付费。


我们的数据科学家的经验表明,用户行为是衡量推荐系统性能的更可靠方法。如果用户在一个晚上狂看一个节目,即使没有给出明确的反馈,我们也不会怀疑他们是否喜欢这个节目。

挑战二:维数灾难

数据维度是指数据集中特征的数量。更多的输入特征通常会使构建准确的推荐引擎更具挑战性。让我们以 YouTube 为例。在平台上,数十亿的视频和用户并存,每个用户都在寻求个性化的推荐。然而,人力和计算资源是有限的,几乎没有人愿意花几个小时等待推荐加载。


为了应对这一挑战,在启动推荐算法之前需要一个额外的步骤,即候选生成。此步骤允许将数十亿个视频缩小到例如数万个。然后这个较小的组用于生成推荐。


各种策略,最近邻搜索是最突出的一种,用于候选生成。其他克服维度问题的常见做法包括探索流行的类别或相似年龄组的人共有的偏好。


挑战三、冷启动

构建推荐引擎过程中的另一个常见问题是,当系统缺乏有关用户或项目的足够信息时,就会出现冷启动难题,从而难以提供准确的推荐。克服这一障碍涉及采用协作过滤、基于内容的过滤或混合方法等方法。


挑战 4. 长尾

推荐系统可能会遇到一种称为“长尾”的现象。这意味着受欢迎的项目会得到更多的关注和推荐,而不太受欢迎的项目仍然不会被用户注意到。解决这个问题需要生成个性化推荐并考虑个人用户偏好。


挑战五、新品冷启动

当一个新项目被添加到系统中时,它几乎没有或没有用于生成推荐的历史数据,因此很难创建相关的建议。解决此问题的一种方法是使用内容过滤器并通过促销或广告积极吸引用户与新项目进行交互。


挑战六、新用户冷启动

同样,新用户可能没有足够的历史数据来进行准确的推荐。为了克服这一挑战,可以采用基于内容的过滤、反馈请求和初始用户调查等方法。


挑战 7. 数据稀疏性

在推荐系统中,数据稀疏性是一种常见现象,其中许多用户对少量项目进行评分或交互。这对预测用户偏好提出了挑战。为了解决这个问题,可以使用结合降维、正则化和其他技术的矩阵分解方法。


把它们加起来

构建推荐引擎是一段由算法、用户洞察和迭代优化推动的旅程。从定义问题到通过细致的数据预处理选择正确的方法再到模型训练,每一步都有助于创建强大的推荐系统。


推荐引擎了解用户偏好并提供量身定制的推荐的能力可以为您的业务带来巨大的潜力。亚马逊、YouTube、Spotify 和许多其他鲜为人知但同样成功的企业革新了他们的产品,随后通过量身定制的推荐增加了收入。


例如,依赖高度个性化推荐作为关键差异化因素的音乐流媒体平台 Spotify,其用户群和收入每年都在持续增长。就在 2022 年第四季度,发现一首最喜欢的新歌的承诺使该平台的月活跃用户增加了 20% ,净增加了 3300 万。

如果您仍然落后于潮流,那么是时候利用 AI 的力量,并使用自定义推荐引擎彻底改变您的用户体验了。


寻求使用强大的推荐引擎来增强您的解决方案?与 ITRex 顾问交谈


也发布在这里。