電影推薦系統-整體總結(一)從整體上談論此項目
一、推薦系統
推薦系統,推薦系統是信息過載所采用的措施,面對海量的數據信息,從中快速推薦出符合用戶特點的物品。
二、該電影推薦系統整體架構
該電影推薦項目主要實現了關鍵電影指標的數據統計和電影的推薦功能。
1.其中,涉及到的幾個重點框架包括:
Spark(Spark SQL、Spark Streaming、Spark MLlib)--提供數據離線和實時的計算 、Flume--提供日志采集服務、Kafka--提供消息緩沖服務、
Elasticsearch--搜索服務器、Redis--緩存數據庫、MongoDB--存儲業務數據庫。
2.系統在實際的實現功能過程主要分為兩個部分--離線部分、實時部分
離線包括對電影的統計服務和離線推薦,實時就是對電影進行實時的推薦服務。
對於此電影推薦系統的實現過程為:
(0)首先,通過Spark SQL進行初始化(加載數據到MongoDB、Elasticsearch中);
(1)再根據MongoDB中存儲的指定數據集借助Spark SQL進行電影的離線統計服務,包括電影平均評分、電影評分個數、最近電影評分個數以及電影類別TOP10
電影的統計,之后將結果寫入MongoDB中;
(2)接着還會利用Spark MLlib對存儲在MongoDB中指定的數據集進行離線推薦服務,算出ALS訓練模型,結合實際數據從基於用戶和基於商品兩個角度進行預
測,從而實現商品的推薦:
-
基於用戶的離線推薦大致流程:首先,從MongoDB中儲存的關於電影評分數據的集合里取出關鍵性的3列數據-用戶ID、電影ID、電影評分 來訓練ALS模型。
然后從MongoDB中存儲的關於電影數據的集合里取出所有電影ID,
再將之前用戶ID這列的數據單獨取出,兩者做笛卡爾積(cartesian),
之后結合模型得出預期(predict)數據、最后再進行過濾、模式匹配、分組之后存入MongoDB中;
-
基於物品的離線推薦大致流程:首先,根據之前在基於用戶做推薦算出的模型,獲取(50)維向量的特征矩陣(productFeatures)
然后,將其與自身做笛卡兒積,過濾出電影自身和自身相似的數據,
接下來進行模式匹配和余弦相似度的計算,
最后再進行過濾、分組,存入MongoDB中。
-
ALS模型參數(rank-特征維度、lambda-放過擬合參數(跨度))優化:遍歷兩個參數的所有待選值,形成ALS訓練模型,之后計算采用此模型帶來的均方根誤差,
選取最小的誤差並連帶其配置的模型參數-----將(rank,lambda,rmse-最小誤差) 返回出去。
(3)在實時部分呢,會使用Flume、Kafka以及Redis對接Spark Streaming 再結合數據分析公式 進行數據的實時推薦服務
(其中,Redis是用來緩存歷史數據的,Flume、Kafka則是負責實時接收數據的)。
再具體的實現過程見:https://www.cnblogs.com/liuxinrong/articles/13832729.html