基於物品做推薦系統的方法
一、內容協同過濾之物品協同過濾
協同過濾算法是指:利用某興趣相投、擁有共同經驗之群體的喜好來推薦用戶感興趣的信息,個人通過合作的機制給予信息相當程度的回應(如評分)並記錄下來以達到過濾的目的進而幫助別人篩選信息。
物品協同過濾是指協同過濾算法在進行篩選的時候是以物品之間的相似度作為衡量,如圖1:
電影名 |
R |
Toy |
RxToy |
Jumanji |
RxJumanji |
Grumpier |
RxGrumpier |
Waiting |
4.7 |
0.171 |
0.808 |
0.212 |
0.996 |
0.077 |
0.362 |
Father |
2.7 |
0.009 |
0.024 |
0.102 |
0.275 |
0.085 |
0.230 |
Heat |
1.0 |
0.165 |
0.165 |
0.7 |
0.7 |
0.203 |
0.023 |
總計 |
|
0.345 |
0.997 |
1.014 |
1.971 |
0.365 |
0.615 |
歸一化 |
|
|
2.890 |
|
1.944 |
|
1.685 |
圖1
第二、三、四行每一列的意思分別為:電影名字《Waiting》、某用戶給《Waiting》的打分、《Waiting》與《Toy》之間的相似度(計算方法見第四節)、《Waiting》的打分乘以《Waiting》與《Toy》之間的相似度…以此類推。
第四行給出了相似度累計值和Rx電影名的累計值。
第五行使用Rx電影名的累計值除以相似度累計值。
根據第五行的計算,我們基於推薦影片的評分分別為Toy:2.890,Jumanji:1.944,Grumpier:1.685。由此可見,《Toy》應該優先推薦給該用戶。
二、皮爾遜相關度
皮爾遜相關系數廣泛用於度量兩個變量之間的相關程度,其值介於-1與1之間。
公式1
三、歐幾裏得距離
歐幾裏得距離或歐幾裏得度量是歐幾裏得空間中兩點間“普通”(即直線)距離。
公式2
四、相似度矩陣
衡量物品之間的相似度,這裏我們使用用戶打分維度作為相似度特征,如圖2:
電影名 |
用戶1打分 |
用戶2打分 |
用戶3打分 |
Waiting |
1 |
2 |
3 |
Father |
3 |
2 |
1 |
Heat |
1 |
2.5 |
3 |
圖2
可以使用皮爾遜相關度或者歐幾裏得距離計算:《Waiting》與《Heat》屬於同一類型,與《Father》屬於不同類型。
五、系統構造基本流程
1、 構造用戶打分數據,例如:ID為87的用戶給部分電影的打分如下;
2、 根據用戶打分數據構造物品相似度矩陣;根據相似度矩陣構造用戶推薦列表,例如給ID為87的用戶推薦的影片如下:
六、測試代碼、測試數據、參考資料
https://github.com/dongguadan/recommender-system/tree/master/Item-Based-Filter
《集體智慧編程》
基於物品做推薦系統的方法