MovGen – genetyczne rekomendacje filmów

- autor: tsissput

MovGen – cel projektu

Celem mojego projektu było przygotowanie prototypu systemu rekomendowania filmów, który wykorzystywałby techniki inspirowane biologią, czyli algorytmy genetyczne (http://en.wikipedia.org/wiki/Genetic_algorithm).

O projekcie

Ponieważ ostatnio pracuję nad genetycznym algorytmem rekomendacji chciałem w ramach tego projektu sprawdzić na niewielkiej próbie danych jakie efekty rekomendacji można uzyskać stosując takie podejście. Jako zbiór danych postanowiłem wykorzystać filmy, które lubią moi znajomi na Facebooku. Aby taki zbiór uzyskać wykorzystałem Graph API korzystając z PHP SDK oraz JS SDK. Aplikacja, którą utworzyłem na Facebooku jedynie służyła autoryzacji i autentykacji mojego użytkownika, aby potem było możliwe pobranie żądanych danych. Dane były pobierane przy pomocy skryptów napisanych w PHP przy wsparciu Symfony2.

Łącznie mój zbiór zawierał około 1500 wpisów dotyczących filmów, lecz były to tylko tytuły, dla których potrzebowałem cechy opisujące te filmy. Postanowiłem wykorzystać zbiór IMDb, lecz nie jest on dostępny poprzez oficjalne API, lecz poprzez nieoficjalne i ograniczone IMDb API. Pozwoliło mi to na uzyskanie informacji o aktorach, reżyserach, gatunkach, roku ukazania się, scenarzystach, językach. Po dopasowaniu danych otrzymałem zbiór około 500 filmów z ich atrybutami, które zapisałem w bazie danych do późniejszego wykorzystania przez algorytm rekomendacji.

Algorytm rekomendacji

Idea algorytmu jest bardzo prosta, lecz bardzo wrażliwa na jakość wyników. W pierwszej fazie wybierani są kandydaci na rodziców rekomendowanego filmu. Przyjąłem, że będą to dwa filmy, które sam polubiłem, a ich ranking IMDb jest najwyższy – takie założenie może jednak nie być najlepszym podejściem, ponieważ nic nie mówi o jakości danych cech tych filmów. Następnie dla tych dwóch filmów tworzę potomny film, który powstaje z krzyżowania cech – np. biorę trochę aktorów z jednego filmu, trochę z drugiego i tworzę z tego zbiór aktorów. W podobny sposób tworzę inne cechy. Otrzymany film staram się dopasować do istniejącego filmu moich znajomych przy pomocy podobieństwa każdej z cech. Dodając podobieństwa wszystkich cech otrzymuję najlepszy film, który jest wynikiem rekomendacji.

Wyniki

Niestety wyniki rekomendacji nie są zadowalające, ponieważ przyjąłem ograniczony zbiór filmów wśród których szukam podobieństwa. Sam proces przygotowania danych jest bardzo powolny, więc niemożliwe było przygotowanie rekomendacji on-line, ponieważ zebranie wszystkich znajomych, ich filmów, a następnie informacji o tych filmach trochę trwa. Przyjęta funkcja liczenia podobieństwa niestety również nie skutkowała w najlepszych wynikach, również wybór kandydatów na rodziców na podstawie oceny IMDb nie jest oceną danych i może powodować wybór osobników, z których ciężko wyewoluować ciekawy przypadek. Ale prace nad tym będą dalej kontynuowane.

Autor: Jacek Wasilewski

Advertisements

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d blogerów lubi to: