2022年推荐引擎综合指南

源节点: 1883089

这篇文章是作为 数据科学博客马拉松.

介绍

2.69 年全球推荐引擎使用市场价值为 2021 亿美元。预计到 15.10 年将超过 2026 亿美元,37.79-2022 年的复合年增长率为 2026%。

公司给你的建议有时会使用数据分析技术来识别符合你口味和偏好的项目。 随着互联网数据的快速增长,毫不奇怪地说 Netflix 知道您接下来想看哪部电影或您想在 Twitter 上阅读的热门新闻文章。

随着人工智能的最新进展和多个企业之间竞争的加剧,搜索、映射和为用户提供相关数据块以改善消费者体验和增加数字化趋势是必不可少的。

话虽如此,在今天的指南中,我们将讨论推荐引擎、它们的重要性、面临的挑战、工作原理、不同的技术、应用程序和使用它们的顶级公司,最后,如何用 Python 构建自己的推荐引擎。

目录

  • 什么是推荐引擎?
  • 为什么推荐引擎在机器学习中很重要?
  • 推荐引擎的不同技术
  • 推荐引擎的工作
  • 推荐引擎的挑战
  • 如何构建推荐引擎
  • 使用推荐引擎的应用程序和顶级公司
  • 结论

什么是推荐引擎?

推荐引擎是一种数据过滤系统,它在不同的机器学习算法上运行,根据数据分析向用户推荐产品、服务和信息。 它的工作原理是利用客户偏好、过去的交易历史、属性或情境等各种因素,在客户行为数据中找到模式。

可以隐式或显式收集用于发现洞察力的数据。 公司通常使用 PB 级的数据作为推荐引擎来展示他们的观点以及他们的经历、行为、偏好和兴趣。

在这个信息密度和产品过载不断发展的市场中,每家公司使用推荐引擎的目的略有不同。 尽管如此,他们都有相同的目标,即推动更多销售、提高客户参与度和保留率,并为消费者提供个性化的知识和解决方案。

为什么推荐引擎在机器学习中很重要?

毫无疑问,推荐引擎是增强用户体验、刺激需求、增加收入、提高点击率 (CTR)、积极吸引用户以及其他关键指标的非凡方式。 作为强大的数据过滤工具,推荐引擎实时工作。 当需要为用户提供个性化的建议和建议时,它们可能是有益的。

让我们以 Netflix 为例。

有数以千计的电影和多个类别的节目可供观看。 尽管如此,Netflix 还是为您提供了更多您最有可能喜欢的电影广告节目。 通过这种策略,Netflix 可以降低取消率,每年节省 XNUMX 亿美元,节省您的时间,并提供更好的用户体验。

这就是为什么推荐引擎至关重要的原因,以及有多少企业通过提供更大量的交叉销售机会来增加其产品的参与机会。

推荐引擎的不同技术

机器学习中已知三种不同类型的推荐引擎,它们是:

1.协同过滤

协同过滤方法收集和分析用户行为、在线活动和偏好的数据,根据与其他用户的相似度预测他们会喜欢什么。 它使用矩阵式公式来绘制和计算这些相似性。

优势

协同过滤的一个显着优势是它不需要分析或理解对象(产品、电影、书籍)来精确地推荐复杂的项目。 不依赖于可分析的机器内容,这意味着它根据对用户的了解来选择推荐。

例如:

如果用户 X 喜欢 Book A、Book B 和 Book C,而用户 Y 喜欢 Book A、Book B 和 Book D,他们有相似的兴趣。 因此,很有可能用户 X 会选择书 D,而用户 Y 会喜欢阅读书 C。这就是协同过滤发生的方式。

2. 基于内容的过滤

基于内容的过滤的工作原理是描述产品和用户所需选择的配置文件。 它假设如果您喜欢某个特定项目,您也会喜欢这个其他项目。 产品是使用关键字(类型、产品类型、颜色、字长)来定义的,以进行推荐。 创建用户配置文件来描述该用户喜欢的项目类型。 然后该算法使用余弦和欧几里得距离评估项目的相似性。

优势

这种推荐引擎技术的一个显着优势是它不需要关于其他用户的任何额外数据,因为推荐是针对这个用户的。 此外,该模型可以捕获用户的特定兴趣,并建议其他用户很少感兴趣的利基对象。

例如:

假设用户 X 喜欢看像蜘蛛侠这样的动作电影。 在这种情况下,此推荐引擎技术仅推荐动作类型的电影或描述汤姆·霍兰德的电影。

3. 混合模型

在混合推荐系统中,元(协作)数据和事务(基于内容)数据同时用于向用户推荐更广泛的项目。 在这种技术中,可以为每个对象(电影、歌曲)分配自然语言处理标签,并通过向量方程计算相似度。 然后,协同过滤矩阵可以根据用户的行为、动作和意图向用户提出建议。

