国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Spark 框架的電影推薦系統(tǒng)的實現(xiàn)

2021-03-30 01:06:46賴麗君
鄂州大學(xué)學(xué)報 2021年2期
關(guān)鍵詞:物品矩陣模塊

賴麗君

(泉州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院信息技術(shù)系,福建泉州362000)

推薦系統(tǒng)通過分析海量信息來挖掘、 學(xué)習(xí)用戶的興趣或喜好,結(jié)合推薦技術(shù)及系統(tǒng)支撐框架,為每個用戶推薦其感興趣的產(chǎn)品或內(nèi)容。 目前解決“信息過載”的兩種重要的手段即是利用推薦系統(tǒng)與搜索引擎[1],兩者均能協(xié)助用戶獲取感興趣的內(nèi)容, 不同于搜索引擎, 推薦系統(tǒng)在進(jìn)行深度挖掘、分析用戶數(shù)據(jù),推測用戶興趣和喜好時是通過選用合適的推薦算法來進(jìn)行處理, 把用戶主動搜索的方式轉(zhuǎn)化為系統(tǒng)主動推送其感興趣的內(nèi)容或產(chǎn)品,為用戶提供智能化、個性化的推薦服務(wù)。

1 Spark 框架

推薦系統(tǒng)目前已經(jīng)廣泛應(yīng)用于電影、 音樂、電子商務(wù)等網(wǎng)站中,并取得較好的推薦效果,推薦系統(tǒng)以往是基于Hadoop 框架下的MapReduce 的分布式計算平臺的,能解決海量數(shù)據(jù)的高效存儲和分布式計算問題, 但是隨著網(wǎng)絡(luò)和大數(shù)據(jù)技術(shù)的發(fā)展,對推薦系統(tǒng)的計算速度、實時性要求更高,而傳統(tǒng)的基于Hadoop 計算平臺不能滿足需要,Spark 框架以其計算速度快、 實時性強等特點, 逐漸取代MapReduce 成為目前熱門的推薦系統(tǒng)框架。

Apache Spark 是用于針對大規(guī)模數(shù)據(jù)處理的一種統(tǒng)一分析引擎[2]。 Spark 由Scala 語言實現(xiàn),支持Python、Java、Scala 等語言開發(fā), 可以和其他大數(shù)據(jù)工具如Hadoop、Kafka 等很好地整合。 Spark是基于內(nèi)存計算的,且具有易操作的特點,能夠快速、 簡潔、 高效的進(jìn)行并行化應(yīng)用的開發(fā)[3]。 與Hadoop 相比,Spark 因其數(shù)據(jù)結(jié)構(gòu)RDD 強大的計算能力, 對于處理數(shù)據(jù)挖掘與機器學(xué)習(xí)算法更加適合[4],能夠更高效地實現(xiàn)MapReduce 的操作。

2 算法模型

2.1 協(xié)同過濾算法

基于協(xié)同過濾、內(nèi)容的推薦、混合推薦的這類的算法是傳統(tǒng)的推薦方法[5],在這三種算法中,當(dāng)前使用最為廣泛, 最為經(jīng)典的方法則是協(xié)同過濾算法, 如矩陣因子分解借助于用戶與項目或產(chǎn)品之間的交互信息,向用戶提供推薦內(nèi)容。 協(xié)同過濾算法目前有很多,主流的算法有兩種,分別是基于模型的協(xié)同過濾與基于鄰域的協(xié)同過濾。

基于鄰域的協(xié)同過濾算法在進(jìn)行推薦的過程中,通過對鄰域進(jìn)行搜索來計算相似度,主要相似度的計算為用戶之間的相似度與項目之間的相似度,它的實現(xiàn)相對簡單,但也存在過分依賴用戶的評分的缺點,特別是數(shù)據(jù)很稀疏時,推薦系統(tǒng)的預(yù)測精度將會急劇下降, 這將導(dǎo)致無法為新用戶進(jìn)行推薦的問題出現(xiàn)[6],基于模型的協(xié)同過濾算法在這種情況下, 它的預(yù)測速度將會更快且算法的可擴(kuò)展性更強, 有一種典型的代表就是使用最小二乘法(ALS)進(jìn)行矩陣分解算法。

