ZASTOSOWANIE ALGORYTMÓW GRUPOWANIA
W SIECI WWW I E-BIZNESIE
Sprawozdanie III
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 |