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編寫的,可能需要修改以確保對其他操作系統的正確執行。
該項目的存在得益於為此做出貢獻的非凡人物。