基於使用者的協同過濾是怎麼推薦電影的?

2021-09-23 07:29:16 字數 1504 閱讀 6117

假設有幾個人分別看了如下電影並且給電影有如下評分(5分最高,沒看過的不評分),我們目的是要向a使用者推薦一部電影:

協同過濾的整體思路只有兩步,非常簡單:尋找相似使用者,推薦電影

尋找相似使用者

所謂相似,其實是對於電影品味的相似,也就是說需要將a與其他幾位使用者做比較,判斷是不是品味相似。有很多種方法可以用來判斷相似性,(與我之前寫的k-means文章中判斷兩點是否類似的方法是一致的)這篇文章用「歐幾里德距離」來做相似性判定。

我們把每一部電影看成n維空間中的乙個維度,這樣每個使用者對於電影的評分相當於維度的座標,那麼每乙個使用者的所有評分,相當於就把使用者固定在這個n維空間的乙個點上,然後利用歐幾里德距離計算n維空間兩點的距離:每乙個電影的評分求差值,然後求每個差值的平方,然後求平方的和,然後在開平方。距離越短說明品味越接近。本例中a只看過兩部電影(《老炮兒》和《唐人街探案》),因此只能通過這兩部電影來判斷品味了,那麼計算a和其他幾位的距離:

然後我們做乙個變換,變換方法為:相似性 = 1/(1+歐幾里德距離),這個相似性會落在【0,1】區間內,1表示完全品味一樣,0表示完全品味不一樣。這時我們就可以找到哪些人的品味和a最為接近了,計算後如下:

相似性:b-0.27,c-0.28,d-0.27,e-0.50,f-0.25,g-0.47

可見,e的口味與a最為接近,其次是g

推薦電影

要做電影加權評分推薦。意思是說,品味相近的人對於電影的評價對a選擇電影來說更加重要,具體做法可以列乙個表,計算加權分:

把相似性和對於每個電影的實際評分相乘,就是電影的加權分

加權後,還要做少量的計算:總分是每個電影加權分的總和,總相似度是對這個電影有評分的人的相似性綜合,推薦度是總分/總相似性,目的是排除看電影人數對於總分的影響

結論在最終一行,就是電影的推薦度(因為是根據品味相同的人打分加權算出的分,可以近似認為如果a看了這部電影,預期的評分會是多少)。

有了電影的加權得分,通常做法還要設定乙個閾值,如果超過了閾值再給使用者推薦,要不怎麼推薦都是爛片,如果這裡我們設定閾值為4,那麼最終推薦給a的電影就是《尋龍訣》。

我們現在的做法是向使用者推薦電影。當然還可以從另外角度來思考:如果我們把一開始的評分表的行列調換,其他過程都不變,那麼就變成了把電影推薦給合適的受眾。因此,要根據不同場景選擇不同的思考維度。

協同過濾 基於使用者的協同過濾itemCF

基於使用者的協同過濾演算法也被稱為最近鄰協同過濾或knn k nearest neighbor,k最近鄰演算法 其核心思想就是,首先根據相似度計算出目標使用者的鄰居集合,然後用鄰居使用者評分的加權組合來為目標使用者作推薦。通常這些演算法都可以總結成三步 首先,使用使用者已有的評分來計算使用者之間的相...

協同過濾推薦演算法 推薦演算法 基於協同過濾CF

前邊我們已經介紹了推薦演算法裡的基於內容的推薦演算法cb,今天我們來介紹一下基於協同的推薦演算法collaboration filtering cf 協同過濾是乙個利用群體智慧型的乙個演算法,舉乙個簡單的例子,如果放假了你想去北京玩幾天,但是不知道北京都有哪些好玩的,你會怎麼做?你可能會上網查一下的...

推薦演算法之基於使用者的協同過濾

基於使用者的的協同過濾演算法是推薦統統最古老的演算法,簡稱usercf。該演算法的誕生一定程度上標誌著推薦系統的誕生。本文將對usercf演算法原理進行講解,並且基於movielens資料集給出實現 供大家交流學習。找到和目標使用者興趣相似的使用者集合 找到這個集合中使用者喜歡的且目標使用者沒有聽說...