background image

 

ZASTOSOWANIE ALGORYTMÓW GRUPOWANIA  

W SIECI WWW I E-BIZNESIE 

 
 
 
 

Sprawozdanie III 

 

 

Algorytmy grupujące w systemach rekomendujących

 

 
 
 
 
 
 

Czemiel Paulina 

Hałaburda Krzysztof 

 
 
 
 

background image

Zadanie 1 
Dla podzbioru danych MovieLens zawierających 50 uŜytkowników i ich oceny dla 10 filmów: 

 

podzielić dane na zbiór uczący (45) i testowy (5),  

 

w zbiorze uczącym wyodrębnić grupy za pomocą algorytmu EM  

 

oszacować wybrane oceny w zbiorze testowym (po jednej dla kaŜdego uŜytkownika):    

dla kaŜdego uŜytkownika ze zbioru testowego: 

 

na podstawie odległości euklidesowej przydzielamy grupę  

 

pobieramy odpowiednią wartość średnią tej grupy i przydzielamy ją dla nieznanej oceny  

 
Rozwiązanie 

 

Otrzymane dane grup: 
Number of clusters selected by cross validation: 2 

f1 
  mean        3.6318  1.9928 
  std. dev.   0.9677  1.1139 
f2 
  mean        3.4999  3.5004 
  std. dev.   0.2767  0.0147 
f3 
  mean             0       0 
  std. dev.        0       0 
f4 
  mean             4       4 
  std. dev.        0       0 
f5 
  mean        3.3333  3.3333 
  std. dev.   0.1231  0.3381 
f6 
  mean           3.5  3.4999 
  std. dev.   0.3084  0.2174 
f7 
  mean        4.0263  3.8235 
  std. Dev.   0.4208  0.3829 
f8 
  mean             3       3 
  std. dev.        0       0 
f9 
  mean             4       4 
  std. dev.        0       0 
f10 
  mean        4.4289  4.4262 
  std. dev.   0.2088  0.0318 
Time taken to build model (full training data) : 0.52 seconds 
 
Profil po zaokr

ą

gleniu: 

f1  mean    4  2 
f2  mean    3  4 
f3  mean    0  0 
f4  mean    4  4 
f5  mean    3  3 
f6  mean    4  3 
f7  mean    4  4 
f8  mean    3  3 
f9  mean    4  4 
f10 mean    4  4 
 

Zbiór testowy: 
f1 

f2 

f3 

f4 

f5 

f6 

f7 

f8 

f9 

f10 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

"?" 

background image

Kod funkcji liczącej odległość euklidesową i zwracająca bliŜszą ocenę: 
 

function licz_ocene($i,$aOceny,$aProfile){ 
 

$iPodPierwiastkiem[0]=0; 

 

$iPodPierwiastkiem[1]=0; 

 

for($f=1;$f<count($aOceny);$f++){ 

 

 

if($f<>$i&&$aOceny[$f]<>"?"){ 

 

 

 

$iPodPierwiastkiem[0]+=pow(($aOceny[$f]-$aProfile[$f][0]),2); 

 

 

 

$iPodPierwiastkiem[1]+=pow(($aOceny[$f]-$aProfile[$f][1]),2); 

 

 

 

 

if(sqrt($iPodPierwiastkiem[0])<sqrt($iPodPierwiastkiem[1])){ 

 

 

return 0; 

 

}return 1; 

 

 

 

 
 
Tabela wyników wyliczona dla f1: 
 

nr   ocena rzeczywista    ocena oszacowana