石豐源 程鋼



摘要:隨著互聯網技術的飛速發展,大數據時代已經來臨。在該背景下,如何有效地利用海量數據為讀者提供個性化的書籍推薦成為一個亟待解決的問題。文章將介紹一個基于大數據的書籍推薦分析系統的設計與實現。該系統通過采用大數據技術和數據可視化技術,采集書籍數據并對書籍數據進行可視化展示,同時收集、存儲和處理讀者的搜索行為數據、閱讀歷史等,運用ALS(Alternating Least Squares) 協同過濾算法實現書籍推薦,從而為用戶推薦感興趣的書籍。該系統不僅提高了用戶的閱讀滿足感,也為用戶提供了更加精準、個性化的閱讀推薦服務。
關鍵詞:書籍推薦;書籍可視化;ALS
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2024)14-0066-04 開放科學(資源服務)標識碼(OSID) :
0 引言
隨著互聯網技術和大數據技術的迅猛發展,數字化時代已來臨,人們的生活方式發生了巨大的變化。其中,閱讀方式的改變尤為顯著。越來越多的人選擇利用移動設備,通過電子書平臺閱讀各種類型的書籍,這為人們提供了便利,但同時也帶來了另一個問題:書籍的種類繁多,讀者往往難以從海量書籍中找到自己感興趣的書籍。這便形成了信息過載的問題。為了解決這個問題,需要開發一種能夠根據讀者的閱讀歷史和書籍特征來為讀者提供個性化推薦的系統。同時,也能根據圖書的基本數據信息進行可視化展示,便于讀者在海量書籍數據中篩選書籍,過濾不感興趣的書籍。
1 研究現狀
1.1 個性化推薦算法
推薦系統是一種信息過濾系統,旨在通過對用戶的行為進行分析,從而預測用戶對某個項目(如商品、電影、文章等)的可能喜好程度,并向用戶推薦他們可能感興趣的項目,從而為用戶的選擇、決策提供參考依據。推薦系統最初主要用于電子商務領域,用于向消費者精準推送用戶感興趣的商品,從而刺激消費者的購買欲。隨著推薦系統的發展,它們被廣泛應用于各個領域,并出現了一系列支持此類推薦系統的算法。最常用的算法包括基于內容的過濾、協同過濾及混合推薦等算法。
Cai等人[1]提出一種基于知識挖掘的多目標優化推薦算法,該算法可以利用知識挖掘技術來提取用戶和物品的知識,并將其用于多目標優化。Gutowski等人[2]介紹了一種新的算法組合Gorthaur-EXP3,旨在通過選擇最佳算法來最大限度地提高全局準確性和多樣性,從而平衡推薦算法中的準確性-多樣性困境。Zeeshan 等人[3]提出了一種基于特征的多準則推薦系統,該系統結合了基于內容和協作過濾的方法來提供基于多準則的推薦。Dat等人[4]通過提出一種基于高斯混合模型的新推薦算法來提高概率推薦問題的準確性,從而解決了基于內容的推薦系統中的分布問題。趙等人[5]提出了一種統一、全面和高效的推薦算法框架RecBole。RecBole提供了一個統一的接口來開發和評估推薦算法,并支持多種流行的推薦算法,涵蓋28個基準數據集和73個推薦模型的推薦系統庫。
1.2 可視化技術
可視化技術是指將數據或信息轉換為圖形、圖像或動畫等可視形式的技術,以便人們可以更容易地理解和分析數據。可視化技術可以應用于許多領域,例如科學、工程、商業和教育。
可視化在圖書推薦中的應用是近年來備受關注的一個話題。數據可視化已經應用于各個領域,包括書評和數據分析。在書評的背景下,可視化可以幫助讀者理解復雜的數據集,并就閱讀哪本書做出明智的決定[6]。有效的數據可視化技術,如策略性的顏色使用和斜率圖,可以簡化信息并提高理解。除了傳統的書評,可視化技術也被用于其他領域,如音樂教育。例如,Denis Chang 的《爵士吉他Fretboard Visualiza?tion》一書使用視覺輔助工具來幫助吉他手理解音樂理論并提高他們的演奏技巧[7]。此外,可視化在數據分析和通信中的應用一直是數據科學領域的一個熱門話題。《大局:如何使用數據可視化做出更好的決策》等書強調了使用視覺輔助工具解釋數據和做出明智決策的重要性[8]。關于在可視化中使用以人為本的語言和深思熟慮的數據標簽的建議強調了數據通信中倫理考慮的重要性[9]。總的來說,在圖書推薦和其他領域使用可視化技術在提高理解、溝通和決策方面顯示出了希望。
2 系統詳細設計
2.1 系統架構設計
書籍推薦分析系統采用大數據技術和數據可視化技術來實現,整體架構設計如圖1所示,主要包含數據采集、數據存儲、數據處理和分析以及數據應用四個層次。系統采用Flask框架、ECharts可視化工具、Python 語言、jQuery、Bootstrap、JavaScript 等技術來完成書籍數據的可視化功能,使用Spark、機器學習來完成書籍推薦功能的實現,并且使用MySQL完成系統中數據的存儲和管理。
2.2 系統功能模塊設計
通過結合用戶需求分析以及系統功能特點,系統主要由書籍數據自動爬取、書籍數據分析與可視化、書籍推薦等功能模塊構成。
2.2.1 書籍數據自動獲取與處理
在書籍推薦分析系統中,爬蟲技術扮演著至關重要的角色,它是數據采集的核心環節。通過高效的爬蟲技術,能夠從豆瓣圖書獲取豐富的書籍信息,從而為用戶提供更全面、準確的推薦服務。在書籍推薦分析系統中,主要從豆瓣圖書的新書速遞、熱門一周榜、Top250等頁面獲取書籍數據。使用Python的Request 請求庫和XPath語法來解析豆瓣圖書的網頁,并通過XPath語法獲取圖書的相關信息。在獲取到書籍數據后,由于數據可能存在不規范的情況,需要對數據進行空值填補和重復值刪除等處理。此外,利用Ajax傳參和后端Flask接收參數的技術,實現了自動爬取和一鍵清洗數據的功能。
2.2.2 書籍數據分析與可視化
在系統中,利用Python的Pandas庫以及其他相關庫對書籍的各個字段進行深入分析,從而得出可供書籍可視化的數據。在前端頁面展示部分,采用JavaS?cript和Bootstrap等技術來構建用戶界面,同時在前端頁面中嵌入ECharts,并進行了相關配置。在后端處理過程中,使用Flask模板將渲染結果傳遞到前端頁面,并通過Jinja2將查詢到的數據傳遞到前端頁面,從而實現數據可視化。此外,利用Flask的相關函數實現系統的登錄和注冊功能。這樣,用戶可以通過注冊自己的賬戶來訪問和使用圖書推薦系統。
2.2.3 書籍推薦功能
推薦功能采用ALS(Alternating Least Squares) 作為協同過濾算法,分別根據MySQL中的用戶評分表和圖書數據集計算用戶圖書推薦矩陣以及圖書相似度矩陣。
1) 用戶圖書推薦矩陣。利用LFM(Latent FactorModel) 模型的訓練結果,生成一個推薦矩陣。該矩陣包含當前用戶對所有圖書的預測評分。首先,通過將用戶ID和圖書ID進行笛卡爾積,得到所有可能的用戶-圖書組合(uid,bid) 的元組。接下來,利用已經訓練好的ALS模型,對這些組合進行預測,得到相應的預測分值。通過對預測分值進行排序,獲得一個有序的圖書列表。最終,選擇分值最高的前12個圖書,將它們作為當前用戶的推薦。LFM原理矩陣圖如圖2所示。
2) 圖書相似度矩陣。通過應用ALS算法,從用戶對圖書的評分數據中學習圖書的潛在特征,計算圖書相似度矩陣。在相似度計算階段,該系統采用余弦相似度作為度量標準,具體計算如公式(1) 所示。篩選并保留相似度較高的圖書對,最終從相似圖書中選取分值最高的前8個,作為當前圖書的推薦結果。這種推薦方式不僅考慮了圖書之間的相似性,也提供了更加個性化的用戶體驗。
3) 模型優化與調優。通過將原始數據集劃分為訓練集和測試集(比例為0.8∶0.2) ,使用Spark MLlib 庫中的ALS對訓練集進行訓練,并對rank、iterations和lambda參數進行調優。其中,rank為模型隱語義因子的個數,iterations為迭代的次數,lambda是ALS的正則化參數。最終根據均方根誤差RMSE(Root MeanSquare Error) 進行評估,選取最優參數。均方根誤差計算公式如公式(2) 所示。
2.3 數據庫設計
在書籍推薦分析系統中,數據存儲是一個至關重要的環節。它不僅關乎數據的安全性,還直接影響到查詢性能和系統的可擴展性。為了滿足這些需求,本系統選擇了MySQL作為數據存儲載體。MySQL是一個廣泛使用的關系型數據庫,它提供了強大的數據存儲、查詢和導出功能。系統通過Python的PyMySQL庫連接到MySQL數據庫,并根據爬蟲獲取的圖書數據來設計數據庫及數據表,如圖3所示。在數據表和字段的設計過程中,充分考慮了數據的結構和查詢需求,從而確保數據的組織和查詢效率。
3 系統主要功能模塊實現
3.1 首頁頁面
首頁可以看到系統的總體概況,展示了書籍的各種類型以及數量最多的書籍類型。同時,還特別展示了評分最高的書籍,這些都是讀者們極力推薦的好書。此外,評論最多的書籍也在這里列出。在頁面的下方,有兩個圖表。第一個圖表清晰地展示了各種類型圖書在圖書推薦系統中的占比,可以一目了然地看出哪種類型的圖書最豐富。第二個圖表則展示了圖書的評分分布,可以從中了解系統中的圖書質量情況。首頁界面如圖4所示。
3.2 數據爬取頁面
在數據爬取頁面,有“爬取”和“清洗”兩個功能,如圖5所示。首先,在頁面中間的輸入框中,輸入想要獲取圖書信息的網址;然后,點擊“爬取”按鈕,系統就會從網站上爬取最新的圖書數據。數據爬取完成后,刷新頁面,就可以在下方的展示列表中看到新獲取的圖書數據,這些數據會以表格的形式呈現出來。此外,由于新書剛剛上架,可能會有一些信息尚未完全填寫,因此會出現空值。可以通過點擊“清洗”按鈕,系統會自動清理這些空值。再次刷新頁面,就可以看到清洗后的圖書數據。
3.3 圖書地區和類型分析頁面
這里是了解全球圖書分布和類型的頁面。在這個頁面呈現了圖書數量排行前五的國家的各類型圖書的占比,可以一目了然地了解各個國家的圖書類型分布情況。在頁面的右上方,設置了一個搜索框,可以在這里輸入感興趣的國家。點擊查詢按鈕后,圖書推薦系統會立即將圖書數據按照輸入的國家進行分類,并以直觀的方式呈現出來,如圖6所示。
3.4 搜索推薦頁面
在搜索推薦頁面能夠發現新書和探索相關書籍。在搜索框中輸入感興趣的圖書名稱,然后點擊搜索按鈕,系統會立即找到相關的圖書,并在下方展示出這些圖書的詳細信息。除此之外,還呈現了一個獨特的評分功能。在每本圖書的信息下方,可以看到一個評分區域,用戶可以在這里為圖書打分。這個評分將會被系統記錄,并作為“猜你喜歡”推薦算法的重要依據。在頁面的最下方,提供了一系列的圖書推薦。這些推薦是根據搜索的圖書的特征,通過ALS算法精心挑選出來的,頁面如圖7、圖8所示。
3.5 猜你喜歡頁面
猜你喜歡頁面是一個個性化推薦頁面,它根據用戶對書籍的評分為用戶推薦關聯性較大的書籍。頁面如圖9所示。
3.6 數據展示頁面
在數據展示頁面能夠查看數據庫中存儲的圖書數據,以清晰、直觀的列表形式展示了圖書數據。在頁面的左邊,可以自由設置頁面顯示的圖書數據數量。此外,在每個圖書信息的頂部提供了一個排序功能。只需點擊相應的圖標,就可以按照選擇的項目對圖書進行排序,從而更方便地找到需要的信息。頁面如圖10所示。
3.7 可視化大屏頁面
通過點擊登錄頁面上的可視化大屏展示連接,可以跳轉到圖書可視化頁面。這個頁面以滾動列表的形式展示了圖書的詳細數據。頁面的中心是一個旋轉的地球模型,生動地展示了系統中各個國家的圖書數量。同時,頁面下方列出了圖書數量排名前十的國家。頁面的左下角展示了各類別圖書占比數據,能清楚地看到小說和歷史文化兩種類型占比較大。頁面如圖11所示。
4 總結
基于大數據的書籍推薦分析系統采用大數據技術、數據可視化和人工智能技術相結合,采集、處理、分析和展示豆瓣圖書信息,通過多維度角度來分析當前市面上的新書、暢銷書等,并采用ALS協同過濾算法實現書籍推薦,幫助讀者推薦感興趣的書籍,輔助讀者選擇自己喜歡的書籍。該系統實現了書籍數據自動采集、一鍵數據清洗、數據分析和處理、書籍推薦、數據多元化大屏展示等功能。通過深度分析讀者的閱讀行為,系統能夠為每位讀者實現量身定制的推薦,使其能夠更好地融入個性化的閱讀世界中。這不僅提高了用戶的閱讀滿足感,也為用戶提供了更加精準、個性化的閱讀推薦服務。
參考文獻:
[1] CAI X J,HU Z M,CHEN J J.A many-objective optimization rec?ommendation algorithm based on knowledge mining[J].Informa?tion Sciences,2020(537):148-161.
[2] GUTOWSKI N,AMGHAR T,CAMP O,et al.Gorthaur-EXP3:bandit-based selection from a portfolio of recommendation al?gorithms balancing the accuracy-diversity dilemma[J].Informa?tion Sciences,2021(546):378-396.
[3] ZEESHAN Z, UL AIN Q, BHATTI U A, et al. Feature-based multi-criteria recommendation system using a weighted ap?proach with ranking correlation[J]. Intelligent Data Analysis,2021,25(4):1013-1029.
[4] VAN DAT N,VAN TOAN P,THANH T M.Solving distribution problems in content-based recommendation system with Gauss?ian mixture model[J]. Applied Intelligence, 2022, 52(2): 1602-1614.
[5] ZHAO W X,MU S L, HOU Y P,et al.RecBole:Towards A Uni?fied, Comprehensive and Efficient Framework for Recommen?dation Algorithms[C].CIKM,2021.
[6] EVERGREEN S.Data Visualization Book Reviews[M].London:Routledge,2023.
[7] CHANG D.Jazz Guitar Fretboard Visualization[M].Chicago:Hal Leonard,2017.
[8] WEXLER S.The Big Picture: How to Use Data Visualization to Make Better Decisions―Faster[M].O'Reilly Media,2021.
[9] URBAN INSTITUTE. Do No Harm Guide: Applying Equity Awareness in Data Visualization[EB/OL].[2024-01-05].https://www. urban. org/research/publication/do-no-harm-guideapplying-equity-awareness-data-visualization.
【通聯編輯:謝媛媛】
基金項目:南通市基礎科學研究和社會民生科技計劃項目(2022)( 項目編號:JCZ2022083)