舉例:以推薦使用者電影為例,假設有100w使用者,10w電影,使用者的id為uid1,uid2,uid3... 電影的id為mid1,mid2,mid3....
(1)畫**,橫座標表示所有電影,縱座標表示所有使用者,交叉點為某個使用者喜歡某部電影
mid1
mid2
mid3
mid4
mid5……
mid10w
uid111
11uid211
11uid311
1uid411
1……uid100w11
如表所示,1表示使用者喜歡這部電影,所有的資料來源我們都已經處理完畢
ps:a.資料來源來自於所有的伺服器落地資料,包括但不僅限於db、日誌;
(2)基於上面的資料,我們來拿出所有使用者的喜歡的電影集合
uid1:
uid2:
uid3:
uid4:
(3)找到每個uid的mid集合交集最多的資料
uid1交集最多的是uid2,uid3,uid4
uid2交集最多的是uid1,uid3
uid3交集最多的是uid1,uid2
uid4交集最多的是uid1
ps:這步可以優化為,直接先找看看有沒有哪個uid的mid集合是直接包含了要查詢的uid的集合的(即該使用者的mid集合是其他使用者mid集合的子集/真子集),如果有,則該集合就是我們要找的集合;如果沒有,則進行如上演算法
例如,這裡的uid3,可以看到,uid3的mid集合就是uid1和uid2的mid集合的真子集,所以,我們就可以直接判斷,和uid3交接最多的就是uid2和uid3
(4)計算交集最多的集合跟自己集合的差集,如,
uid1和uid2的差集: - = ,以此類推
uid1和uid3的差集是空集,uid1和uid4的差集也是空集
拿著這些所有的差集做並集:uid的差集並集集合是
以此類推:
要推薦給uid2的電影集合為
要推薦給uid3的電影集合為
要推薦給uid4的電影集合為
協同過濾以下有幾個難點:
1.如何定義乙個使用者對一件事物持有的態度
2.這裡把對事物的態度簡化了,其實使用者對一件事物的態度應該是個權值,以這個看電影為例子,我們可以把使用者點讚作為10分,瀏覽作為3分等,但是這樣做就增加了整個推薦系統的複雜度
3.最重要也是最難的一點,該演算法必須要有大資料的支援
參考文章:
協同過濾推薦演算法 協同過濾推薦演算法總結
推薦演算法具有非常多的應用場景和商業價值,因此對推薦演算法值得好好研究。推薦演算法種類很多,但是目前應用最廣泛的應該是協同過濾類別的推薦演算法,本文就對協同過濾類別的推薦演算法做乙個概括總結,後續也會對一些典型的協同過濾推薦演算法做原理總結。推薦演算法概述 1 基於內容的推薦 這一類一般依賴於自然語...
推薦演算法之協同過濾
協同過濾的定義 通過找到興趣相投,或者有共同經驗的群體,來向使用者推薦感興趣的資訊。舉例 以推薦使用者電影為例,假設有100w使用者,10w電影,使用者的id為uid1,uid2,uid3.電影的id為mid1,mid2,mid3.1 畫 橫座標表示所有電影,縱座標表示所有使用者,交叉點為某個使用者...
協同過濾推薦演算法 推薦演算法 基於協同過濾CF
前邊我們已經介紹了推薦演算法裡的基於內容的推薦演算法cb,今天我們來介紹一下基於協同的推薦演算法collaboration filtering cf 協同過濾是乙個利用群體智慧型的乙個演算法,舉乙個簡單的例子,如果放假了你想去北京玩幾天,但是不知道北京都有哪些好玩的,你會怎麼做?你可能會上網查一下的...