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