2.2 交替最小二乘(ALS)算法

ALS 同時考慮了用戶和物品兩個方面, 將用戶和物品的關(guān)系抽象為一個三元組<用戶, 物品,用戶對物品的評分>,并表示為一個評分矩陣,由于用戶不可能對所有物品進(jìn)行評分, 所以R 矩陣注定是一個稀疏矩陣,缺失不少評分。 為填充空值,ALS 算法采用“隱語義模型”,通過降維的方法來補全“用戶-物品”矩陣,并對沒有出現(xiàn)的值進(jìn)行估計[7],這使得稀疏矩陣的問題能得到有效地解決。在ALS 算法中, 首先假設(shè)有m 個用戶,n 個物品,用矩陣Rm×n來表示用戶對物品的評分, 即矩陣元素Rij代表評分值為第i 個用戶對第j 個物品的評分[8]。 Rm×n矩陣的規(guī)模通常很大,而且數(shù)據(jù)稀疏,為填充缺失值,ALS 算法假設(shè)評分矩陣是近似低秩的,將Rm×n分解為兩個子矩陣Xm×k(用戶對隱含特征的偏好矩陣),Yk×n(物品包含隱含特征的矩陣),使兩個矩陣相乘近似得到Rm×n,其中k<<min(m,n)即k 值遠(yuǎn)小于m 和n,這樣達(dá)到降維的目的,公式如下:

Rm×n≈Xm×kYTk×n

為了使得矩陣X 與矩陣Y 的乘積與原始矩陣R 值盡可能接近,ALS 采用最小化平方誤差損失函數(shù)方法,同時對損失函數(shù)加上正則化項后表示如下:

L(X,Y)=∑u,i(rui-xuTyi)2+λ(|xu|2+|yi|2)

其中λ 是正則化項系數(shù)。 xu作為用戶u 的隱含特征向量,yi是物品i 隱含的特征向量。 而rui則表示用戶u 對物品i 的評分。

具體求解步驟如下:

(1)將矩陣Y 進(jìn)行固定,再對xu求導(dǎo)[8],公式如下:

xu=(YTY+λI)-1YTru

(2)再固定矩陣X,然后對yi 求導(dǎo)[8],公式如下:

yi=(XTX+λI)-1XTri

在迭代過程中,隨機對X,Y 進(jìn)行初始化,交替對X、Y 進(jìn)行迭代優(yōu)化, 不斷更新X 和Y 的值,直至收斂。

3 基于Spark 框架的電影推薦系統(tǒng)設(shè)計和實現(xiàn)

3.1 系統(tǒng)總體設(shè)計

本文基于Spark 生態(tài)框架及Mysql、IDEA、Node.js 等軟件平臺構(gòu)建電影推薦系統(tǒng)。 由HDFS分布式存儲結(jié)構(gòu)來對海量的歷史評分?jǐn)?shù)據(jù)進(jìn)行保存,為充分測試系統(tǒng)性能,使用的評分?jǐn)?shù)據(jù)源于網(wǎng)絡(luò),在使用之前在Pycharm 平臺進(jìn)行預(yù)處理后,在IDEA 平臺上進(jìn)一步清洗數(shù)據(jù),用戶在瀏覽網(wǎng)站時的行為及軌跡產(chǎn)生的實時數(shù)據(jù)由Spark Streaming處理,系統(tǒng)將用戶注冊信息、最新評分?jǐn)?shù)據(jù)、瀏覽歷史記錄等信息存儲到Mysql 數(shù)據(jù)庫中。 通過MLlib 平臺實現(xiàn)ALS 算法, 訓(xùn)練數(shù)據(jù)獲得最佳的推薦模型,產(chǎn)生推薦結(jié)果,向用戶推薦電影,同時對電影進(jìn)行點擊率、評分排名處理,設(shè)計基于電影排名推薦功能, 與ALS 算法一起形成組合推薦模式,向用戶推薦電影。 系統(tǒng)工作流程圖如圖1:

