1、內容協同過濾之物品協同過濾git
協同過濾算法是指:利用某興趣相投、擁有共同經驗之羣體的喜愛來推薦用戶感興趣的信息,我的經過合做的機制給予信息至關程度的迴應(如評分)並記錄下來以達到過濾的目的進而幫助別人篩選信息。github
物品協同過濾是指協同過濾算法在進行篩選的時候是以物品之間的類似度做爲衡量,如圖1:算法
電影名編程 |
R測試 |
Toyspa |
RxToyblog |
Jumanjici |
RxJumanjiit |
Grumpiertable |
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
第2、3、四行每一列的意思分別爲:電影名字《Waiting》、某用戶給《Waiting》的打分、《Waiting》與《Toy》之間的類似度(計算方法見第四節)、《Waiting》的打分乘以《Waiting》與《Toy》之間的類似度…以此類推。
第四行給出了類似度累計值和Rx電影名的累計值。
第五行使用Rx電影名的累計值除以類似度累計值。
根據第五行的計算,咱們基於推薦影片的評分分別爲Toy:2.890,Jumanji:1.944,Grumpier:1.685。因而可知,《Toy》應該優先推薦給該用戶。
2、皮爾遜相關度
皮爾遜相關係數普遍用於度量兩個變量之間的相關程度,其值介於-1與1之間。
公式1
3、歐幾里得距離
歐幾里得距離或歐幾里得度量是歐幾里得空間中兩點間「普通」(即直線)距離。
公式2
4、類似度矩陣
衡量物品之間的類似度,這裏咱們使用用戶打分維度做爲類似度特徵,如圖2:
電影名 |
用戶1打分 |
用戶2打分 |
用戶3打分 |
Waiting |
1 |
2 |
3 |
Father |
3 |
2 |
1 |
Heat |
1 |
2.5 |
3 |
圖2
可使用皮爾遜相關度或者歐幾里得距離計算:《Waiting》與《Heat》屬於同一類型,與《Father》屬於不一樣類型。
5、系統構造基本流程
一、 構造用戶打分數據,例如:ID爲87的用戶給部分電影的打分以下;
二、 根據用戶打分數據構造物品類似度矩陣;根據類似度矩陣構造用戶推薦列表,例如給ID爲87的用戶推薦的影片以下:
6、測試代碼、測試數據、參考資料
https://github.com/dongguadan/recommender-system/tree/master/Item-Based-Filter
《集體智慧編程》