使用 Python 构建混合推荐系统2024年8月29日 | 阅读 10 分钟 通过组合两个或多个不同的推荐系统,混合推荐系统提供了一种全面而周全的方法。它通过利用各种方法的优势并提供有益的用户体验,力求为客户提供更精确、更多样化和更个性化的建议。如果您想学习如何创建混合推荐系统,本教程将是您的不二之选。在本教程中,我将指导您使用 Python 创建一个混合推荐系统。 什么是混合推荐系统?为了向客户提供更准确、更多样化的推荐,混合推荐系统整合了不同的推荐算法。它通过利用多种技术的优势(如协同过滤和基于内容的过滤)来改进推荐过程,以克服它们的缺点。 您应该熟悉协同过滤和基于内容的过滤这两个术语。为了生成推荐,协同过滤会检查用户-项目交互,并找到用户或项目之间的共性。它推荐与具有相似偏好的消费者或用户喜欢或使用的产品。然而,对于互动数据很少的专业或新产品,它可能会遇到困难。 相反,基于内容的过滤侧重于项目的特征和属性,根据用户的偏好向消费者推荐相似的项目。它寻找诸如品牌名称、产品描述、类别名称和用户配置文件等特征。 然而,它可能无法充分捕捉用户的多样化偏好,并产生不太多样化的推荐。 在这种情况下,混合推荐系统就派上用场了。通过将协同过滤和基于内容的过滤集成到混合方法中,我们可以克服它们的缺点。虽然基于内容的过滤部分考虑了每个项目的独特特征和属性,但基于用户群体的过滤部分利用了公众的集体知识。当用户-项目交互不常见或需要个性化建议时,这种组合使系统能够提供更准确的推荐。 到目前为止,您已经了解了什么是混合推荐系统。在下一部分中,我将指导您使用 Python 创建混合推荐系统。 数据探索与分析我们可以用于此任务的数据集如下。 混合推荐的数据集概述 电子商务系统必须识别个人品味并提供个性化建议,以提高时尚行业的消费者满意度和销售额。通过使用混合推荐系统,我们可以为客户提供更具体、更量身定制的推荐。 该数据集包含一家在线服装店的用户-产品交互信息。数据集具有以下特征
您的目标是开发一个混合推荐系统,结合协同过滤和基于内容的方法。通过协同过滤可以找到彼此相似的人,然后可以利用这些信息推荐不同相似用户喜欢的产品。相反,您可以通过检查项目标题、品牌和类别等详细信息来利用基于内容的方法来比较不同产品的优点。 主表(仅供参考)
Python:混合推荐系统让我们通过加载数据集和所需的 Python 库来开始创建混合推荐系统的过程 源代码片段 输出 User ID Item ID Product Name Brand Category Price Rating \ 0 19 1 Dress Adidas Men Fashion 40 1.043159 1 97 2 Shoes H&M Women Fashion 82 4.026416 2 25 3 Dress Adidas Women Fashion 44 3.337938 3 57 4 Shoes Zara Men Fashion 23 1.049523 4 79 5 T-shirt Adidas Men Fashion 79 4.302773 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - Color Size 0 Red XLL 1 Red L 2 Yellow XLL 3 Black S 4 Red M 解释:因此,统计数据基于女装、男装和童装。我们的目标是设计两个推荐系统,分别采用协同过滤和基于内容的过滤,然后合并这两个系统以生成混合推荐系统。 让我们开始导入我们将在任务其余步骤中需要的 Python 库 源代码片段 解释:我们在上面的代码中导入了 Surprise 库,您可能需要进一步熟悉它。为了使用 SVD 算法,加载了 surprise 库。SVD 代表奇异值分解。它是一种矩阵分解方法,通常用于协同过滤算法。您可以通过以下命令在计算机上安装它
第一种方法:基于内容的过滤让我们继续开发一个利用基于内容过滤的推荐系统 源代码片段 解释:混合推荐系统中的基于内容过滤部分已在上面的代码中实现。我们首先从数据集中选择了项目 ID、名称、公司、类别、颜色、尺寸和其他相关属性。然后,对于每个产品,我们将所有这些属性聚合到一个名为“Content”的列中。 然后使用词频-逆文档频率 (TF'S-IDF1) 向量化器将材料转换为 TF'S-IDF1 特征矩阵。此矩阵显示了每个单词在与整个语料库相比时的内容重要性。 然后使用余弦相似度度量来确定基于其内容的项目之间的相似度。基于其内容,此相似度矩阵中的产品彼此相似。 我们首先在相似度矩阵中找到所需产品的索引,以获得基于内容的推荐。然后,在按降序对相似度分数进行排序后,我们选择了 N 个最相似的产品。最后,我们返回了推荐的项目 ID。 第二种方法:协同过滤现在,让我们使用协同过滤创建一个推荐系统。 源代码片段 解释:我们在上面的代码中使用了奇异值分解方法来创建混合推荐系统的协同过滤部分。 首先使用数据集初始化并训练了 SVD 方法。此阶段包括分解用户-项目评分矩阵,以识别影响用户偏好的更深层次的趋势和潜在因素。 下一步是开发一个需要包含在训练集中的用户-项目对的测试集,以提供协同过滤推荐。此测试集已过滤,仅包含属于由 user__id 标识的目标用户的项目。 然后使用训练好的 SVD 模型对测试集对象的评分进行了预测。这些预测是对用户会给产品打多少分的估计。 然后按预测评分的降序排列预测。我们选择评分最高的 N 个产品作为用户的协同过滤推荐。 最后,混合方法 现在,让我们采用混合方法来合并基于内容和协同过滤技术,以创建一个推荐系统 源代码片段 解释:我们在上面的代码中通过合并基于内容和协同过滤的方法来构建混合推荐系统。 用户 ID、项目 ID 以及所需的 top n 推荐数量是 get__hybrid__recommendations 方法的输入。 它首先使用 get__content__based__recommendations 方法获取给定 product__id 的基于内容的推荐列表。这些推荐基于给定产品特征与其他数据集项目特征的相似程度。 然后,它使用 get__group__filtering__recommendations 方法获取给定 user__id 的协同过滤推荐列表。这些推荐是通过借鉴过去的用户-项目交互并根据先前的用户行为推断用户偏好而得出的。 然后通过将两个列表合并在一起来组合来自协同过滤和基于内容过滤的推荐。它确保混合推荐包含基于内容和基于用户偏好的协同过滤推荐。 要根据用户当前正在浏览的项目提供产品推荐,请执行以下步骤 源代码片段 输出 Hybrid Recommendations for User 6 based on Product 11: 1- - - > Item ID: 9281 1. - - - > Item ID: 9218 2. - - - >Item ID: 1311 2- - - >. Item ID: 1311 3. - - - >Item ID: 4511 3. - - - > Item ID: 4511 4. - - - > Item ID: 8371 4. - - - >Item ID: 8371 5. - - - >Item ID: 8751 5. - - - > Item ID: 8751 6. - - - >Item ID: 5941 6. - - - > Item ID: 5941 7. - - - >Item ID: 14631 7. - - - > Item ID: 14631 8. - - - >Item ID: 16881 8. - - - >Item ID: 16881 9. - - - >Item ID: 6011 9. - - - >Item ID: 6011 10. - - - >Item ID: 15616 10. - - - >Item ID: 15661 总结因此,这就是如何使用 Python 构建混合推荐系统。为了向客户提供更准确、更多样化的推荐,混合推荐系统整合了不同的推荐算法。它通过利用多种技术的优势(如协同过滤和基于内容的过滤)来改进推荐过程,以克服它们的缺点。希望您喜欢这篇关于使用 Python 构建混合推荐系统的教程。 下一主题最小交换次数排序 |
一种称为“Trie”的基于树的信息结构被描述为用于存储字符串集合并对其进行快速搜索。名称“Trie”来源于动词“Recovery”,表示查找或获取某物的行为。两个字符串将具有相同的...
阅读 19 分钟
在本教程中,我们将学习 Python 中用于命令行的目录树生成器工具。Python 开发人员应该具备使用命令行界面 (CLI) 创建用户友好应用程序的技能。这项技能有助于创建自动化和加速的工具...
14 分钟阅读
在本教程中,我们将学习如何使用 Numpy 库创建向量。我们还将探索向量的基本操作,例如执行两个向量的加法、两个向量的减法、两个向量的除法、两个向量的乘法、向量点积和...
5 分钟阅读
通常,物联网 (IoT) 系统的原型或实际系统必须快速有效地设计和开发。每当这种情况发生时,就会立即出现两项活动:一项是编程 IoT 设备,另一项是组织一个后端来与这些设备交互。在...
阅读9分钟
在每种编程语言中,确定给定字符串是否包含子字符串是最常见的操作之一。Python 有多种方法可以确定给定字符串是否包含某个字符。“in”运算符是 Python 中用于比较操作的工具,它...
阅读 3 分钟
线性回归是一种统计技术,用于描述因变量与多个自变量之间的关系。本教程将讨论线性回归的基本概念及其在 Python 中的应用。为了理解该概念的基础知识...
7 分钟阅读
什么是?Python 图形编程是指使用 Python 编程语言为不同的应用程序创建图形用户界面 (GUI)。这可以包括桌面应用程序、Web 应用程序和移动应用程序。Python 提供了各种用于创建图形界面的库和框架,例如 Tkinter、PyQt、wxPython、PyGTK、...
5 分钟阅读
总的来说,移动自动化被认为是非常困难的,需要高技能。我们相信测试人员必须具备多样化的技能。您不必精通所有这些技能,但考虑到各种...
5 分钟阅读
简介 双轴快速排序是一种复杂的排序算法,它改进了原始的快速排序技术。这种方法背后的主要思想是通过使用两个轴心项而不是一个来有效地分割输入数组。对于各种输入数据集,双轴方法极大地增强了...
阅读 4 分钟
当我们需要找出股票在特定时间段内的趋势时,移动平均线是重要的指标。移动平均线严格分析时间序列;因此,它们有助于经济学家、交易员和分析师了解市场趋势,识别...
阅读9分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India