【推荐系统】电影推荐系统(一)
文章目錄
- 前言
- 一、電影推薦架構
- 1.1、系統架構
- 1.2、項目數據流程
- 二、電影推薦思路
- 2.1、特征提取
- 2.2、實時推薦
- 2.3、電影內容推薦
- 總結
前言
??隨著互聯網的發展,推薦系統在各種互聯網項目中占據了不可缺少的一部分,商品的推薦,抖音小視頻推薦,音樂推薦,交友推薦等等。電影系統相對來說是一種簡單的推薦,因此筆者也從電影系統入手,進軍推薦系統的學習,請大家參考。
一、電影推薦架構
1.1、系統架構
- 用戶可視化:主要負責實現和用戶的交互以及業務數據的展示,主體采用AngularJS2 進行實現,部署在 Apache 服務上。
- 綜合業務服務:主要實現 JavaEE 層面整體的業務邏輯,通過 Spring 進行構建,對接業務需求。部署在 Tomcat 上。
【 數據存儲部分】
- 業務數據庫:項目采用廣泛應用的文檔數據庫 MongDB 作為主數據庫,主要負責平臺業務邏輯數據的存儲。
- 搜索服務器:項目愛用 ElasticSearch 作為模糊檢索服務器,通過利用 ES 強大的匹配查詢能力實現基于內容的推薦服務。
- 緩存數據庫:項目采用 Redis 作為緩存數據庫,主要用來支撐實時推薦系統部分對于數據的高速獲取需求。
【離線推薦部分】
- 離線統計服務:批處理統計性業務采用 Spark Core + Spark SQL 進行實現,實現對指標類數據的統計任務。
- 離線推薦服務:離線推薦業務采用 Spark Core + Spark MLlib 進行實現,采用ALS 算法進行實現。
- 工作調度服務 :對于離線推薦部分需要以一定的時間頻率對算法進行調度,采用 Azkaban 進行任務的調度。
【實時推薦部分】
- 日志采集服務:通過利用 Flume-ng 對業務平臺中用戶對于電影的一次評分行為進行采集,實時發送到 Kafka 集群。
- 消息緩沖服務:項目采用 Kafka 作為流式數據的緩存組件,接受來自 Flume 的數據采集請求。并將數據推送到項目的實時推薦系統部分。
- 實時推薦服務:項目采用 Spark Streaming 作為實時推薦系統,通過接收 Kafka中緩存的數據,通過設計的推薦算法實現對實時推薦的數據處理,并將結構合并更新到 MongoDB 數據庫。
1.2、項目數據流程
【系統初始化部分】
- 通過 Spark SQL 將系統初始化數據加載到 MongoDB 和 ElasticSearch 中。
【離線推薦部分】
- 通過 Azkaban 實現對于離線統計服務以離線推薦服務的調度,通過設定的運行時間完成對任務的觸發執行。
- 離線統計服務從 MongoDB 中加載數據,將【電影平均評分統計】、【電影評分個數統計】、【最近電影評分個數統計】三個統計算法進行運行實現,并將計算結果回寫到 MongoDB 中;離線推薦服務從 MongoDB 中加載數據,通過 ALS 算法分別將【用戶推薦結果矩陣】、【影片相似度矩陣】回寫到 MongoDB 中。
【實時推薦部分】
- Flume 從綜合業務服務的運行日志中讀取日志更新,并將更新的日志實時推送到Kafka 中;Kafka 在收到這些日志之后,通過 kafkaStream 程序對獲取的日志信息進行過濾處理,獲取用戶評分數據流【UID|MID|SCORE|TIMESTAMP】,并發送到另外一
個 Kafka 隊列;Spark Streaming 監聽 Kafka 隊列,實時獲取 Kafka 過濾出來的用戶評分數據流,融合存儲在 Redis 中的用戶最近評分隊列數據,提交給實時推薦算法,完成對用戶新的推薦結果計算;計算完成之后,將新的推薦結構和 MongDB 數據庫中的推薦結果進行合并。
【業務系統部分】
- 推薦結果展示部分,從 MongoDB、ElasticSearch 中將離線推薦結果、實時推薦結果、內容推薦結果進行混合,綜合給出相對應的數據。
- 電影信息查詢服務通過對接 MongoDB 實現對電影信息的查詢操作。
- 電影評分部分,獲取用戶通過 UI 給出的評分動作,后臺服務進行數據庫記錄后,一方面將數據推動到 Redis 群中,另一方面,通過預設的日志框架輸出到 Tomcat 中的日志中。
- 項目通過 ElasticSearch 實現對電影的模糊檢索。
- 電影標簽部分,項目提供用戶對電影打標簽服務。
二、電影推薦思路
??首先電影推薦相對于其它推薦來說比較簡單。相對于短視頻推薦來說,電影推薦不會每天更新大量的新數據,電影可能每個月就幾個新電影的上映。相對于新聞推薦來說,實時性可能就沒那么重要,很多老的電影也會有很多用戶喜歡觀看。因此電影推薦或者音樂推薦最適合新手入門。
2.1、特征提取
??用戶電影特征提取時,必須要有對應的數據,電影表,用戶表,用戶評價表。通過als算法對評價表進行計算,計算出電影的特征矩陣。通過電影特征的矩陣計算得出每個電影最相似的幾個電影,并且保存。保存數據如下:
{"_id":"600a2decbf19ae00fc6e2f18","mid":1669,"recs":[{"mid":2776,"score":0.9999999999999994},{"mid":2820,"score":0.9996844527170483}] }??MongoDB 是一個面向文檔存儲的數據庫,操作起來比較簡單和容易。對這種數據結構有良好的支持,所以在此選擇MongoDB。
詳細到:ALS進行離線推薦
2.2、實時推薦
??在此實時推薦采用一個比較簡單的思路,便于理解。
??當用戶 u 對電影 p 進行了評分,將觸發一次對 用戶u 的推薦結果的更新。由于用
戶 u 對電影 p 評分,對于用戶 u 來說,他與 電影p 最相似的電影們之間的推薦強度將
發生變化,所以選取與電影 p 最相似的 K 個電影作為候選電影。
詳細到:實時推薦
2.3、電影內容推薦
總結
??此為最簡單的電影推薦實現思路,當然還有很多需要完善的地方。而且在實際場景中也要根據實際情況去靈活的運用。
參考地址:
ALS算法詳解
尚硅谷電影推薦實戰
總結
以上是生活随笔為你收集整理的【推荐系统】电影推荐系统(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 修电脑
- 下一篇: 【数据结构与算法】【算法思想】【推荐系统