This repository builds upon the work of Exploratory Data Analysis (EDA) on Amazon Review Data (2018) Using MongoDB & PySpark and includes a web application that is connected to a product recommendation system developed with the comprehensive Amazon Review Data (2018) dataset, consisting of nearly 233.1 million records and occupying approximately 128 gigabytes (GB) of data storage, using MongoDB, PySpark, and Apache Kafka,作为大数据分析基础(DS2004)课程的最终项目的一部分。
产品推荐系统是使用数据分析和机器学习技术的软件类型,根据客户的兴趣,过去购买和浏览历史记录向客户推荐产品。这些系统可以在电子商务网站(例如Amazon.com)上找到,旨在实时向用户提供个性化建议。建议系统通过分析大量数据(例如用户行为,产品属性和交易历史记录)来起作用。基于此数据,系统生成与用户兴趣和偏好相关的建议。例如,如果用户以前已经购买了有关特定主题的书,则建议系统可能会建议其他有关同一主题或相关主题的书籍。
亚马逊评论数据(2018)数据集可用于培训产品推荐系统,该系统根据用户的购买历史记录向用户提供个性化的产品建议,以及在平台上审查和评级产品的其他用户的满意度。但是,由于数据集很广泛,因此要仔细分析和选择将有效地有助于产品推荐系统的相关功能至关重要,以避免过度拟合和不适合机器学习模型。
与我们在Amazon Review数据(2018)数据集Amazon评论数据(2018)Analysis.ipynb,1-38中进行探索性数据分析(EDA)的方法类似,我们采用了推论统计方法来培训产品建议模型。使用样本来推断整个人群的理由是最大程度地减少与处理完整数据集相关的计算负担,这对于一台机器通常是不切实际的。虽然深度学习通常需要大量数据,但即使使用小型数据集,也可以有效地使用机器学习来开发健壮的培训方法。这对于假设驱动的研究特别有用,这是我们的产品推荐系统的主要目标。 (Vabalas等,2019)无论如何,重要的是要注意,任何数据集本质上都是较大人群的子集。
为了确保我们的结果的准确性,仔细分析和减轻数据中的潜在偏见至关重要。这在机器学习中尤其重要,这对可能导致偏差性能估计的偏见敏感。为了解决这个问题,我们将采用我们之前讨论的分层随机抽样方法,以从人群中提取10,000,000个记录的代表性样本,同时保持与原始数据集相同的产品分布。 (Compress.py,1-61)由于样本量很大,因此我们将其压缩到Apache Parquet文件格式中,该格式将数据集的大小降低了90%以上。
交替的最小二乘(ALS)是用于开发产品推荐系统的协作过滤算法。该算法旨在通过将用户项目评级矩阵分解为两个低级矩阵,以学习影响用户和项目潜在因素的潜在或隐藏因素。
交替的最小二乘(ALS)在迭代上工作,在固定一组潜在因素和使用最小二乘优化算法求解另一组。特别是,在每次迭代中,该算法使用最小二乘优化的用户潜在因素解决了项目潜在因素,然后使用最小二乘优化来解决用户潜在因素并解决该项目潜在因素。
交替的最小二乘(ALS)对于产品推荐系统具有几个优点。它是可扩展的且在计算上有效的,尤其是对于大型和稀疏的数据集。它可以处理隐式反馈数据,其中仅存在或不存在的用户项目交互,而不是其特定评分。它还可以处理丢失的数据,并非所有用户都对所有项目进行了评分。此外,交替的最小二乘(ALS)可以实时提供项目建议,使其适合在线推荐系统。
Product Recommendation Model.ipynb - 包含Amazon评论数据(2018)数据集中训练有素和测试的产品推荐系统的实现(MLLIB)。srcdata.py - 用于将数据集从JavaScript对象符号(JSON)文件存储到MongoDB数据库中的源代码作为集合。srccompress.py - 用于从存储在mongodb数据库中的数据集中提取指定样本大小的分层随机示例的源代码作为集合,并将其存储为Apache Parquet文件。srcvalidate.py - 源代码,以使用实践示例来验证受过训练的产品推荐系统的准确性和功能。modelproduct_recommendation_model - 包含产品推荐系统的训练机器学习模型的目录。appapplication.py - 通过Apache Kafka群集与产品推荐系统关联的Web应用程序(烧瓶)的来源。apprecommendation.py apache kafka群集的源代码连接到训练有素的机器学习模型,用于产品推荐系统,使产品推荐生成。templates - 包含网页( login.html , dashboard.html , review.html , loading.html和recommendation.html )的源代码。static - 包含Web应用程序(烧瓶)使用的所有图标和视觉元素。.hintrc - 通过指定特定的设置和规则来自定义ESLINT行为的配置文件。 All_Amazon_Review.json.gz文件。srcdata.py将数据集从JavaScript对象符号(JSON)文件中保存到MongoDB数据库中作为集合(确保已经设置并运行了MongoDB)。srccompress.py从存储在mongodb中的数据集中提取指定大小的分层随机样本,并将样本保存为apache parquet文件。Product Recommendation Model.ipynb文件(1-16)以转换集合并将其存储在MongoDB中以永久访问(您不必执行整个文件)。apprecommendation.py (请确保Apache Kafka群集已成功建立并且正在运行,并具有两个主题,并将其命名为“凭据和建议” )。appapplication.py并打开指向主机端口的链接。/dashboard页面上,单击“评论”按钮并提交任何内容。/loading页面上将有五分钟的等待。/recommendation页面,以查看生成的产品建议。 源代码文件是专门为Macos Ventura编写的,可能需要修改以确保对其他操作系统的正确执行。
该项目的存在得益于为此做出贡献的非凡人物。