梁永恩
(廣東白云學(xué)院大數(shù)據(jù)與計(jì)算機(jī)學(xué)院,廣州 510450)
在當(dāng)今信息過(guò)載的時(shí)代,如何從海量的電影中發(fā)現(xiàn)感興趣的電影,是每個(gè)電影愛(ài)好者(用戶)關(guān)心的問(wèn)題。在已有明確需求的情況下,用戶可以借助互聯(lián)網(wǎng)搜索引擎通過(guò)搜索關(guān)鍵詞獲取到較好的篩選結(jié)果。但是,如果用戶沒(méi)有明確的需求時(shí),沒(méi)法提供合適的關(guān)鍵詞,就難以通過(guò)這種方式獲得自己感興趣的電影。當(dāng)然,用戶可以通過(guò)電影網(wǎng)站的各類排行榜獲得熱門(mén)電影的推薦,但這種推薦往往由于推薦的種類和內(nèi)容有很大的局限性,新穎性不足,難以滿足用戶的個(gè)性化需求。
個(gè)性化推薦系統(tǒng)是這個(gè)問(wèn)題的有效解決方案,本文通過(guò)分析用戶的歷史觀看電影數(shù)據(jù),挖掘用戶的個(gè)性化需求,為用戶提供個(gè)性化的電影推薦信息服務(wù)。
根據(jù)實(shí)現(xiàn)算法的不同,當(dāng)前主流的推薦技術(shù)可分為三種:基于內(nèi)容的推薦、基于關(guān)聯(lián)規(guī)則的推薦和基于協(xié)同過(guò)濾的推薦[1]。①基于內(nèi)容的推薦是根據(jù)內(nèi)容本身的屬性(特征向量)所作的推薦。②基于關(guān)聯(lián)規(guī)則的推薦是基于物品之間的特征關(guān)聯(lián)性所作的推薦。③基于協(xié)同過(guò)濾是根據(jù)用戶已有的歷史行為作分析的基礎(chǔ)上而作的推薦[2]。三種推薦算法各有優(yōu)缺點(diǎn),基于內(nèi)容的推薦的優(yōu)點(diǎn)是不需要其他用戶的數(shù)據(jù),可通過(guò)列出推薦物品的內(nèi)容特征,解釋為何推薦那些物品,缺點(diǎn)是要求內(nèi)容具有良好的結(jié)構(gòu)性,并且用戶的興趣要能夠用內(nèi)容特征形式來(lái)表達(dá)。基于關(guān)聯(lián)規(guī)則的推薦的優(yōu)點(diǎn)是查準(zhǔn)率較高,其缺點(diǎn)算法復(fù)雜,容易生成無(wú)效的規(guī)則?;趨f(xié)同過(guò)濾算法的優(yōu)點(diǎn)是算法簡(jiǎn)單、查準(zhǔn)率較高,能發(fā)現(xiàn)讀者新的閱讀興趣,缺點(diǎn)是存在數(shù)據(jù)稀疏、冷啟動(dòng)等問(wèn)題。
協(xié)同過(guò)濾算法[3]是目前最流行的推薦方法,在學(xué)術(shù)界和業(yè)界都得到了廣泛應(yīng)用。它的最大優(yōu)點(diǎn)是對(duì)推薦對(duì)象沒(méi)有特殊的要求,能處理非結(jié)構(gòu)化的復(fù)雜對(duì)象,如音樂(lè)、電影等。協(xié)同過(guò)濾算法分為兩類:基于用過(guò)戶的協(xié)同過(guò)濾和基于物品的協(xié)同過(guò)濾算法。就電影推薦系統(tǒng)來(lái)說(shuō),由于電影的數(shù)量大大超過(guò)用戶的數(shù)量,同時(shí)電影數(shù)據(jù)相對(duì)穩(wěn)定,因此計(jì)算電影的相似度不但計(jì)算量小,同時(shí)不必頻繁更新。本文正是采用基于物品的協(xié)同過(guò)濾算法實(shí)現(xiàn)電影推薦系統(tǒng)。
基于物品的協(xié)同過(guò)濾算法(簡(jiǎn)稱ItemCF算法)不利用物品的內(nèi)容屬性計(jì)算物品之間的相似度,它通過(guò)分析用戶的行為記錄來(lái)計(jì)算物品的相似度,該算法基于一個(gè)假設(shè):物品A和物品B具有很大的相似度是因?yàn)橄矚g物品B的用戶大多數(shù)也喜歡物品B。如表1所示,喜歡物品A的用戶a和用戶b都喜歡物品D,可以認(rèn)為物品A和物品D具有很大的相似度,故將物品D推薦給同樣喜歡物品A的用戶b。
ItemCF算法分為兩步:(1)計(jì)算電影之間的相似度;(2)根據(jù)電影的相似度和用戶的觀看歷史,生成用戶推薦列表。這里以MovieLens網(wǎng)站的MovieLens 1M數(shù)據(jù)集作為實(shí)驗(yàn)數(shù)據(jù),該數(shù)據(jù)集包括了6040名用戶對(duì)3900部電影的評(píng)分記錄,一共有1000209條電影評(píng)分記錄。基于這個(gè)數(shù)據(jù)集,實(shí)現(xiàn)Top-N推薦。
令N(i)表示喜歡電影i的用戶數(shù),令N(j)為喜歡電影j的用戶數(shù)。建立矩陣C,其中C[i][j]記錄了同時(shí)喜歡電影i和電影j的用戶數(shù),將矩陣歸一化可以得到電影之間的余弦相似度矩陣W。
C#的代碼如下:
得到物品相似度后,再使用如下公式來(lái)度量用戶u對(duì)電影j的興趣程度Puj:
式中,N(u)是用戶喜歡的電影的集合,S(j,K)是和電影j最相似的K個(gè)電影的集合,Wij是電影j和電影i的相似度,rui是用戶u對(duì)電影i的興趣(這里以用戶u對(duì)電影i的評(píng)分來(lái)計(jì)算)。
C#的代碼如下:
測(cè)試結(jié)果如圖1所示。
本文介紹了推薦系統(tǒng)的研究現(xiàn)狀,結(jié)合電影推薦系統(tǒng)的特點(diǎn),利用基于物品的協(xié)同過(guò)濾算法實(shí)現(xiàn)了個(gè)性化的電影推薦系統(tǒng),后期可以混合專家推薦和標(biāo)簽推薦的方式提高推薦的效果。
圖1 ID為3用戶的電影推薦結(jié)果