基於使用者喜好以及電影型別的電影推薦演算法

2021-09-16 23:21:47 字數 1583 閱讀 8726

**:

電影推薦是推薦演算法應用的重要場景。其中比較受歡迎的是基於內容的推薦演算法以及協同濾波演算法。其中基於內容的推薦演算法通過分析電影的標題,演員等資訊對使用者進行推薦。而協同濾波演算法的原理是物理類聚,人以群分,將興趣愛好相同的人聚集起來,向他們推薦互相喜歡的電影。

但是這兩種演算法在資訊不全時會無法使用。第一種演算法需要獲取電影的具體資訊,以及使用者的一些個人資訊。而第二種方法會面臨冷啟動問題,即如果該使用者是新加入的,或者是物品時新加進來的,那麼就不會有任何歷史行為。此時無法通過協同濾波進行推薦。

因此本人介紹一種僅僅基於電影型別以及使用者的喜好型別,就能向使用者進行推薦的演算法。

該演算法的實踐首先要計算genre correlation。(這裡中文goole翻譯給出的是種類相關係數,不知是否準確。因此用英文代替)。每部電影都會有不同的genre,如玩具總動員的genre是animation|children|comedy。每部電影的genre數目在2-3個左右。genre correlation就是genre互相的相關性。

具體計算方法是:首先我們建立genre correlation table a,全部初始化為0。接著我們取出一部電影。再次以玩具總動員為例,該電影的genre是animation|children|comedy。我們

選取animation為criterion genre,因為該電影的genre中animaion後面還有children和comedy,所以a[animation][children]的數值加一,a[animation][comedy]加一。

選取children為criterion genre,因為該電影的genre中children後面還有comedy,因此a[children][comedy]。

重複以上步驟,將所有的電影取出並且計算。

將獲得的值與該genre作為criterion genre的次數相除,獲得百分比。

最後我們會獲得類似於下面的一張表:       

計算genre correlation之後,我們就可以計算每部電影對於每個使用者的recommend point了。方法很簡單,利用以下公式計算。其中mg代表選取的電影的genres,而up代表使用者的preferred genre。每一次計算時,如果所選取的電影的genre是使用者preferred genre之一,則使用第乙個公式。否則使用第二個。

下面這張圖是乙個計算的例子。

通過以上計算後,我們最終會得到這樣一張表。其中index是使用者的id,columns是電影的id。

接下來要做的就取決於個人。可以簡單的對recommend point進行排序,接著將最高的幾部推薦出來。或者可以進行進一步過濾,比如只推薦熱門的,或者平均評分在3分以上的。總而言之要根據自己期望獲得的結果進行進一步操作。

基於內容的電影推薦 使用者畫像

使用者畫像構建步驟 使用者畫像建立import pandas as pd import numpy as np from gensim.models import tfidfmodel from functools import reduce import collections from ppri...

統計電影的型別

給出一電影檔案,算出電影genre的電影型別。coding utf 8 import pandas as pd from matplotlib import pyplot as plt import numpy as np file path imdb movie data.csv df pd.re...

爬取豆瓣電影所有型別的電影資訊

把文字儲存在本地 filename 表示文字的路徑,操作文字的方式許可權 with open filename,a encoding utf 8 as f f.write html f.write n def loadnextlink url,path request urllib.request....