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