优势

该推荐系统正在崭露头角,据说在准确性方面优于上述两种方法。

例如:

Netflix 使用混合推荐引擎。 它通过分析用户的兴趣(协作)并推荐与用户评价高的节目/电影具有相似属性的节目/电影(基于内容)来进行推荐。

推荐引擎的工作

数据是构建推荐引擎最重要的元素。 它是算法从中派生模式的构建块。 它拥有的细节越多,它就越准确和实用地提供适当的创收建议。 基本上,推荐引擎在四个阶段使用数据和机器学习算法的组合来工作。 现在让我们详细了解它们:

1。 数据采集

创建推荐引擎的第一步也是最关键的一步是为每个用户收集适当的数据。 有两种类型的数据,即 明确的 包含从收集的信息的数据 用户输入,例如对产品的评分、评论、喜欢、不喜欢或评论.

相比之下,我们有 隐含的 包含从用户活动收集的信息的数据,例如 网络搜索历史、点击次数、购物车操作、搜索日志和订单历史。

随着时间的推移,每个用户的数据资料将变得更加独特; 因此,收集客户属性数据也很重要,例如:

  • 人口统计(年龄、性别)
  • 识别相似客户的心理(兴趣、价值观)
  • 特征数据(类型、对象类型)来确定相似产品的相似性。

2.数据存储

收集数据后,下一步就是有效地存储数据。 当您收集更多数据时,必须有充足的、可扩展的存储空间。 根据您收集的数据类型,可以使用多种存储选项,例如 NoSQL、标准 SQL 数据库、MongoDB 和 AWS。

在选择最佳存储选项时,应考虑一些因素:易于实施、数据存储大小、集成和可移植性。

3. 分析数据

收集数据后,您需要对数据进行分析。 然后必须钻取和分析数据以提供即时建议。 可以分析数据的最流行的方法是:

  • 实时分析, 其中系统使用在创建事件时评估和分析事件的工具。 这种技术主要是在我们想要提供即时推荐时实现的。
  • 批次分析,其中定期进行数据的处理和分析。 这种技术主要是在我们想要发送带有推荐的电子邮件时实现的。
  • 近实时分析, 您可以在几分钟而不是几秒钟内分析和处理数据,因为您不需要立即使用它。 这种技术主要是在我们在用户仍在网站上时提供推荐时实施的。

4. 过滤数据

分析数据后,最后一步是准确过滤数据以提供有价值的建议。 将不同的矩阵、数学规则和公式应用于数据以提供正确的建议。 你必须选择合适的算法,这个过滤的结果就是推荐。

推荐引擎的挑战

完美根本不存在。 一位英国理论物理学家“斯蒂芬霍金”曾经说过:

“宇宙的基本规则之一是没有什么是完美的。”

同样,公司必须克服一些挑战才能建立有效的推荐系统。 这里是其中的一些:

1. 冷启动问题

当新用户加入系统或将新项目添加到记录时,就会出现此问题。 推荐系统最初不能推荐这个新项目或用户,因为它没有任何评级或评论。 因此,引擎很难预测新用户的偏好或优先级,或者新项目的评分,从而导致推荐精度降低。

例如,Netflix 上的新电影只有在获得一些观看次数和评分后才能被推荐。

然而,基于深度学习的模型可以解决冷启动问题,因为这些模型并不严重依赖用户行为来进行预测。 它可以通过检查产品上下文和用户详细信息(如产品描述、图像和用户行为)来优化用户和项目之间的相关性。

2. 数据稀疏问题

众所周知,推荐引擎很大程度上依赖于数据。 在少数情况下,一些用户不会对他们购买的商品进行评分或评论。 如果我们没有高质量的数据,评分模型会变得非常稀疏,从而导致数据稀疏问题。

这个问题使得算法很难找到具有相似评分或兴趣的用户。

为确保获得最佳质量数据并能够充分利用推荐引擎,请问自己四个问题:

  • 数据有多新?
  • 信息有多嘈杂?
  • 信息的多样性如何?
  • 您可以多快将新数据提供给您的推荐系统模型?

上述问题将确保您的业务满足复杂的数据分析要求。

3. 改变用户偏好问题

评分和评论中的用户项目交互可以生成大量变化的数据。

例如,我今天可能在 Netflix 上和我的女朋友一起看一部浪漫电影。 不过明天可能心情不一样了,经典的心理惊悚片是我最想看的。

在用户偏好问题上,推荐引擎可能会错误地标记用户,这将低效地解释大型数据集上的结果。 因此,可扩展性是这些数据集的一大挑战,需要一些先进的大规模方法来解决这个问题。

