Informatyka Systemów Autonomicznych

Transkrypt

Informatyka Systemów Autonomicznych
Ogłuszka Michał 133311
Oddano:
5-VI-2007
Informatyka Systemów Autonomicznych
Systemy rekomendujące na przykładzie wyszukiwarki informacji
dla agenta turystycznego
Prowadzący:
dr inż. Marek Piasecki
Spis treści
1 Wstęp
2 Tworzenie systemu rekomendującego
2.1 Ogólne spojrzenie na system. . . . . .
2.2 Wymagania funkcjonalne . . . . . . .
2.2.1 Aplikacja klienta . . . . . . . .
2.2.2 Aplikacja serwera . . . . . . . .
2.3 Implementacja algorytmów filtrujących
2.3.1 Filtrowanie kontekstowe . . . .
2.3.2 Filtrowanie kolaboracyjne . . .
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
3
3
4
5
5
5
3 Analiza
6
4 Podsumowanie
7
5 Literatura
7
1
Wstęp
”Systemem rekomendującym nazywamy system, który z wielkiej przestrzeni możliwych opcji wybiera i prezentuje użytkownikowi te, które opowiadają jego potrzebom.”
Systemy rekomendujące to specyficzny typ aplikacji filtrujących dane. Ich zadaniem jest przedstawienie informacji (filmów, książek, muzyki, wiadomości), które odpowiadają zainteresowaniom użytkownika. Aby tego dokonać, profil użytkownika jest porównywany z pewnymi wzorcami. Występują
dwa typy algorytmów filtrowania: Content-based filtering, oraz collaborating filtering. Pierwszy bazuje
na wyszukiwaniu w opisie przedmiotu informacji odpowiadającemu bezpośrednio informacją umieszczonym w profilu użytkownika, natomiast w CF na analizie zachowań użytkowników o podobnych
preferencjach.Dlatego przy tworzeniu profilu użytkownika brane są pod uwagę dwa podejścia przy
zbieraniu danych: aktywną, oraz pasywną. W podejściu aktywnym uwzględniamy:
• Ocenę użytkownika na temat przedmiotu na skali.
• Ocenę całej kolekcji od ulubionych, do nielubianych.
• Prezentowanie użytkownikowi dwóch przedmiotów i nakazanie wybrania lepszego.
• Poproszenie użytkownika o stworzenie listy rzeczy lubianych i nielubianych.
Natomiast podejście pasywne wykorzystuje:
• Obserwowanie przeglądanych przedmiotów.
• Analizowanie częstości przeglądanych przedmiotów przez konkretnych użytkowników.
• Zapamiętywanie wybranych (zamówionych) przedmiotów.
• Analizowanie sieci powiązań socjalnych między użytkownikami.
Zaletą rozwiązania pasywnego jest, to, że w przeciwieństwie do podejścia aktywnego, nie polegamy
na opinii użytkownika, która może być nieszczera, a na np. czasie jaki poświęcił na analizę danego
przedmiotu. Jedynie zainteresowany użytkownik poświęci dużo czasu na analizę wybranego artykułu.
Analiza akcji użytkownika, niestety nie pozwala na poznanie jego faktycznej opinii. Najczęściej stosowanymi w tej chwili są systemy hybrydowe, uwzględniające zarówno podejście kontekstowe jak i
pasywne.
Wyróżniamy dwa sposoby reprezentacji profilu użytkownika:
• Pamięciowe (memory-based)
• Modelowe (model-based)
W podejściu opartym na pamięci system zapamiętuje interakcje z użytkownikiem jako historię (zachowań, nawigacji), lub macierz ocen użytkownik-przedmiot. Wśród systemów opartych na historii
do najpopularniejszych należy przedstawiany już Amazon. Podobne podejście stosuje WebSell (Cunningham et al. 2001, który w profilu użytkownika przechowuje dwie listy: jedną dla zakupionych
przedmiotów ocenionych pozytywnie, drugą - dla przedmiotów ocenionych negatywnie. W tym profilu nie stosuje się etapu uczenia: zebrane informacje są wykorzystywane w procesie jego eksploatacji.
Zależnie od używanej techniki wykorzystywane są podobieństwa między:
• przedmiotami
• profilami
2
Takie podejście wymaga dużej mocy obliczeniowej i pamięci fizycznej, ponieważ w dużych systemach
występuje olbrzymi zestaw danych.
Alternatywą dla podejścia opartego na pamięci stanowi stworzenie modeli explicite. Proces uczenia
takiego modelu (najczęściej, kiedy użytkownik nie jest podłączony do systemu) może być długi, natomiast sam proces rekomendacji, czyli szacowania aktywnego przedmiotu, staje się relatywnie krótszy.
Najprostszym rozwiązaniem wydaje się wektor średni. W momencie rekomendacji zamiast porównywać aktywny przedmiot ze wszystkimi innymi, obliczamy odległość w stosunku do wektora średniego,
którego każdy z atrybutów reprezentuje średnią wartości atrybutu wszystkich innych przedmiotów,
którymi interesował się aktywny użytkownik. Wartości mogą być typu binarnego (prawda lub fałsz),
gdy wskazują obecność preferowanej cechy, lub typu rzeczywistego, kiedy symbolizują częstotliwość,
odpowiedniość lub prawdopodobieństwo występowania określonej cechy.
Systemy rekomendujące są powszechnie wykorzystywane, również przez firmy komercyjne np. :
• Amazon
• Hollywood Video
• iLike
• Loomia
• SonicFaith
Istnieją również gotowe biblioteki pozwalające na wykorzystanie CF w aplikacji, bądź na stronie
internetowej:
• Taste http://sourceforge.net/projects/taste/
• Cofi http://www.nongnu.org/cofi/
• SUGGEST http://www-users.cs.umn.edu/ karypis/suggest/
2
Tworzenie systemu rekomendującego
2.1
Ogólne spojrzenie na system.
Projekt agenta organizującego wyjazdy turystyczne jest bardzo rozbudowany. Powinien uwzględniać zarówno organizacje czasu, jak i propozycji co do miejsca, oraz rodzaju wypoczynku. Musi
owzględniać osobiste preferencje i zainteresowania. W poniższym referacie zdecydowałem się skupić na
zaprojektowaniu jednego z elementów takiego systemu, czyli przedstawienia najlepszych możliwości,
miejsc oraz sposobów spędzania czasu. Dzięki wykorzystaniu systemu rekomendującego można zaprojektować system, który ułatwi ten wybór. Jego zadaniem będzie przeanalizowanie wymagań klienta i
przedstawienie mu zbioru możliwości. System zakłada powstanie serwisu, który gromadzi informacje o
obiektach turystycznych, miejscach, miastach, krajach, oraz oceny użytkowników. Projektując system
osobistego agenta turystycznego zakładamy, że klient komunikuje się z serwerem poprzez internet. Po
otrzymaniu informacji od klienta o jego wstępnych preferencjach i uwzględnieniu ocen użytkowników
już zarejestrowanych, system przedstawia klientowi wybrane propozycje.
2.2
2.2.1
Wymagania funkcjonalne
Aplikacja klienta
Aplikacja kliencka łączy użytkownika z serwerem. Ma za zadanie pobierać informacje, oraz przedstawić je użytkownikowi. Dodatkowo powinna umożliwiać zebranie informacji o użytkowniku, oraz
jego ocenę przedstawionej propozycji.
3
2.2.2
Aplikacja serwera
Serwer analizuje informacje od użytkowników, oraz wysyła wynik swojej analizy. Powinna umożliwiać:
• Obsługę klientów
• Przechowywanie informacji o ocenach
• Ocenę informacji, zarówno przez CF jak i kontekstowo
• Analizę trafności wyników
2.3
2.3.1
Implementacja algorytmów filtrujących
Filtrowanie kontekstowe
Jak opisano we wstępie, filtrowanie kontekstowe bazuje na analizie określonych atrybutów. Biorąc
pod uwagę agenta organizującego wyjazdy wakacyjne, możemy wyszczególnić szereg atrybutów, które
algorytm powinien uwzględnić:
• wiek
• dochód
• stan cywilny
• zainteresowania
• preferencje zamieszkania
• konkretne informacje
W przypadku tak skomplikowanego zapytania trudno wyszczególnić tu pojedynczą cechę, na którą
warto zwrócić uwagę. Ważnym elementem będzie zdobycie informacji od samego użytkownika, o jego
zainteresowaniach i preferencjach. Trudno wysyłać kogoś, kto nie umie pływać na rejs po mazurach, a
rodziny z dziećmi na wycieczkę po górach. Dlatego pierwszym krokiem jest wylistowanie użytkownikowi możliwych rodzajów wypoczynku. Każdy z nich powinien zostać przez niego odpowiednio oceniony.
Aby jednak uniemożliwić przedstawienie użytkownikowi tylko jednego typu wypoczynku, w przypadku kiedy np. tylko wakacje nad morzem ocenił bardzo wysoko, można przeanalizować zestaw cech
wybranych przez użytkownika i z każdego przedstawić proporcjonalną liczbę propozycji.
2.3.2
Filtrowanie kolaboracyjne
Podejście kolaboracyjne pozwala na generowanie wyników, biorąc pod uwagę opinie ludzi o podobnych preferencjach. Podejście pamięciowe wymaga analizy dużego zestawu danych, jednak biorąc
pod ograniczoną liczbę użytkowników, oraz to, że ich profile aktualizowane są często, wybierzemy tą
metodę filtrowania. Dodatkowym atutem będzie łatwość implementacji.
Proces generowania rekomendacji może być podzielony na trzy etapy:
1. przyznać wagi wszystkim użytkownikom systemu na bazie podobieństwa
2. wybranie podzbioru użytkowników, którzy będą stanowić bazę
3. dokonać rekomendacji na bazie podzbioru
4
MSD to algorytm oceny podobieństwa wykorzystany w systemie muzycznym Ringo.
msda,u =
Pm
i=1 (ra,i
− ru,i )2
m
Algorytm mierzy średnia różnicę kwadratową, między użytkownikiem aktywnym ”a”, a użytkownikiem ”u”. Gdzie m jest liczbą przedmiotów ocenionych przez obydwu użytkowników, r(u,i) to waga
przyznana przez użytkownika u (analogicznie użytkownika a) przedmiotowi i. Wynik zawiera się między 0, a 1. Jeśli użytkownik ocenił wszystkie przedmioty w sposób identyczny, to MSD = 1, jeśli wręcz
przeciwnie to MSD = 0. Ten algorytm ma jedną przewagę nad innym, jest łatwy w implementacji, a
przez co prosty w testowaniu i wykorzystaniu.
W kroku drugim musimy wybrać użytkowników. Teoretycznie moglibyśmy uwzględnić wszystkich
użytkowników w bazie, jednak często może się zdarzyć, że system musi radzić sobie z dużą liczbą
użytkowników. Jedną z technik jest wybór n najlepszych rozwiązań. Będzie to dobre rozwiązanie,
ponieważ mając ograniczoną liczbę użytkowników, nie możemy pozwolić sobie na wystąpienie wśród
nich osobników zupełnie różniących się w gustach.
Krok trzeci to dokonanie oceny. Kiedy już wybraliśmy otoczenie, oceny użytkowników brane są pod
uwagę w trakcie przedstawiania propozycji klientowi. Najprostszym i najsensowniejszym rozwiązaniem
będzie tu przedstawienie użytkownikowi posortowanej listy według podobieństw użytkowników. Można
ewentualnie przedstawić według ocen, jednak przy niewielkiej liczbie użytkowników i ocen, metoda
druga może być nieskuteczna.
3
Analiza
Aby skutecznie ocenić zaprojektowany system należy uwzględnić następujące kroki:
1. Zidentyfikować cele systemu.
2. Zidentyfikować podstawowe zadania systemu.
3. Zidentyfikować zbiór danych.
4. Określić metryki dla systemu.
5. Przeprowadzić eksperyment.
Sam system nie przedstawia żadnej wartości. Stają się dopiero wartościowe, w chwili gdy są w
stanie pomóc swojemu użytkownikowi. Dlatego ważnym elementem jest określenie co stanowi jego
główny cel. Mogą to być np.: usprawnienie ekonomii, bądź wartości psychologiczne. Naszym będzie na
pewno poprawa standardu życia. Jeśli system będzie popularny, będzie to oznaczało, że spełnił swój
cel.
Po sprecyzowaniu celu, kolejnym krokiem jest zidentyfikowanie sposobu w jaki użytkownik będzie
komunikował się z systemem. Może opierać się to na kilku scenariuszach:
1. Użytkownik chce dokonać wyboru, który ma określony koszt i konsekwencje.
2. Użytkownik ma określoną liczbę zasobów i czasu, więc chce poznać jak najbardziej wartościowe
elementy, zgodne z tymi ograniczeniami.
3. Użytkownik chce poznać wszystkie zdarzenia, zgodne z pewnym obszarem zainteresowań.
4. Użytkownik chce przeanalizować pewien strumień informacji pozostawiając informacje wartościowe, a odrzucając tez bez żadnej wartości.
5. Użytkownik posiada już element i chce się dowiedzieć, czy jest warty wykorzystania.
5
6. Użytkownik chce określić czy dany element spełnia wartość progową.
W naszym systemie zdecydowanie odpadają punkty 3,4 i 5. Ponieważ nie ma tu krytycznych
problemów, punkt 1 również traci na znaczeniu. Liczba zasobów, które posiada użytkownik decydując
się na wycieczkę, powoduje wybór punktu 2.
Aby określić zbiór danych należy zdecydować się, czy analiza może uwzględniać wersję offline, czy
musi być testowana na żywych użytkownikach. Wersje off-line, jak można się domyśleć wykorzystuje
szeregi algorytmów generowania prawdopodobieństwa, jednak posiada podstawową wadę. Musi bazować na obiektywnej ocenie. Dlatego zamiast tego można przeprowadzić eksperyment, przedstawiając
w sposób kontrolowany system pewnemu zbiorowi użytkowników, oraz badając zachowania systemu.
Określą oni zbiór danych wejściowych, a następnie możemy przetestować system w trybie off-line
wykorzystując te dane.
Występują dwa podstawowe rodzaje metryk służące do oceny systemów. Pierwsza to mean absolute error, należąca do metod statystycznych, która porównuje oszacowane wyniki z aktualnymi.
Ponieważ MAE traktuje błąd z każdego elementu w zbiorze testowym z taką samą wartością, jest
ona najbardziej przydatna w scenariuszu 4. Druga to precision and recall, gdzie zbiór dzielony jest na
dwie klasy: istotne i nieistotne. Precyzja to stosunek liczby elementów wybranych, do liczby elementów wybranych. Przypomnienie (Recall) to stosunek istotnych elementów wybranych do wszystkich
elementów istotnych.
4
Podsumowanie
Systemy rekomendujące stają się coraz bardziej popularne. I choć na początku Amazon twierdził,
że stosuje collaborating filtering wyświetlając informacje o produktach, które zakupili klienci, kupujący
właśnie oglądany produkt, obecnie systemy są znacznie bardziej rozbudowane. W referacie chciałem
przedstawić podstawowe pojęcia, oraz problemy, które należy uwzględnić projektując taki system.
Pominięta został opis implementacji, oraz eksperyment, z racji niemożliwości jego przeprowadzenia.
Sam temat agenta turystycznego nie został również wyczerpany.
5
Literatura
[1] Jonathan L.Herlocker Evaluating Collaborative Filtering Recommender Systems
[2] Lukas Brozovsky Recommender System for Online Dating Service
[3] Magnus Mortensen Design and evaluation of a Recommender Service
[4] http://en.wikipedia.org/wiki/Recommendation system
6