王小青,蘇 鋒,蔡傳根
(1.東北大學(xué)秦皇島分校 管理學(xué)院,河北 秦皇島 066004;2.安徽理工大學(xué),安徽 淮南 232001)
近年來(lái),隨著移動(dòng)通信技術(shù)和無(wú)線網(wǎng)絡(luò)技術(shù)的發(fā)展,它們已經(jīng)滲透到人們生活的各個(gè)領(lǐng)域,移動(dòng)通信已經(jīng)影響到了人們生活的各個(gè)方面[1]。在新媒體技術(shù)的影響下,人們將一些歷史題材改編成了電視、電影,影視數(shù)據(jù)的數(shù)量大幅度增加,隨著人們生活水平的不斷提高,對(duì)精神生活要求越來(lái)越高,而影視推薦網(wǎng)站層出不窮,人們要在短時(shí)間內(nèi)找到自己喜歡的影視作品十分困難,故出現(xiàn)了“影視過(guò)載”問(wèn)題[2]。為了解決“影視過(guò)載”問(wèn)題,出現(xiàn)了影視智能化推薦系統(tǒng),而影視推薦算法是最為核心的內(nèi)容[3?5]。
為了獲得理想的影視智能推薦效果,本文提出了基于數(shù)據(jù)挖掘技術(shù)的影視智能推薦算法,并與其他方法進(jìn)行影視推薦對(duì)比測(cè)試,結(jié)果表明,本文方法是一種精度高、速度快的影視智能推薦方法,相對(duì)其他方法,本文影視推薦方法具有十分明顯的優(yōu)越性。
針對(duì)影視推薦問(wèn)題,國(guó)內(nèi)外學(xué)者進(jìn)行了大量深入的研究,當(dāng)前存在許多影視推薦系統(tǒng)[6]。一個(gè)影視推薦系統(tǒng)大致包括:用戶使用影視的歷史記錄、影視推薦算法、影視推薦結(jié)果的服務(wù)決策信息,其中影視推薦算法是核心,也是最為關(guān)鍵的部分。當(dāng)前推薦算法大致可以劃分為4類:基于協(xié)同過(guò)濾的影視推薦算法、基于內(nèi)容的影視推薦算法、基于關(guān)聯(lián)規(guī)則的影視推薦算法、基于知識(shí)的影視推薦算法[7]。其中,協(xié)同過(guò)濾的影視推薦算法是最早的算法,可以細(xì)化為基于內(nèi)存的影視推薦算法和基于模型的影視推薦算法,在實(shí)際中該類算法不關(guān)心用戶歷史行為記錄,因此存在冷啟動(dòng)和稀疏性問(wèn)題,同時(shí),影視推薦時(shí)間長(zhǎng),無(wú)法進(jìn)行在線影視推薦[8?10]?;趦?nèi)容的影視推薦算法模擬信息檢索和過(guò)濾的過(guò)程,根據(jù)用戶的偏好和影視內(nèi)容之間的匹配度進(jìn)行影視推薦,該類算法的自學(xué)習(xí)能力差,無(wú)法發(fā)現(xiàn)潛在的用戶;基于關(guān)聯(lián)規(guī)則的影視推薦算法工作過(guò)程簡(jiǎn)單,影視推薦實(shí)時(shí)性強(qiáng),但是存在冷啟動(dòng)和稀疏性問(wèn)題,同時(shí)一旦規(guī)則太多,那么影視推薦效率就比較低;基于知識(shí)的影視推薦算法是針對(duì)特定領(lǐng)域的影視制定推薦算法,因此通用性比較差[11?13]。
綜合當(dāng)前影視推薦算法的研究現(xiàn)狀可以發(fā)現(xiàn),每一種影視推薦算法或多或少存在一定的不足和局限性,因此影視推薦算法研究面臨巨大的挑戰(zhàn)[13?16]。
隨著計(jì)算機(jī)網(wǎng)絡(luò)的不斷發(fā)展,許多公司將一些影視數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上,使得影視數(shù)據(jù)急劇增加,當(dāng)前影視數(shù)據(jù)呈現(xiàn)大規(guī)模、海量特征,采用傳統(tǒng)單機(jī)平臺(tái)進(jìn)行影視推薦效率極低。本文首先采集大量的影視數(shù)據(jù),然后對(duì)影視數(shù)據(jù)進(jìn)行預(yù)處理,并將預(yù)處理的影視數(shù)據(jù)保存在云平臺(tái)的分布式文件系統(tǒng)中。
分布式文件系統(tǒng)具有速度快、處理能力強(qiáng)等優(yōu)點(diǎn),可以存儲(chǔ)海量的影視數(shù)據(jù)。一個(gè)分布式文件系統(tǒng)包括一個(gè)NameNode和多個(gè)DataNode,其中NameNode是主服務(wù)器,它可以接收用戶請(qǐng)求,并對(duì)文件進(jìn)行管理,而DataNode是多個(gè)計(jì)算機(jī),主要用來(lái)存儲(chǔ)數(shù)據(jù),分布式文件系統(tǒng)的基本結(jié)構(gòu)具體如圖1所示。
圖1 分布式文件系統(tǒng)的基本結(jié)構(gòu)
由于影視數(shù)據(jù)保存在分布式文件系統(tǒng)中,因此需要生成用戶對(duì)影視的評(píng)分?jǐn)?shù)據(jù)。用戶對(duì)影視的評(píng)分?jǐn)?shù)據(jù)由三部分組成:用戶編號(hào)(U_ID)、影視編號(hào)(M_ID)、用戶對(duì)影視的評(píng)分(Score),本文采用云計(jì)算技術(shù)中的Map/Reduce實(shí)現(xiàn),生成用戶向量和影視向量,其中用戶向量是一個(gè)用戶對(duì)所有影視的評(píng)分,影視向量是所有用戶對(duì)一個(gè)影視的評(píng)分。
2.2.1 用戶向量生成步驟
Step1:從分布式文件系統(tǒng)中讀取影視數(shù)據(jù),并計(jì)算用戶的影視評(píng)分。
Step2:通過(guò)Map將用戶對(duì)影視的評(píng)分分為兩部分:U_ID和M_ID、Score,其中,U_ID作為Map的key,M_ID、Score作為Map的value,它們組成
Step3:根據(jù)key進(jìn)行排序,將key相同的用戶的影視評(píng)分放在一起。
Step4:Reduce對(duì)相同用戶的影視評(píng)分?jǐn)?shù)據(jù)進(jìn)行整合,得到一個(gè)用戶對(duì)所有電影評(píng)分的集合。
Step5:構(gòu)建用戶?影視評(píng)分矩陣,并計(jì)算它們的平均值,從而產(chǎn)生用戶評(píng)分向量。
具體步驟如圖2所示。
圖2 用戶向量生成的過(guò)程
2.2.2 影視向量的生成步驟
Step1:將用戶評(píng)分向量作為Map的輸入,對(duì)用戶評(píng)分向量進(jìn)行分解,將M_ID作為key,將U_ID、Score作為Map的value,形成
Step2:根據(jù)key進(jìn)行排序,將key相同的用戶數(shù)據(jù)放在一起。
Step3:Reduce對(duì)用戶數(shù)據(jù)進(jìn)行整合,將得到的key作為M_ID,vU_ID、Score作為value,即為所有對(duì)影視評(píng)過(guò)分的用戶集合。
Step4:將生成的數(shù)據(jù)保存在分布式文件系統(tǒng)中。具體如圖3所示。
用戶對(duì)影視的評(píng)分主要通過(guò)興趣程度描述,假設(shè)有m個(gè)用戶,對(duì)n部影視進(jìn)行評(píng)價(jià)和打分,第i個(gè)用戶對(duì)第j部影視的評(píng)分分值為r ij,本文采用Movielens的5分制作為評(píng)分標(biāo)準(zhǔn),分值越高表示用戶對(duì)該部影視越感興趣,那么用戶?影視評(píng)分矩陣可以表示為:
圖3 影視向量生成過(guò)程
對(duì)于用戶?影視評(píng)分矩陣,根據(jù)用戶向量之間的距離估計(jì)用戶之間的相似度,用戶向量之間的距離越近,表示用戶的相似度越高,當(dāng)前相似度的計(jì)算方式主要有:
1)基于歐氏距離的相似度
2)基于余弦的相似度
3)基于皮爾遜相關(guān)系數(shù)的相似度
本文采用皮爾遜相關(guān)系數(shù)計(jì)算用戶相似度。
對(duì)于給定的訓(xùn)練樣本集,最近鄰算法根據(jù)樣本之間的距離找到最近的k個(gè)鄰居樣本,將k個(gè)鄰居頻率最高類別作為待識(shí)別類別。本文采用皮爾遜相關(guān)系數(shù)計(jì)算用戶的相似度,然后根據(jù)相似度值進(jìn)行排序,選擇前k個(gè)最近鄰“鄰居”生成目標(biāo)用戶的最近鄰用戶集合。
計(jì)算用戶預(yù)測(cè)評(píng)分,并根據(jù)用戶預(yù)測(cè)評(píng)分產(chǎn)生影視推薦結(jié)果,采用中心加權(quán)平均值的方法計(jì)算用戶u對(duì)未評(píng)分影視i的預(yù)測(cè)評(píng)分,具體如下:
為了測(cè)試基于數(shù)據(jù)挖掘技術(shù)的影視智能推薦算法的性能,采用影視推薦經(jīng)典數(shù)據(jù)集——Movielens數(shù)據(jù)集作為測(cè)試對(duì)象,從中選擇Movielens?100k進(jìn)行具體仿真實(shí)驗(yàn),選擇80%的數(shù)據(jù)作為訓(xùn)練樣本集合,20%的數(shù)據(jù)作為測(cè)試樣本集合,Movielens的三組不同規(guī)模的數(shù)據(jù)集具體如表1所示。
表1 影視智能推薦的數(shù)據(jù)集
影視智能推薦實(shí)驗(yàn)平臺(tái)包括5個(gè)節(jié)點(diǎn)、1臺(tái)服務(wù)器、4臺(tái)普通計(jì)算機(jī),具體配置如表2所示,采用Java語(yǔ)言實(shí)現(xiàn)影視智能推薦算法。在相同條件下,選擇文獻(xiàn)[12?13]的影視智能推薦算法進(jìn)行對(duì)比實(shí)驗(yàn),選擇影視智能推薦精度和時(shí)間作為實(shí)驗(yàn)結(jié)果的評(píng)價(jià)指標(biāo)。
表2 影視智能推薦的實(shí)驗(yàn)環(huán)境
采用三種方法對(duì)訓(xùn)練樣本集合進(jìn)行學(xué)習(xí),建立影視智能推薦模型,然后對(duì)測(cè)試樣本集合進(jìn)行分析,統(tǒng)計(jì)每一種方法對(duì)每一個(gè)數(shù)據(jù)集的推薦精度,結(jié)果如圖4所示。從圖4可以看出,相對(duì)于文獻(xiàn)[12?13]的影視智能推薦算法,本文算法的影視智能推薦精度大幅度提升,減少了影視智能推薦誤差。
采用單機(jī)平臺(tái)的影視智能推薦算法進(jìn)行對(duì)比實(shí)驗(yàn),統(tǒng)計(jì)兩種方法的影視智能推薦時(shí)間,結(jié)果如圖5所示。從圖5可以發(fā)現(xiàn),相對(duì)于單機(jī)平臺(tái),本文算法的影視智能推薦時(shí)間明顯減少,這是因?yàn)楸疚囊肓舜髷?shù)據(jù)分析的云計(jì)算平臺(tái),提高了影視智能推薦效率。
為了測(cè)試影視智能推薦算法的通用性,通過(guò)移動(dòng)網(wǎng)絡(luò)采集大量的影視數(shù)據(jù),將它們劃分為100類,統(tǒng)計(jì)本文算法對(duì)100類影視的推薦精度,結(jié)果如圖6所示。從圖6可以看出,本文算法的平均影視智能推薦精度超過(guò)了95%,獲得了令人滿意的推薦結(jié)果,能夠適應(yīng)移動(dòng)環(huán)境下的影視推薦應(yīng)用要求。
圖4 不同方法的影視智能推薦精度對(duì)比
圖6 本文算法對(duì)不同類型的影視智能推薦精度
影視智能推薦是當(dāng)前人工智能技術(shù)中的研究熱點(diǎn),針對(duì)傳統(tǒng)影視智能推薦算法存在的弊端,為了提高影視智能推薦的精度,本文提出基于數(shù)據(jù)挖掘技術(shù)的影視智能推薦算法。采用多個(gè)影視數(shù)據(jù)集合進(jìn)行仿真測(cè)試,結(jié)果表明,相對(duì)于其他影視智能推薦算法,本文方法獲得了較高精度的影視智能推薦結(jié)果,影視智能推薦效率得以改善,具有十分廣泛的應(yīng)用前景。