如何在 Python 中构建推荐引擎?

本指南部分将帮助您在 Python 中构建基本的推荐系统。 我们将专注于通过推荐与特定项目(在我们的例子中是电影)最相似的项目来构建一个基本的推荐系统。 请记住,这不是一个精确、强大的推荐引擎。 它只是建议哪些电影/项目与您的电影偏好最相似。

您可以在本节末尾找到代码和数据文件。 那么让我们开始吧:

请注意: 强烈建议在 google collab 或 jupyter notebook 上运行此代码。

#1。 导入所需的库。

导入 numpy 和 pandas 机器学习库,因为我们将它们用于数据帧和评估相关性。

代码

将numpy导入为np 将熊猫作为pd导入

#2。 获取数据

定义列名,读取电影和评论数据集的 csv 文件并打印前 5 行。

代码

column_names = ['user_id', 'item_id', 'rating', 'timestamp'] df = pd.read_csv('u.data', sep='t', names=column_names) df.head()

输出

推荐引擎 2022

正如您在上面看到的,我们有四列:用户 ID,每个用户都是唯一的。 项目 ID 对于每部电影、电影的评分及其时间戳都是唯一的。

现在让我们获取电影标题:

代码

movie_titles = pd.read_csv("Movie_Id_Titles") 电影标题.head()

输出

输出 | 推荐引擎 2022

使用 pandas 的库读取数据并打印数据集中的前 5 行。 我们有每部电影的 ID 和标题。

我们现在可以加入这两列:

代码

df = pd.merge(df,movie_titles,on='item_id') df.head()

输出

代码 | 推荐引擎 2022

我们现在有了组合数据框,接下来我们将使用它进行探索性数据分析 (EDA)。

#3。 探索性数据分析

让我们稍微检查一下数据,看看一些收视率最高的电影。

可视化导入将是我们在 EDA 中的第一步。

代码

将matplotlib.pyplot导入为plt 将seaborn导入为sns sns.set_style('白色') %matplotlib 内联

接下来,我们将创建一个评分数据框,其中平均评分和评分数作为我们的两列:

代码

df.groupby('title')['rating'].mean().sort_values(ascending=False).head()

输出

探索性数据分析

代码

df.groupby('title')['rating'].count().sort_values(ascending=False).head()

输出

输出 3 | 推荐引擎 2022

代码

评分 = pd.DataFrame(df.groupby('title')['rating'].mean()) 评分.head()

输出

输出 4 | 推荐引擎 2022

接下来,在平均评分旁边设置评分列的数量:

代码

评分['评分数量'] = pd.DataFrame(df.groupby('title')['rating'].count()) 评分.head()

输出

推荐引擎 2022

绘制一些直方图以直观地检查多个评级:

代码

plt.figure(图大小=(10,4)) 评分['评分数'].hist(bins=70)

输出

推荐引擎 2022 | 输出

代码

plt.figure(图大小=(10,4)) 评级['评级'].hist(bins=70)

输出

输出 | 推荐引擎 2022

代码

sns.jointplot(x='rating',y='num of rating',data=ratings,alpha=0.5)

输出

推荐引擎 2022

好的! 现在我们对数据的外观有了一个全面的了解,让我们继续用 Python 构建一个简单的推荐系统:

#4。 推荐类似电影

现在让我们用用户 ID 和电影标题构建一个矩阵。 然后,每个单元格将包含用户对该电影的评分。

请注意: 会有很多 为NaN 值,因为大多数人没有看过大部分电影。

代码

moviemat = df.pivot_table(index='user_id',columns='title',values='rating') 电影垫头()

输出

推荐类似电影

打印评分最高的电影:

代码

ratings.sort_values('收视数',ascending=False).head(10)

输出

输出 | 推荐类似电影

让我们挑两部电影:星球大战,一部科幻电影。 另一个是Liar Liar,这是一部喜剧。 下一步是获取这两部电影的用户评分:

代码

starwars_user_ratings = moviemat['星球大战 (1977)'] liarliar_user_ratings = moviemat['骗子骗子 (1997)'] starwars_user_ ratings.head()

输出

推荐类似电影 | 输出

然后我们可以使用 corrwith() 方法来获取两个 pandas 系列之间的相关性:

代码

类似_to_starwars = moviemat.corrwith(starwars_user_ ratings) 类似_to_liarliar = moviemat.corrwith(liarliar_user_ ratings)

输出

输出 | 推荐类似电影

仍然有许多空值可以通过删除 NaN 值来清除。 所以我们使用 DataFrame 而不是系列:

代码

