我們平時在瀏覽電商、視頻等網(wǎng)站時厨幻,網(wǎng)頁一般會有一個“猜你喜歡”相嵌,也就是”智能推薦系統(tǒng)“,雖然一般來說推薦的不是很準確况脆,但是程Sir還是研究了一下這個玩意是怎么弄出來的……今天說一說最簡單的一個實現(xiàn)方法饭宾,叫做基于用戶的協(xié)同過濾。
假設有幾個人分別看了如下電影并且給電影有如下評分(5分最高格了,沒看過的不評分)看铆,我們目的是要向A用戶推薦一部電影:
協(xié)同過濾的整體思路只有兩步,非常簡單:尋找相似用戶盛末,推薦電影
尋找相似用戶####
所謂相似弹惦,其實是對于電影品味的相似,也就是說需要將A與其他幾位用戶做比較满败,判斷是不是品味相似肤频。有很多種方法可以用來判斷相似性叹括,(與我之前寫的K-Means文章中判斷兩點是否類似的方法是一致的)這篇文章用“歐幾里德距離”來做相似性判定算墨。
我們把每一部電影看成N維空間中的一個維度,這樣每個用戶對于電影的評分相當于維度的坐標汁雷,那么每一個用戶的所有評分净嘀,相當于就把用戶固定在這個N維空間的一個點上,然后利用歐幾里德距離計算N維空間兩點的距離:每一個電影的評分求差值侠讯,然后求每個差值的平方挖藏,然后求平方的和,然后在開平方厢漩。距離越短說明品味越接近膜眠。
本例中A只看過兩部電影(《老炮兒》和《唐人街探案》),因此只能通過這兩部電影來判斷品味了,那么計算A和其他幾位的距離:
然后我們做一個變換宵膨,變換方法為:相似性 = 1/(1+歐幾里德距離)架谎,這個相似性會落在【0,1】區(qū)間內辟躏,1表示完全品味一樣谷扣,0表示完全品味不一樣。這時我們就可以找到哪些人的品味和A最為接近了捎琐,計算后如下:
相似性:B-0.27会涎,C-0.28,D-0.27瑞凑,E-0.50末秃,F(xiàn)-0.25,G-0.47
可見籽御,E的口味與A最為接近蛔溃,其次是G
推薦電影####
要做電影加權評分推薦。意思是說篱蝇,品味相近的人對于電影的評價對A選擇電影來說更加重要贺待,具體做法可以列一個表,計算加權分:
把相似性和對于每個電影的實際評分相乘零截,就是電影的加權分:
加權后麸塞,還要做少量的計算:總分是每個電影加權分的總和,總相似度是對這個電影有評分的人的相似性綜合涧衙,推薦度是總分/總相似性哪工,目的是排除看電影人數(shù)對于總分的影響
結論在最終一行,就是電影的推薦度(因為是根據(jù)品味相同的人打分加權算出的分弧哎,可以近似認為如果A看了這部電影雁比,預期的評分會是多少)。
有了電影的加權得分撤嫩,通常做法還要設定一個閾值偎捎,如果超過了閾值再給用戶推薦,要不怎么推薦都是爛片序攘,如果這里我們設置閾值為4茴她,那么最終推薦給A的電影就是《尋龍訣》。
我們現(xiàn)在的做法是向用戶推薦電影程奠。當然還可以從另外角度來思考:如果我們把一開始的評分表的行列調換丈牢,其他過程都不變,那么就變成了把電影推薦給合適的受眾瞄沙。因此己沛,要根據(jù)不同場景選擇不同的思考維度慌核。