天天看點

基于CF(協同過濾)推薦算法

基于物品的CF(協同過濾)推薦算法

1.1算法簡介

CF(協同過濾)簡單來形容就是利用興趣相投的原理進行推薦,協同過濾主要分兩類,一類是基于物品的協同過濾算法,另一種是基于使用者的協同過濾算法,這裡主要介紹基于物品的協同過濾算法。

給定一批使用者,及一批物品,記Vi表示不同使用者對物品的評分向量,那麼物品i與物品j的相關性為:

基于CF(協同過濾)推薦算法

上述公式是利用餘弦公式計算相關系數,相關系數的計算還有:傑卡德相關系數、皮爾遜相關系數等。

皮爾森相關系數(Pearson correlation coefficient)。其定義如下:

該系數定義的是兩個向量的線性相關程度,取值範圍為[-1,+1],0表示線性無關,絕對值越大線性相關程度越大,正/負表示正/負線性相關。

簡單的給幾個例子:

[1,2,3],[4,5,6]:1

[1,2,3],[6,5,4]:-1

[1,2,3],[1,2,4]:0.98

[1,2,3],[-1,-11,-111]:-0.9

計算使用者u對某一物品的偏好,記使用者u對物品i的評分為score(u,i),使用者u對物品i的協同過濾得分為rec(u,j)。

基于CF(協同過濾)推薦算法

1.2業務實踐

以購物籃子為例,業務問題:根據使用者的曆史購買商品記錄,給使用者推薦一批商品,協同過濾算法實作方法如下。

Step1:計算物品之間的相關系數

記buyersi表示使用者購買商品的向量,記buyersi=(…,bu,i,…) u∈U為,其中U表示全庫使用者集合,bu,i表示使用者u對商品i的得分,定義如下:

基于CF(協同過濾)推薦算法

那麼商品i與商品j的相關系數如下:

基于CF(協同過濾)推薦算法

上述公式是是利用餘弦公式計算相關性,含義是商品的使用者購買向量夾角越小越相似。此外也可以運用皮爾遜、傑卡德、自定義公式計算相關性,這裡不一一列舉。

Step2:計算使用者對商品的協同過濾得分

給定一個使用者u,設該使用者曆史購買商品記錄的向量為historyu=(…,hu,i,…) ,i∈I其中I表示所有商品的集合:

基于CF(協同過濾)推薦算法

計算給定一個物品j的協同過濾得分為:

基于CF(協同過濾)推薦算法

Step3:給使用者推薦商品

通過Step2計算使用者對全庫商品的協同過濾得分,取得分top 10展示給使用者。

1.3執行個體代碼

https://github.com/wolf-bailang/AI-Projects/tree/master/Recommender Systems/Item-Based Collaborative Filtering Recommendation Algorithm

參考來源

[1] https://mp.weixin.qq.com/s/9F_BRgnhAxP-nALtBdIZpg

繼續閱讀