微信公眾號:創享日記
發送:電影論壇
獲取完整論文報告+項目源碼源文件+配置說明
一、需求分析
隨著電影市場的迅速發展,每天都有大量電影上映.人們都希望可以高效的在海量電
影庫中找到自己可能會喜歡的電影,以節省尋找電影的時間[22].電影推薦系統能給用戶帶來便利。本文要實現的是一個面向用戶的個性化電影推薦系統,根據movielens 數據集裡面大量用戶對電影的評分數據,通過計算用戶相似性、電影相似性,實現為用戶推薦符合其興趣的電影. 本文實現的個性化電影推薦系統有以下幾點基本需求:
(1)數據集:每個用戶所評電影數量要多,盡量廣泛涉及大量電影
(2)推薦算法:推薦效果要良好
(3)包括用戶注冊登錄在內的整個 web 系統
(4)系統要易於擴展和維護
二、用戶功能需求
如圖 4-6 是系統中用戶的用例圖,有 5 個用例,分別是注冊、登錄、注銷、評分、查看推薦結果。
三、系統設計
1、系統總體架構
本文從互聯網上下載 movielens 數據集,經過數據重組和篩選,基於兩種推薦算法得出推薦結果保存至 MySQL 數據庫中,並通過 Django 框架進行前端展示.本系統采用 B/S(浏覽器/服務器)體系結構,用戶通過浏覽器就能和網站上的內容交互。
實現本系統主要需要以下幾種編程語言:
(1)Python:進行後台開發,寫推薦算法,和 MySQL 數據庫交互,將用戶的數據存儲到數據庫中,又將生成的推薦列表展示到前端頁面。
(2)Html5:進行前端頁面的開發。
(3)Css3:美化前端頁面,特別是對電影分類板塊做處理。
(4)Jquery:實現提交表單和首頁中的星星評分效果。
系統的總體架構設計圖如圖 4-7 所示。
一個良好的推薦系統,必須要有一個良好的用戶交互界面和用戶行為數據,其之間的關系如圖 4-8 所示。
2、系統功能模塊簡述
本系統以改進後的用戶協同過濾和物品協同過濾算法為依據,采用 django 重量級 Web框架設計並實現.包括了數據集處理模塊、注冊登錄模塊、電影分類模塊、用戶評分反饋模塊、推薦算法模塊和推薦電影展示模塊。
① 數據集處理模塊
本文設計的推薦系統的源數據集來源於 movielens 的 ml-latestl-small,其中包含 671 個用戶的 10 萬條評分數據.對數據集裡面的 ratings.csv 和 links.csv 文件進行連接處理,只保留 userId、imdbId、rating 三個字段存入數據庫中新建好的數據表 users_resulttable 中。
② 注冊登錄模塊
用戶只有先注冊並且登錄系統之後才能提交對電影的評分.注冊界面含用戶名、電子郵箱地址以及密碼.注冊和登錄界面如圖 4-9 所示。
③ 電影分類模塊
系統首頁一共有 8 種類型的電影,如 4-10 所示. 從左到右依次是動作片、恐怖片、喜劇片、動畫片、科幻片、犯罪片、愛情片以及劇情片。
④ 用戶評分反饋模塊
系統利用了 jquery-raty 評分插件,收集用戶對每一部電影的評分.用戶通過點擊‘提交評分’按鈕將評分數據提交到 MySQL 中的 users_resulttable 表中,插入到源數據集末尾。
⑤ 用戶評分記錄模塊
用戶登錄系統後點擊自己的昵稱,將跳轉頁面顯示自己曾經評價過的電影列表.如圖4-15 所示。
⑥ 推薦算法模塊
本模塊是整個系統的核心組成部分,當用戶登錄進入系統並對電影進行評分之後,系統就記錄下了該用戶的 id 號,當用戶再次登入系統時,系統會將源數據集和該用戶之前的評分數據整合成新的數據表作為推薦的依據. 整個推薦過程流程圖如圖 4-16 所示。
算法生成推薦電影的 imdbId 號之後存入 matrix 全局變量列表中,並在 moviegenre 數據表中查詢到相關的電影名稱以及電影海報的鏈接,將 userId、title、poster 數據插入到users_insertposter 數據表中,此表即為所有登錄用戶的電影推薦列表集。
⑦ 顯示推薦模塊
根據登錄用戶對電影的評分反饋,通過基於用戶的協同過濾和基於物品的協同過濾算法給出圖 4-17 和圖 4-18 兩種推薦結果。
四、數據庫介紹與設計(詳見微信公眾號下載)
1、實驗數據集介
2、數據庫邏輯結構設
3、系統 E-R
4、系統數據表
隨著互聯網的飛速發展,關於推薦系統的研究工作也蒸蒸日上.本文主要研究了實現推薦系統所需的技術,研究了推薦算法以及推薦系統的一些國內外現狀.並以電影推薦系統為實例,對整個推薦系統的架構以及所有功能做了詳盡的闡述與分析.從系統的需求分析出發,剖析了用戶對功能的需求,然後介紹了系統的各個功能模塊,最後充分展示了系統數據庫的設計以及數據表的內容. 設計的系統包含用戶信息模塊、電影展示模塊、用戶評分模塊、推薦結果模塊.每個模塊的介紹都有流程圖或者系統截圖.數據庫中的核心數據表也充分對所存內容、每個字段的類型進行了闡述. 本系統采用改進過的兩種協同過濾算法:基於用戶的協同過濾和基於物品的協同過濾,使用戶能從兩種不同角度獲得推薦,提高用戶的可選擇性.並且利用准確率、召回率以及流行度三個指標對算法進行評測.實驗表明,基於本系統所用數據集,UserCF-IIF 算法的性能要優於 ItemCF-IUF 算法. 核心的推薦算法工作完成後,本文結合現有的較熱門的 Web 重量級框架 Django,利用 Django 內置的用戶注冊表單實現用戶注冊,編寫視圖代碼進行電影推薦結果的 UI 前端展示.利用 CSS3 語言對網頁進行排版、美化,使系統看上去更加簡潔和美觀,增加用戶的體驗。