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