corr_starwars = pd.DataFrame(similar_to_starwars,columns=['Correlation']) corr_starwars.dropna(就地=真) corr_starwars.head()

输出

代码输出

现在,假设我们按相关性对数据帧进行排序。 在这种情况下,我们应该获得最具可比性的电影,但是请注意,我们会获得一些没有真正意义的电影。

这是因为有很多电影只被看过星球大战的用户看过一次。

代码

corr_starwars.sort_values('相关性',ascending=False).head(10)

输出

输出 | 推荐引擎 2022

我们可以通过过滤掉少于 100 条评论的电影来解决这个问题。 我们可以根据之前在 EDA 部分中绘制的直方图来确定这个值。

代码

corr_starwars = corr_starwars.join(ratings['收视数']) corr_starwars.head()

输出

输出 | 推荐引擎 2022

现在对值进行排序并见证标题如何使人们更加理解:

代码

corr_starwars[corr_starwars['收视率']>100].sort_values('相关性',ascending=False).head()

输出

代码输出 | 推荐引擎 2022

现在喜剧骗子骗子电影的收益相同:

代码

corr_liarliar = pd.DataFrame(similar_to_liarliar,columns=['Correlation']) corr_liarliar.dropna(就地=真) corr_liarliar = corr_liarliar.join(ratings['收视数']) corr_liarliar[corr_liarliar['评分数']>100].sort_values('相关性',ascending=False).head()

输出

推荐引擎 2022

干得好,您已经制作了自己的电影推荐引擎。

注意:在此处访问谷歌笔记本。

使用推荐引擎的应用程序和顶级公司

许多行业使用推荐引擎来促进用户交互并增强购物前景。 正如我们所见,推荐引擎可以改变企业与用户沟通的方式,并根据他们收集到的信息最大化他们的投资回报率 (ROI)。

我们将看到几乎每个企业如何使用推荐引擎来获得获利的机会。

1。 电子商务

电子商务是推荐引擎首先被广泛使用的行业。 电子商务企业最适合为数百万客户及其在线数据库中的数据提供准确的建议。

2。 零售

购物数据是机器学习算法最有价值的信息。 它是关于用户意图的最精确的数据点。 拥有大量购物数据的零售商处于为客户提供具体建议的企业的最前沿。

3。 媒体

与电子商务一样,媒体公司最先采用推荐引擎技术。 如果没有推荐引擎,很难注意到新闻网站。

4。 银行业

银行业是一个大众市场行业,被数百万人以数字方式使用,是推荐的首选。 了解客户的确切财务状况和过去的选择,并与数千个可比用户的数据相关联,非常具有决定性意义。

5。 电信

该行业与银行业有着相似的动态。 电信公司拥有数百万客户的凭据,他们的每一个动作都被记录在案。 与其他行业相比,他们的产品范围也比较窄,这使得电信领域的建议成为更易于管理的解决方案。

6。 公用事业

与电信类似的动态,但公用事业的产品范围更加有限,使得推荐相对容易使用。

使用推荐引擎的顶级公司包括

  • Amazon                    
  • Netflix公司
  • Spotify
  • LinkedIn
  • YouTube
  • TikTok    
  • Instagram
  • Facebook
  • 火种
  • Quora的
  • 谷歌
  • 雅虎        

最后的思考

推荐引擎是一种强大的营销工具,可以帮助您更好地进行追加销售、交叉销售和促进业务发展。 推荐引擎领域正在发生许多事情。 每家公司都必须与技术保持同步,以便为所有用户提供最满意的建议集。

到这里我们就到了本指南的结尾。 我希望所有的主题和解释都足以帮助你开始你的机器学习推荐引擎之旅。

在我们的博客上阅读更多关于 推荐引擎

如果您仍有任何疑问,请通过我的社交媒体资料与我联系,我很乐意为您提供帮助。 你可以在下面阅读更多关于我的信息:

我是一名数据科学家,拥有计算机科学学士学位,专攻机器学习、人工智能和计算机视觉。 Mrinal 还是一位自由博主、作家和极客,拥有五年的工作经验。 我拥有计算机科学大部分领域的背景,目前正在温莎大学攻读应用计算硕士学位,专业是人工智能,我是一名自由内容作家和内容分析师。

阅读有关 Mrinal Walia 的推荐引擎的更多信息:

1. 拥有资源的前 5 个开源机器学习推荐系统项目

2. 计算机科学专业学生必须尝试的开源深度学习项目

本文中显示的媒体不属于 Analytics Vidhya 所有,其使用由作者自行决定。 

资料来源:https://www.analyticsvidhya.com/blog/2022/01/a-comprehensive-guide-on-recommendation-engines-in-2022/

时间戳记:

更多来自 分析维迪亚