平樂古鎮(zhèn)對原有古鎮(zhèn)建筑進(jìn)行保留,并對當(dāng)?shù)鼐用襁M(jìn)行扶持,使其具有原始居民的人氣。利用已經(jīng)開發(fā)的建筑用地進(jìn)行經(jīng)營。不僅造福當(dāng)?shù)鼐用?,增加?dāng)?shù)鼐用竦氖杖?,而且利用?dāng)?shù)鼐用駥ㄖ涸黾由鷻C,營造古鎮(zhèn)氛圍吸引游客觀光及停留。在業(yè)態(tài)經(jīng)營上缺少多樣性和獨特性,在熙攘的人群中古鎮(zhèn)之景韻味有所欠缺。

圖1 系統(tǒng)總體設(shè)計

3.2 系統(tǒng)功能設(shè)計

系統(tǒng)主要分為用戶信息,電影推薦,電影信息管理三個主要功能模塊,用戶信息模塊分為注冊、登錄、用戶信息管理功能,電影推薦模塊主要有個性化電影推薦功能、用戶評分功能,為解決ALS 算法存在的冷啟動問題, 在此模塊還增加熱門電影推薦功能和好劇推薦功能, 使系統(tǒng)在向老用戶推薦電影的同時, 也能為新用戶提供電影推薦,此外,為進(jìn)一步緩解冷啟動問題,在用戶注冊模塊增加年齡和對電影類別的偏好的信息填寫, 增加用戶特征屬性,對于新用戶進(jìn)行輔助推薦。系統(tǒng)功能模塊如圖2:

圖2 系統(tǒng)功能設(shè)計

3.3 Spark 大數(shù)據(jù)處理框架搭建

在實驗室搭建Spark 生態(tài)環(huán)境, 安裝配置Kafka、Zookeeper、flume、MLlib、Spark SQL、Spark Streaming 等生態(tài)組件,搭建Hadoop 平臺,配置1個Master 節(jié)點和2 個work 節(jié)點,采用其HDFS 分布式存儲歷史評分?jǐn)?shù)據(jù), 對于實時產(chǎn)生的評分?jǐn)?shù)據(jù),將其存于MySQL 數(shù)據(jù)庫中。安裝IDEA 平臺采用Scala 編程語言開發(fā)程序, 安裝Node.js 進(jìn)行前端開發(fā)。 搭建Spark 環(huán)境部分效果如圖3。

3.4 系統(tǒng)實現(xiàn)

3.4.1 算法實現(xiàn)

Spark 生態(tài)組件MLlib 是實現(xiàn)部分機器學(xué)習(xí)算法的平臺, 其中的spark.ml 包有提供實現(xiàn)交替最小二乘算法的函數(shù),在ALS 算法中,主要的實現(xiàn)過程如下幾個步驟:

(1)對數(shù)據(jù)集和Spark 生態(tài)環(huán)境進(jìn)行初始化操作, 通過語句(import org.apache.spark.mllib.recommendation.{ALS,ALSModel})來加載交替最小二乘ALS 算法模型。

