ZASTOSOWANIE ALGORYTMÓW GRUPOWANIA
W SIECI WWW I E-BIZNESIE
Sprawozdanie III
Algorytmy grupujące w systemach rekomendujących
Czemiel Paulina
Hałaburda Krzysztof
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
4
1
"?"
"?"
"?"
"?"
"?"
"?"
"?"
"?"
1
"?"
"?"
"?"
"?"
3
5
"?"
"?"
"?"
5
1
"?"
"?"
"?"
"?"
"?"
"?"
"?"
"?"
1
1
"?"
"?"
"?"
"?"
"?"
"?"
"?"
5
5
"?"
"?"
"?"
4
4
5
"?"
5
"?"
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
1
4
4
2
1
2
3
5
4
4
1
4
5
5
4