張阿敏 劉強(qiáng) 鄧會
【摘 要】文章對視頻資源推薦系統(tǒng)的設(shè)計與實(shí)現(xiàn)進(jìn)行了系統(tǒng)且有效的分析和研究,視頻資源推薦系統(tǒng)采用個性化推薦技術(shù),使用協(xié)同過濾算法進(jìn)行推薦,運(yùn)行于Hadoop大數(shù)據(jù)計算平臺,使用MySQL數(shù)據(jù)庫作為存儲,系統(tǒng)所需要的數(shù)據(jù)集采用Python語言編寫腳本,并從網(wǎng)上進(jìn)行數(shù)據(jù)采集。經(jīng)測試,該系統(tǒng)可以讓用戶能得到自己所需的視頻資源,移動端用戶也能快速找到自己喜歡的類型視頻資源和全網(wǎng)推薦視頻資源,具有較好的推薦效果。
【關(guān)鍵詞】視頻資源推薦;個性化推薦;協(xié)同過濾
【中圖分類號】TP18;TP311.52【文獻(xiàn)標(biāo)識碼】A 【文章編號】1674-0688(2019)12-0048-02
各類互聯(lián)網(wǎng)新技術(shù)的快速發(fā)展,極大地方便了人們的學(xué)習(xí)和生活。如何在互聯(lián)網(wǎng)的數(shù)據(jù)海洋中尋找到自己的數(shù)據(jù),在大數(shù)據(jù)時代,其中如何解決數(shù)據(jù)利用率問題是當(dāng)前研究的重點(diǎn)和熱點(diǎn)。對于廣大學(xué)習(xí)者而言,視頻學(xué)習(xí)效果比較直觀,如何快速找到自己學(xué)習(xí)所需的視頻資源是一個難點(diǎn),基于協(xié)同過濾算法的視頻資源推薦系統(tǒng)就是為了解決大數(shù)據(jù)利用率低的問題,幫助人們快速查找到自己所需的各類資源,特別是視頻資源,方便人們學(xué)習(xí)。
1 關(guān)鍵技術(shù)分析
(1)個性化推薦。視頻資源推薦系統(tǒng)可以從大數(shù)據(jù)中尋找到用戶的興趣點(diǎn)和行為特點(diǎn),根據(jù)用戶的興趣和行為特點(diǎn)向用戶推薦信息,通過建立用戶和視頻資源之間的行為關(guān)系,根據(jù)用戶的歷史記錄挖掘用戶的潛在欲望從而為用戶提供精準(zhǔn)推薦服務(wù)。系統(tǒng)幫助用戶挑選他們想看的視頻資源,節(jié)省用戶尋找資源的時間,提升用戶對網(wǎng)站的好感度,還能提高用戶和系統(tǒng)的親密聯(lián)系。同時,用戶能快速找到感興趣的視頻資源,也能減輕網(wǎng)站的工作量。
(2)協(xié)同過濾算法。協(xié)同過濾算法分為基于用戶的協(xié)同過濾和基于視頻資源的協(xié)同過濾。基于用戶協(xié)同過濾利用歷史數(shù)據(jù)進(jìn)行分析來尋找用戶的鄰居,根據(jù)評分相似的最近用戶的評分?jǐn)?shù)據(jù)向目標(biāo)用戶生成推薦。基于項目協(xié)同過濾推薦依賴項目間的關(guān)聯(lián)來決定推薦。根據(jù)目標(biāo)用戶已經(jīng)評價過的項目,計算該視頻資源與其他視頻資源的相似性,選擇一系列最相似的視頻資源生成推薦。由于視頻資源間的相似性,所以對已知視頻資源的評分就可以推斷出其他項目的評分范圍,以已評分項目相似的項目作為推薦。
2 系統(tǒng)總體方案
總體設(shè)計架構(gòu)主要包括4個部分。在數(shù)據(jù)采集部分,一是分析用戶的幾種上網(wǎng)觀看視頻的行為,比如點(diǎn)擊、收藏及購買等;二是為不同用戶行為設(shè)置相應(yīng)分值,采用腳本程序模擬生成可行的數(shù)據(jù)集。在數(shù)據(jù)存儲部分,用戶行為數(shù)據(jù)保存在分布式文件系統(tǒng)HDFS中,而視頻資源信息和用戶信息保存在MySQL數(shù)據(jù)庫中。在數(shù)據(jù)分析部分,通過為點(diǎn)擊、收藏、購買3種不同上網(wǎng)行為,設(shè)置不同的分值,采用基于評分矩陣及相似矩陣的協(xié)同過濾算法,生成最終的推薦矩陣。在數(shù)據(jù)展示部分,設(shè)計一個簡易的網(wǎng)站客戶端,將推薦結(jié)果展示在客戶端的Web頁面,并可以應(yīng)用于多種終端。
(1)平臺構(gòu)建方案設(shè)計。根據(jù)設(shè)計要求,Hadoop大數(shù)據(jù)計算平臺滿足設(shè)計要求,因此選擇HDFS用于海量的數(shù)據(jù)存儲,利用MapReduce作為計算框架,對數(shù)據(jù)進(jìn)行預(yù)處理及計算最終的推薦矩陣,得出推薦視頻資源列表。此外,我們采用MySQL作為存儲視頻資源信息、用戶信息及推薦視頻資源列表的數(shù)據(jù)庫,網(wǎng)站使用到的后臺數(shù)據(jù)皆來自MySQL。
(2)采集方案設(shè)計。系統(tǒng)出于版權(quán)、數(shù)據(jù)采集速度等方面的考慮,采用的數(shù)據(jù)集不選擇采用爬蟲技術(shù)從某些視頻資源網(wǎng)站上進(jìn)行不間斷抓取獲得。為了滿足海量大數(shù)據(jù)的前提,我們采取Python編寫腳本程序,針對預(yù)先設(shè)計的推薦方案,我們分時采集生成了4個數(shù)據(jù)集,分別統(tǒng)計了用戶的點(diǎn)擊量、收藏量、購買量及視頻資源總評分值。
(3)預(yù)處理方案設(shè)計。根據(jù)設(shè)計的視頻資源推薦算法,我們從生成的數(shù)據(jù)集中抽取用戶ID、視頻資源ID、視頻資源點(diǎn)擊量、收藏量、購買量等有用的相關(guān)信息,根據(jù)實(shí)現(xiàn)設(shè)計好的分值合成最終的數(shù)據(jù)集。為了推薦效率考慮,我們只取數(shù)據(jù)集中的新采集的數(shù)據(jù)用于處理,處理后融于先期處理的數(shù)據(jù)集,這樣在程序調(diào)試中可以減少因為處理大規(guī)模數(shù)據(jù)而導(dǎo)致的耗時。
(4)存儲方案設(shè)計。對于視頻資源推薦網(wǎng)站而言,尤其是諸如騰訊視頻、愛奇藝這樣的大型觀影網(wǎng)站,一秒內(nèi)就可以產(chǎn)生海量的數(shù)據(jù),傳統(tǒng)的集中式集群根本無法滿足這種體量的存儲,因此需要一種能夠存儲海量數(shù)據(jù)并具有良好性能的存儲系統(tǒng)作為支撐。HDFS則是滿足這種需求的分布式文件管理系統(tǒng)。系統(tǒng)采用HDFS存儲體積龐大的數(shù)據(jù)集,并將處理完的結(jié)果存放在HDFS中,只將最終需要推薦給用戶的少量數(shù)據(jù)存放到MySQL中。這樣做不僅可以提升系統(tǒng)的效率,減輕MySQL數(shù)據(jù)庫的負(fù)擔(dān),同時可以節(jié)約Hadoop集群的開支。
(5)挖掘與分析方案設(shè)計。系統(tǒng)需要根據(jù)實(shí)際情況選擇合適的推薦算法,通過分析用戶不同的上網(wǎng)行為,設(shè)計出合適的推薦算法產(chǎn)生符合要求的推薦結(jié)果。系統(tǒng)采用Java語言編寫MapReduce程序?qū)崿F(xiàn)所設(shè)計的協(xié)同過濾推薦算法。對于視頻資源推薦系統(tǒng)的推薦算法,完成如下功能:{1}算法適用于海量數(shù)據(jù)的處理,能分布式并行運(yùn)算。{2}程序能從HDFS上獲取數(shù)據(jù)進(jìn)行處理,處理的中間結(jié)果和最后結(jié)果都應(yīng)該存放在HDFS上。{3}程序能根據(jù)用戶的在系統(tǒng)上的行為數(shù)據(jù)(如瀏覽、收藏、購買等)快速穩(wěn)定高效地計算出推薦的結(jié)果。{4}程序能對推薦結(jié)果進(jìn)行過濾和排序。
(6)數(shù)據(jù)可視化方案設(shè)計。系統(tǒng)運(yùn)行于在Linux系統(tǒng)的Tomcat服務(wù)器,后臺數(shù)據(jù)處理使用Java語言,數(shù)據(jù)庫使用MySQL。用戶可以在該視頻資源推薦系統(tǒng)上注冊登錄、瀏覽、收藏資源等。網(wǎng)站后臺根據(jù)登錄用戶的ID從數(shù)據(jù)庫中獲取該用戶的推薦清單,根據(jù)清單在數(shù)據(jù)庫item表查詢獲取視頻資源信息,將得到的視頻資源名、視頻資源價格、點(diǎn)擊量、收藏量、購買量等信息顯示在網(wǎng)頁中。網(wǎng)站使用到的數(shù)據(jù)存放在MySQL中,但是數(shù)據(jù)分析的結(jié)果存儲于HDFS上,所以在系統(tǒng)處理完數(shù)據(jù)之后,程序會將處理結(jié)果同時寫入兩個不同的存儲系統(tǒng)中。結(jié)果展示使用了最簡潔的實(shí)現(xiàn)方式,以Web頁面展示給用戶,簡單而高效。
3 數(shù)據(jù)挖掘與分析方案的實(shí)現(xiàn)
(1)基于協(xié)同過濾算法構(gòu)建推薦模型。系統(tǒng)采用協(xié)同過濾算法,給用戶推薦他們想看的視頻資源。根據(jù)用戶行為列表計算用戶、視頻資源的評分矩陣,為點(diǎn)擊事件設(shè)置分值為“1”,收藏設(shè)置分值為“3”,購買設(shè)置分值為“5”;然后根據(jù)用戶、視頻資源的評分矩陣計算視頻資源與視頻資源的相似度矩陣;根據(jù)相似度矩陣、評分矩陣計算出推薦列表。
第一步,構(gòu)建用戶評分矩陣。用戶評分矩陣的第一列是視頻資源的ID,第二列是該用戶對相應(yīng)視頻資源的評分,生成每個用戶的評分矩陣,將中間結(jié)果保存在HDFS中。第二步,構(gòu)建相似度矩陣。相似度矩陣的第一列是視頻資源的ID,第二列是該視頻資源與所有視頻資源相對應(yīng)的相似度。利用余弦計算相似度。第三步,轉(zhuǎn)置評分矩陣。轉(zhuǎn)置之后的第一列是用戶的ID,第二列是該視頻資源與之相對應(yīng)視頻資源的分值。第四步,構(gòu)建推薦矩陣。利用相似度矩陣乘以轉(zhuǎn)置評分矩陣,得到最終的推薦矩陣。推薦矩陣第一列是視頻資源ID,第二列是用戶ID及對應(yīng)的推薦度。第五步,去掉推薦列表中用戶已經(jīng)操作過的視頻資源,例如用戶A已經(jīng)購買觀看過“云計算入門”,則將該視頻從推薦列表中刪除。
(2)資源推薦的實(shí)現(xiàn)方式。{1}基于全網(wǎng)點(diǎn)擊量。結(jié)合設(shè)計好的協(xié)同過濾算法,我們將用戶點(diǎn)擊量作為評分矩陣中的分值,從而組成評分矩陣,后續(xù)生成相似度矩陣、推薦矩陣。通過對全網(wǎng)用戶的點(diǎn)擊量整合、分析,將其排序,能夠得到點(diǎn)擊量最高的一些視頻資源。{2}基于全網(wǎng)收藏量。結(jié)合協(xié)同過濾算法,我們將用“戶點(diǎn)擊量+收藏量”作為評分矩陣的分值,組成評分矩陣,后續(xù)生成相似度矩陣、推薦矩陣。通過對全網(wǎng)用戶的收藏量高的視頻資源進(jìn)行整合和分析,將其排序,能夠得到收藏量最高的一些資源。{3}基于購買量。將用戶對某視頻資源的瀏覽量、購買量作為評分矩陣的分值,如果存在收藏行為則加上收藏量,組成評分矩陣,后續(xù)生成相似度矩陣、推薦矩陣。通過對全網(wǎng)用戶的購買量的收集,能夠排序得出購買量最高的一些視頻資源,即向用戶推薦購買量最高的一些視頻資源。{4}基于全網(wǎng)評分。用戶的購買行為建立在瀏覽視頻資源的行為上,用戶只有購買之后才能觀看視頻資源,視頻資源評分由視頻資源的點(diǎn)擊量、收藏量、購買量計算得到。{5}基于用戶。根據(jù)用戶行為進(jìn)行分析,建立在用戶瀏覽、收藏、購買視頻資源的行為上,不同用戶的行為不同,所根據(jù)用戶推薦的視頻資源自然也不同,找出用戶行為相似的個體,即興趣口味相似的用戶,將數(shù)據(jù)對比分析,推薦相似用戶的視頻資源,從而實(shí)現(xiàn)用戶與用戶之間的聯(lián)系,實(shí)現(xiàn)基于用戶的視頻資源推薦。
4 結(jié)論
采用協(xié)同過濾推薦算法為用戶實(shí)現(xiàn)個性化推薦各類學(xué)習(xí)資源,使用MapReduce處理框架使得算法可以在多個計算機(jī)節(jié)點(diǎn)上并發(fā)執(zhí)行程序,更快速地計算出推薦結(jié)果。經(jīng)測試系統(tǒng)達(dá)到了推薦視頻資源的目的,為用戶提供了便利服務(wù)。該系統(tǒng)除了可以用于為學(xué)習(xí)者推薦學(xué)習(xí)資源外,還可以用于影視作品、音樂等資源的推薦。
參 考 文 獻(xiàn)
[1]賈忠濤.基于協(xié)同過濾算法的電影個性化推薦系統(tǒng)設(shè)計與實(shí)現(xiàn)[J].軟件導(dǎo)刊,2015,14(1):86-88.
[2]王均波.協(xié)同過濾推薦算法及其改進(jìn)研究[D].重慶:重慶大學(xué),2010.
[3]傅杰.基于集成學(xué)習(xí)的個性化推薦系統(tǒng)的研究與實(shí)現(xiàn)[D].南昌:江西理工大學(xué),2010.
[4]韓慧俊.電子商務(wù)個性化推薦系統(tǒng)的研究[D].上海:上海交通大學(xué),2007.
[5]蘭艷,曹芳芳.面向電影推薦的時間加權(quán)協(xié)同過濾算法的研究[J].計算機(jī)科學(xué),2017,44(4):295-301,322.