(2)數(shù)據(jù)集轉(zhuǎn)換,將樣本評分?jǐn)?shù)據(jù)分為3 部分,訓(xùn)練數(shù)據(jù)占70%,將最靠近最近時間段的數(shù)據(jù)作為測試數(shù)據(jù)占20%(通過用戶評分表中的timestamp 排序獲?。?,校驗數(shù)據(jù)占10%。

(4)在對ALS 模型進(jìn)行訓(xùn)練的過程中,既進(jìn)行顯式反饋數(shù)據(jù)模型的訓(xùn)練, 同時也對隱式反饋數(shù)據(jù)進(jìn)行模型訓(xùn)練,通過調(diào)整參數(shù),多次迭代訓(xùn)練,產(chǎn)生最佳模型。

圖3 Spark 環(huán)境搭建

(5)通過模型預(yù)測評分,計算與實際評分間的均方根誤差RMSE,值越小越接近收斂。

(6)將推薦結(jié)果寫入數(shù)據(jù)庫,向用戶推薦電影。

3.4.2 功能實現(xiàn)

(1)用戶信息模塊。 實現(xiàn)了用戶注冊、登錄、用戶信息管理三個子功能模塊, 用戶注冊時盡可能簡化用戶操作,除了填寫基本信息外,需要選擇感興趣的電影種類,以便對新用戶進(jìn)行電影推薦。 用戶信息管理模塊用于管理用戶個人信息, 用戶可以對自己的信息進(jìn)行修改、完善,系統(tǒng)管理員也可查詢和管理網(wǎng)站所有用戶信息。 用戶注冊界面效果如圖4。

(2)電影推薦模塊。 這部分是網(wǎng)站的核心模塊,實現(xiàn)了個性化電影推薦、熱門電影推薦、好劇推薦、用戶評分等四個子功能模塊,用戶選擇對電影進(jìn)行星級評分,并發(fā)表評論,后臺管理員可以查看所有評分和評論并進(jìn)行管理, 網(wǎng)站實現(xiàn)對每個用戶提供個性化電影推薦服務(wù), 并組合近一個月內(nèi)點擊率高及評論數(shù)多的熱門電影, 和評分排名靠前的好劇進(jìn)行推薦。 部分效果如圖5、圖6、圖7所示。

圖4 用戶注冊界面

(3)電影信息管理模塊。 實現(xiàn)電影信息管理、電影分類管理子功能模塊, 便于網(wǎng)站管理員對電影信息進(jìn)行查詢、增加、修改、刪除等操作。

圖5 猜你喜歡

圖6 熱門電影推薦

圖7 電影評價

4 結(jié)語

大數(shù)據(jù)環(huán)境下, 推薦系統(tǒng)已進(jìn)入到人們生活的各個方面, 為人們提供了更加豐富和便捷的體驗, 應(yīng)用前景廣泛。 本文設(shè)計并實現(xiàn)了一個基于Spark 生態(tài)環(huán)境的電影推薦系統(tǒng), 通過在Spark 框架中采用ALS 算法模型對數(shù)據(jù)進(jìn)行反復(fù)的訓(xùn)練、優(yōu)化調(diào)整,最終取得推薦的最佳模型,向用戶提供個性化電影推薦服務(wù)。 面對新用戶,推薦的挑戰(zhàn)主要是冷啟動問題,該系統(tǒng)以ALS 推薦算法為主,輔以熱門電影和優(yōu)質(zhì)好劇推薦,同時將電影分類,以用戶興趣為出發(fā)點,結(jié)合電影點擊率排名、評分排名向新用戶提供電影推薦服務(wù), 有效緩解冷啟動問題。

猜你喜歡
物品矩陣模塊
28通道收發(fā)處理模塊設(shè)計
“選修3—3”模塊的復(fù)習(xí)備考
稱物品
“雙十一”,你搶到了想要的物品嗎?
誰動了凡·高的物品
初等行變換與初等列變換并用求逆矩陣
選修6 第三模塊 International Relationships
矩陣
南都周刊(2015年1期)2015-09-10 07:22:44
矩陣
南都周刊(2015年3期)2015-09-10 07:22:44
矩陣
南都周刊(2015年4期)2015-09-10 07:22:44
新安县| 阿拉善左旗| 和田县| 当雄县| 娄烦县| 手机| 平昌县| 句容市| 冀州市| 哈密市| 盱眙县| 吉木萨尔县| 崇左市| 科尔| 丹阳市| 光山县| 济宁市| 梧州市| 施甸县| 重庆市| 北京市| 和平区| 康乐县| 阳谷县| 崇明县| 巴林左旗| 盘锦市| 昌都县| 盐城市| 东源县| 斗六市| 泰宁县| 福贡县| 白山市| 佛山市| 循化| 台安县| 县级市| 灌阳县| 沾化县| 洮南市|