協同過濾演算法之基於item

2021-08-18 19:46:55 字數 1988 閱讀 7620

現在要給所有的使用者推薦電影

首先我們要計算電影之間的相似度,相似度用皮爾遜相關來求電影之間的相似性。

求出相識度如下表所示

比如我們要給a推薦電影,那麼根據a看過的電影與其他電影相似度,進行加權評分,得出要給a推薦的電影。

如表是我們要給所有使用者推薦的電影,其中0代表該使用者看過電影,不需要推薦。

從表中我們可以看出給a推薦最高的電影是4,即尋龍訣電影推薦給a使用者。

**如下所示:

電影相似度**:

[plain]view plain

copy

load('score.mat');  

[rowsize,colsize] = size(a);  

sim = zeros(colsize);  

%% pearson相關係數求電影相似性  

for i = 1:colsize-1  

for j = i+1:colsize  

sum1=0;  

sum2=0;  

sum3=0;  

sum4=0;  

sum5=0;  

temp = a(:,i)&a(:,j);  

index = find(temp);  

for k = 1:size(index,1)  

sum1 = sum1 + a(index(k),i)*a(index(k),j);  

sum2 = sum2 + a(index(k),i);  

sum3 = sum3 + a(index(k),j);  

sum4 = sum4 + a(index(k),i)^2;  

sum5 = sum5 + a(index(k),j)^2;  

end  

sum23 = (sum2 * sum3)/k;  

sum42 = sum4 - sum2^2/k;  

sum53 = sum5 - sum3^2/k;  

if (sum42~=0&&sum53~=0)  

sim(i,j)=(sum1 - sum23)/sqrt(sum42 * sum53);  

end  

end  

end  

[plain]view plain

copy

%% 給使用者推薦電影評分  

predict_score = zeros(rowsize,colsize);  

for i = 1:rowsize  

%% 找到使用者已評價的電影的索引  

find_temp = find(a(i,:));  

%% 找到使用者沒有評價的電影索引  

ufind_temp = find(a(i,:)==0);  

%% **使用者沒有評價電影的評分值  

for j = 1:size(ufind_temp,2)  

%% 利用某使用者對所有評價電影乘以未評價電影相似度  

for k=1:size(find_temp,2)  

predict_score(i,ufind_temp(j)) = predict_score(i,ufind_temp(j)) + a(i,find_temp(k))*sim(find_temp(k),ufind_temp(j));  

end  

end  

end  

協同過濾推薦演算法 推薦演算法 基於協同過濾CF

前邊我們已經介紹了推薦演算法裡的基於內容的推薦演算法cb,今天我們來介紹一下基於協同的推薦演算法collaboration filtering cf 協同過濾是乙個利用群體智慧型的乙個演算法,舉乙個簡單的例子,如果放假了你想去北京玩幾天,但是不知道北京都有哪些好玩的,你會怎麼做?你可能會上網查一下的...

協同過濾演算法 基於使用者

背景 使用基於使用者的協同過濾演算法進行 讀取檔案,處理每一行資料,把使用者id和 id轉化為long型別 因為協同過濾模型這兩列為long類 並轉化為datamodel 模型輸入資料 轉化出使用者評分矩陣 沒有的填充0 如下表所示 部分 使用者id id110 100101 102103 1041...

協同過濾 基於使用者的協同過濾itemCF

基於使用者的協同過濾演算法也被稱為最近鄰協同過濾或knn k nearest neighbor,k最近鄰演算法 其核心思想就是,首先根據相似度計算出目標使用者的鄰居集合,然後用鄰居使用者評分的加權組合來為目標使用者作推薦。通常這些演算法都可以總結成三步 首先,使用使用者已有的評分來計算使用者之間的相...