EKSPLORACJA ZASOBÓW INTERNETU - MIŁOSZ KADZIŃSKI LABORATORIUM III ANALIZA UśYTKOWANIA SIECI 1. Plan laboratorium III - Drzewo i tablica sufiksów - Query expanding - Wybór cech - Formaty pliku log serwera - Wstępne przetwarzanie - Eksploracyjna analiza (podstawy) - Omówienie zadań do samodzielnego wykonania (analiza pliku logu; 17pkt.) - Omówienie typu zadań na koło 10 stycznia - Sprawdzenie zadania wyszukiwarka TF/IDF 2. Drzewo i tablica sufiksów - umoŝliwia efektywną obsługę zapytań, które wymagają wyszukania w tekstach ciągów słów lub ciągów znaków ; - indeksowany tekst jest traktowany jako jeden długi ciąg znaków; - prefiks określenie początkowych znaków ciągu (np. S dla U jeśli U=SU ); sufiks określenie końcowych znaków ciągu (np. S dla U jeśli U=U S) Suffix trie: Struktura drzewiasta do przechowywania ciągów znaków, której kaŝdy moŝliwy sufiks moŝna znaleźć na ścieŝce od korzenia do któregoś liścia. cacao$ suffix S(i) I cacao$ 0 acao$ 1 cao$ 2 ao$ 3 o$ 4 $ 5 Drzewo sufiksów (suffix tree) to bardziej zwięzła reprezentacja struktury suffix trie (etykiety przesunięte do krawędzi, a kaŝdy węzeł z pojedynczym potomkiem jest eliminowany (poprzez połączenie węzła z potomkiem w pojedynczy węzeł). - rozmiar maksymalnie 2n - łatwe do zaprogramowania - czas tworzenia O(n) - 1 -
Podstawowe zastosowania: - znalezienie podciągu o długości m; - najdłuŝsza powtarzająca się sekwencja znaków; - najdłuŝszy wspólny podciąg kilku ciągów znaków (alibaba.taliban.) - najdłuŝszy palindrom (what do you think, do geese see God? -> whatdoyouthink dogeeseseegod.dogeeseseegodknihtuoytahw) Tablica sufiksów suffix S(i) i Suffix S(i) SA[j] cacao$ 0 $ 5 acao$ 1 a cao$ 1 cao$ 2 -> sort -> a o$ 3 ao$ 3 ca cao$ 0 o$ 4 ca o$ 2 $ 5 o$ 4 Tablica sufiksów to tablica indeksów posortowanych sufiksów Tablica sufiksów jest zawsze permutacją indeksów sufiksów Algorytm qsufsort 3. Query expanding Reformułowanie zapytania, by ulepszyć odpowiedź (jakość wyszukanych stron, dokumnetów) - znalezienie synonimów i ich szukanie; - znalezienie form morfologicznych wyrazu; - poprawienie błędów (literówek) i szukanie wyników dla prawidłowego słowa; 4. Wybór cech - znalezienie podzbioru atrybutów, które najlepiej opisują zbiór dokumentów pod względem zadania klasyfikacji; - spróbuj wszystkie podzbiory i wybierz ten, który maksymalizuje dokładność niepraktyczne; - załoŝenie: atrybuty są niezaleŝne; Entropia: - S zbior wektorów dokumentów z k klas C1,, Ck (liczba dokumentów (wektorów) to S = S1 + + Sk, gdzie Si jest zbiorem dokumentów naleŝących do klasy Ci. Entropia jest średnią informacją (average information) potrzebną do przewidywania klasy dla dowolnego wektora w S. Jest zdefiniowana jako: H s = k i= 1 P C ) log i P C (, 2 ( i ) - 2 -
gdzie prawdopodobieństwo klasy Ci jest obliczane jako P(Ci) = Si / S. ZałóŜmy, Ŝe term A ma m wartości v1, v2,, vm. Wtedy A dzieli zbiór S na m podzbiorów A1,., Am, kaŝdy zawierający dokumenty, które mają wartość vi dla atrybutu A. Entropia podziału opartego na atrybucie A jest zdefiniowana jako: H A m i ( S / A1,..., Am) = H ( Ai ), i= 1 S gdzie H(A i ) jest entropią rozkładów klas w zbiorze A i. Zysk informacji mierzy jakość podziału odpowiedniego atrybutu jako róŝnicę entropii:. zysk( A) H ( S) H ( S / A1,..., Am) =. 5. Analiza uŝytkowania sieci na podstawie plików log serwera Która strona jest najpopularniejszym punktem wejścia? W jakiej kolejności strony są odwiedzane? Które inne witryny skierowały uŝytkowników do naszej witryny? Ile stron odwiedzają uŝytkownicy podczas typowej wizyty? Jakie jest obciąŝenie serwera w danej godzinie, dniu tygodnia? Jak długo typowy gość przebywa na naszej stronie? Która strona jest najczęściej punktem wyjścia uŝytkowników? Plik log serwera: - dla kaŝdego Ŝądania z przeglądarki przesłanego do serwera, automatycznie generowana jest odpowiedź, a jej wynik jest zapisywany w plikach log; -odpowiedź to rekord zapisany w pojedynczej linii, który jest dokłączony do pliku tekstowego ASCII znajdującego się na serwerze; 141.243.1.172 [29:23:53:25] "GET /Software.html HTTP/1.0" 200 1497 query2.lycos.cs.cmu.edu [29:23:53:36] "GET /Consumer.html HTTP/1.0" 200 1325 tanuki.twics.com [29:23:53:53] "GET /News.html HTTP/1.0" 200 1014 KaŜda linia zawiera następujące pola: - pole adresu IP hosta (jeśli jego nazwa jest w serwerze DNS, to zamiast IP jest nazwa hosta); - pole data/czas (tu [DD:HH:MM:SS], zwykle [DD/Mon/YYYY:HH:MM:SS offset] 09/Jun/1988:03:37:00-0500); - pole Ŝądania HTTP (metoda http (najpopularniejsza GET; moŝe być HEAD, PUT, POST), URL (identyfikator zasobu); nagłówek, protokół); - pole kodu odpowiedzi HTTP (2xx sukces, 4xx błąd; np. 200 ok., 204 brak zawartości, 400 nieprawidłowe zapytanie, 404 nie znaleziono 500 błąd wewnętrzny serwera; patrz: Wiki Kod odpowiedzi http); - pole wielkości transferu rozmiar pliku (strony, pliku graficznego, itp.) w bajtach wysłanego przez serwer do przeglądarki klienta (tylko Ŝądania GET, które zostały zakończone pomyślnie mają dodatnie wartości w polu wielkość transferu; w przeciwnym razie - lub 0); - 3 -
Plik log moŝe mieć róŝne formaty, które zmieniają się w zaleŝności od konfiguracji sieci: Format CLF (common log format) - pole adresu IP hosta, pole nazwy uŝytkownika (przechowywanie informacji o toŝsamości, jeśli serwer sprawdza toŝsamość rzadko uŝywane), pole authuser (za kogo uŝytkownik się podaje, aby uzyskać dostęp do katologów zabezpieczonych hasłem), pole daty/czasu, pole Ŝądania http, pole kodu odpowiedzi, pole wielkości transferu; Format ECLF (extended CLF) - na końcu dwa dodatkowe pola - pole adresu strony odsyłającej - pole przeglądarki klienta 149.1xx.120.116 smithj [28/OCT/2004:20:27:32-5000] GET /Default.htm http/1.1 200 1270 http:/www.dataminingconsultant.com/ Mozilla /4.0+ (compatible;+msie+6.0;+windows+nt+5.0) Nazwa uŝytkownika - - Authuser smithj; Adres strony odysłającej - http:/www.dataminingconsultant.com Przeglądarka: Mozilla/4.0 Format Microsoft IIS 6. Wstępne przetwarzanie danych do analizy Dlaczego musimy przetworzyć plik log zanim przystępimy do analizy? - wyczyszczenie danych i filtrowanie (usunięcie ze zbioru Ŝądań automatycznie wygenerowanych) - wydobycie zmiennych (jeśli to konieczne) z pól złoŝonych - z pola data/czas wydobądź zmienną data i czas - z pola Ŝądania http, wydobądź metodę Ŝądania, URL i wersję protokołu; - utwórz timestamp (znacznika czasu) dla kaŝdego wpisu (oblicz ile dni między wpisem a punktem odniesienia; pomnóŝ przez 86400; dodaj do tego czas w sekundach od północy do chwili, która jest reprezentowana przez czas we wpisie pliku log); - odfiltruj dodatkowe Ŝądania wpbfl2-45.gate.net [29:23:54:15] "GET / HTTP/1.0" 200 4889 wpbfl2-45.gate.net [29:23:54:16] "GET /icons/circle_logo_small.gif HTTP/1.0" 200 2624 wpbfl2-45.gate.net [29:23:54:18] "GET /logos/small_gopher.gif HTTP/1.0" 200 935 wpbfl2-45.gate.net [29:23:54:19] "GET /logos/small_ftp.gif HTTP/1.0" 200 124 wpbfl2-45.gate.net [29:23:54:19] "GET /icons/book.gif HTTP/1.0" 200 156 wpbfl2-45.gate.net [29:23:54:19] "GET /logos/us-flag.gif HTTP/1.0" 200 2788 wpbfl2-45.gate.net [29:23:54:20] "GET /icons/ok2-0.gif HTTP/1.0" 200 231 - dla metody GET, analizujemy najczęściej pojawiające się w Ŝądaniu rozszerzenia pliku; - 4 -
- określamy, które mogą być nieistotne do modelowania zachowania uŝytkownika; - zwykle moŝna bezpiecznie pominąć pliki graficzne (.gif.,.jpg,.xbm) (chyba, Ŝe witryna traktuje grafikę jako zawartość i chcemy śledzić ściągnie plików lub analityk jest zainteresowany obserwacją zawartości łącz); - usuwamy z pliku log pliki, które nie są istotne dla naszego zadania; - zatrzymujemy pliki z następującymi rozszerzeniami:.asp,.doc,.exe,.gz,.htm,.html,.pdf,.ppt,.ps,.tar,.txt,.wp,.wpd,.xls,.xml,.zip oraz Ŝądania z brakiem rozszerzenia pliku, które wskazują na stronę domyślną (to tylko przykład rozszerzenia plików, które zostają zachowane zaleŝą od analityka); - usunięcie wpisów pochodzących od robotów - roboty, pełzacze, pająki, boty; - ich zachowanie róŝni się od zachowania ludzi (sprawdza kaŝdy moŝliwy link); - zidentyfikowanie nazwy robota w polu przeglądarki (jeśli jest dostępne) boty często zamieszczają adres URL lub e-mail (http://www.google.com/bot.html; MSNbot (search.msn.com/msnbot.htm), Yahoo! Slurp (help.yahoo.com/help/us/search/slurp), Scirus (robot słuŝący do celów naukowych; program Server Alive URL check); - identyfikacja pojedynczego uŝytkownika większość wejść na strony jest anonimowa; - cookie (tekst, określony przez serwer, zawierający informacje, które serwer chce umieścić; uniknięcie ponownego logowania; personalizacja stron; zachowanie koszyka w sklepie internetowym); - pole adresu IP hosta (problem - serwery proxy); pole uŝytkownika (rzadko wypełniane); - pole przeglądarki (jeśli nawet IP jest takie samo, moŝna uznać, Ŝe jeśli pole przeglądarki róŝni się dla róŝnych wpisów, Ŝądania prochodzą od róŝnych uŝytkowników); - analiza pola adresu odsyłającego wraz z topologią strony (jeśli nie ma bezpośreniego połączenia, prawdpododobnie nowy uŝytkownik); Procedura identyfikacji: - uporządkuj plik log według adresu IP, a potem wg znacznika czasu; - dla kaŝdego IP, zidentyfikuj przeglądarkę jako naleŝącą do osobnego uŝytkownika; - zastosuj informację o ścieŝce, znajdującą się w polu adresu odsyłającego i topologię witryny, aby określić, czy jest bardziej prawdopodobne, Ŝe zachowanie naleŝy do dwóch lub większej liczby uŝytkowników; - połącz informację z poprzenich punktów z dostępnymi ciasteczkami oraz informacjami rejestracyjnymi; - 5 -
Adres IP Czas Metoda Ares odsyłający Agent 987.654.32.1 00:00:02 GET A.html HTTP/1.1 - Mozilla/4.0 987.654.32.1 00:00:05 GET B.html HTTP/1.1 A.html Mozilla/4.0 987.654.32.1 00:00:06 GET A.html HTTP/1.1 - Mozilla/5.0 987.654.32.1 00:00:10 GET E.html HTTP/1.1 B.html Mozilla/4.0 987.654.32.1 00:00:17 GET K.html HTTP/1.1 E.html Mozilla/4.0 987.654.32.1 00:00:20 GET C.html HTTP/1.1 A.html Mozilla/5.0 987.654.32.1 00:00:27 GET I.html HTTP/1.1 - Mozilla/4.0 987.654.32.1 00:00:36 GET G.html HTTP/1.1 C.html Mozilla/5.0 987.654.32.1 00:00:49 GET O.html HTTP/1.1 I.html Mozilla/4.0 987.654.32.1 00:00:57 GET M.html HTTP/1.1 G.html Mozilla/5.0 987.654.32.1 00:03:15 GET H.html HTTP/1.1 - Mozilla/5.0 987.654.32.1 00:03:20 GET N.html HTTP/1.1 H.html Mozilla/5.0 987.654.32.1 00:41:27 GET E.html HTTP/1.1 K.html Mozilla/4.0 987.654.32.1 00:41:44 GET L.html HTTP/1.1 E.html Mozilla/4.0 Analiza po samym IP UŜytkownik 1 Analiza po IP + Agencie UŜytkownik 1: A B E K I O E L UŜytkownik 2: A C G M H N Adres odsyłujący + topologia Dla uŝytkownika 1: brak połączenia między K oraz I Prawdopodobne, Ŝe jest to inny uŝytkownik UŜytkownik 1: A B E K E L UŜytkownik 2: A C G M H N UŜytkownik 3: I O A B C D E F G H I J K L M N O P Identyfikacja sesji: Sesja 1 (UŜytkownik 1: A B E K ) Sesja 2 (UŜytkownik 2: A C G M H N) Sesja 3 (UŜytkownik 3: I O) Sesja 4 (UŜytkownik 1: E L) Uzupełnianie ścieŝek: Dla uŝytkownika 2 nie ma bezpośredniego połączenia między M oraz H Mógł nacisnąć dwa razy Wstecz i ze strony C przejść do H Sesja 1 (UŜytkownik 1: A B E K ) Sesja 2 (UŜytkownik 2: A C G M G C H N) Sesja 3 (UŜytkownik 3: I O) Sesja 4 (UŜytkownik 1: E L) - 6 -
- identyfikacja sesji uŝytkownika określenie dla kaŝdej wizyty, których stron zaŝądano i określenie czasu wyświetlania kaŝdej z nich; - maksymalny dopuszczalny czas pomiędzy Ŝądaniami naleŝącymi do tej samej sesji (timeout); w badaniach określono go na 25,5 minuty; wielu analityków i autorów programów komercyjnych ustala tę wartość na 30 minut (1800 sekund); Procedura identyfikacji sesji: - kaŝdemu uŝytkownikowi przypisz unikalny identyfikator sesji; - zdefiniuj maksymalny timeout t; - dla kaŝdego uŝytkownika: - znajdź czas między dwoma sąsiednimi wpisami; - jeŝeli przekracza on wartość progową t, przypisz nowy identyfikator sesji do kolejnych jego wpisów; - uporządkuj wpisy wg identyfikatora sesji; - Uzupełnienie ścieŝek przycisk Wstecz strona łądowana z pamięci podręcznej, co powoduje dziury w zapisach plików log serwera; znajomość topologii witryny umoŝliwia ich uzupełnienie; 7. Eksploracyjna analiza uŝytkowania Proste techniki, które sporo mówią o zachowaniu uŝytkownika. - liczba Ŝądań w sesji (długość wizyty wyraŝona liczbą Ŝądań w sesji; rozkład prawoskośny); - długość sesji (nie wiadomo, ile czasu uŝytkownik spędził na ostatniej stronie) - wybierz sesje, które zawierają więcej niŝ jedno Ŝądanie; - dla kaŝdej sesji odejmij znacznik pierwszego Ŝądania od znacznika dla ostatniego Ŝądania; - duŝo niepewności: niedoszacowanie, bo nie uwzględniamy czasu spędzonego na ostatniej stronie; - zaleŝność między długością sesji a liczbą Ŝądań uŝytkownika; - wykres liczba Ŝądań (oś x), długość sesji (oś y) analiza regresji (liniowej); - średni czas na stronę długość sesji/(liczba Ŝądań 1); - 7 -
8. Discovery Challenge 2007 Zbiór uczący i testujący (https://ophelia.cs.put.poznan.pl/webdav/ezi/students/gemius/) Format w zbiorze uczącym : path_id user_id timestamp Path (category1, pageviews_number), Path (category2, pageviews_number) W zbiorze testującym: path_id user_id timestamp Problem 1: Określić, czy wizyta będzia długa czy krótka (długa liczba kategorii stron > 1) Problem 2: Określić najbardziej prawdopodobne kategorie, które pojawią się na pierwszych trzech pozycjach - 8 -
9. Zadania do realizacji w zespołach dwuosobowych Dla wybranego pełnego tygodnia (od poniedziałku 00:00 do niedzieli 24:00) z pliku log (http://ita.ee.lbl.gov/html/contrib/sask-http.html (access log; link u dołu strony)) przetwórz dane zgodnie z poniŝszymi instrukcjami 1. Wydobadź zmienne: data i czas. 2. Wydobądź zmienne: metoda http, Ŝądana strona i wersja protokołu. 3. Utwórz znacznik czasu reprezentujący liczbę sekund, które upłynęły od pewnej daty, np. 1 czerwca 1995. 4. [2] Zbuduj tabelę 10 najczęstszych rozszrzeń stron z liczbami wystąpień (czyli bez katalogów /, /images; tylko strony). 5. [1] Odsiej wszystkie rekordy z metodą inną niŝ GET i wszystkie z plikami o rozszerzeniach innych niŝ:.htm,.html,.pdf,.asp,.exe,.txt,.doc,.ppt,.xls,.xml. Zachowaj rekordy z pustymi rozszerzeniami stron. Podaj ile rekordów było przed tymi operacjami (oryginalnie), a i ile zostało teraz. 6. [1] Zidentyfikuj uŝytkownika na podstawie unikalnego adresu IP. Podaj, ile jest uŝytkowników. 7. [1] Zidentyfikuj wszystkie sesje. UŜyj unikalnego adresu IP oraz wartości progowej maksymalnego dozwolonego czasu między Ŝądaniami, równej 30 minut. Podaj, ile jest sesji. 8. [3] Zbadaj Ŝądania uŝytkownika. PokaŜ histogram liczby Ŝądań w sesji (oś x liczba Ŝadań, oś y liczba sesji z taką liczbą Ŝądań). PokaŜ statystyki takie jak średnia, mediana, wartość modalna, minimalna i maksymalna. 9. [3] Zbadaj zaleŝność między długością sesji a liczbą Ŝądań uŝytkownika. RozwaŜ tylko sesje o liczbie Ŝądań powyŝej 1. UŜyj wykresu rorzutu (oś x liczba Ŝądań, oś y długość sesji w sek.). UŜyj prostego modelu regresji liniowej i podaj oszacowane równanie regresji. Nanieś linię na wykres. 10. [3] Zbuduj wykres słupkowy liczby rozpoczętych sesji na godzinę (oś x godzina 0-23; oś y liczba sesji) w przekroju całego tygodnia. 11. [3] Zbuduj wykres słupkowy liczby rozpoczętych sesji na dzień (oś x Mon-Sun; oś y liczba sesji). Rozwiązania poszczególnych zadań w arkuszu kalkulacyjnym w osobnych zakładkach (jeśli jest wykres, to muszą być teŝ serie danych; zadania 4-7 mogą być na jednej zakładce). W rozwiązaniu podaj analizowany przez Ciebie temin wpisów (data od do) oraz 20 pierwszych wpisów przed i po filtrowaniu. Punktów do zdobycia: 17 Łącznie ze wszystkich zadań: 29+27+17=73 Jeśli ktoś nie zaliczy raportów (poniŝej 36,5pkt.), to Ŝeby zaliczyć przemiot, ze sprawdzianu musi dostać tyle % powyŝej 50%, ile brakowało mu, by zaliczyć raporty (np. ktoś zdobył 36% z raportów; aby zaliczyć przedmiot musi zdobyć 50%+14%=64%). - 9 -
Koło typ zadań - 10 stycznia I. TF/IDF - Dla podanego zapytania Q i danej kolekcji dokumentów znaleźć najbardziej adekwatny dokument zgodnie z miarą TF/IDF (rozmiar problemu rzędu: 3 dokumenty, 4 termy; wymagane etapy: zapisać w reprezentacji TF; zapisać IDF dla termów (pamiętać, Ŝe zapytanie nie wpływa na wartości IDF, bo te oblicza się na podstawie kolekcji dokumentów); zapisać w reprezentacji TF/IDF; obliczyć podobieństwa za pomocą miary cosinusowej juŝ tylko dla reprezentacji TF/IDF; odpowiedź). Do obliczenia wartośći TF oraz IDF obowiązują wzory podane na zajęciach (n ij /max k n kj oraz log(d/d i ) II. Obliczyć miary precision/recall (dana liczba dokumentów ogółem; wymienione indeksy dokumentów istotnych; wymienione indeksy dokumentów pobranych; wymagane etapy: podać wzór na precision/recall (nie zapomnieć, Ŝe we wzorze operuje się na liczności zbiorów; trzeba wiedzieć co oznacza relevant i retrieved); wypisać istotne dokumenty wśród zwróconych; podstawić liczby; podać wynik) III. PageRank (dana struktura powiązań graf sieci; zapisać macierz stochastyczną (uwaga na kolejność wierszy i kolumn); zapisać równania początkowe, które pozwolą na obliczenie PageRanku (z damping factor q równym ; jeśli bez damping factor trzeba teŝ dodać równanie normalizujące); bez obliczania spróbować uzasadnić na podstawie struktury sieci, dla której strony PageRank będzie najlepszy, a dla której najgorszy; rozmiar 4-5 wierzchołków) IV. HITS (zapisać macierz połączeń (uwaga na kolejność wierszy i kolumn); obliczyć na jej podstawie macierz, której analiza pozwoli na uzyskanie wartości koncentratorów (autorytetów) trzeba potrafić transponować macierz i wymnoŝyć dwie macierze; moŝe być dany wektor własny macierzy LL T oraz L T L; trzeba będzie się zorientować, który dotyczy koncentratorów, a który autorytetów; na tej podstawie rozpoznać najlepsze/najgorsze koncentratory/autorytety i uzasadnić dlaczego któraś strona jest dobrym/złym autorytetem/koncentratorem w kontekście ocen koncentratorów/autorytetów; rozmiar 4-5 wierzchołków) V. Aglomeracyjne grupowanie hierarchiczne (wypełniona macierz podobieństwa dla dokumentów; dokonać aglomeracji wg maksymalnego lub minimalnego podobieństwa dokumentów w grupie (łączymy dwie grupy (dokumenty) w jednym etapie; zawsze te, które są najbardziej podobne wg ustalonegj miary) i narysować dendrogram 4-5 dokumentów). VI. K-means (dana macierz podobieństwa i macierz TF/IDF dla dokumentów; dokonaj podziału, jeśli centroidami w I etapie są dokumenty najmniej/najbardziej pododne; oblicz miarę podobieństwa J; oblicz nowe centroidy dla grup, który zostałyby wykorzystane w kolejnym etapie) VII. k-nn (dana kolekcja dokumentów i przydział dokumentów do klas; dany nowy dokument i jego podobieństwo do pozostałych dokumentów (np. współczynnik Jaccarda) z wyjątkiem - 10 -
jednego/dwóch dokumentów Dn, dla których powiedziane jest, Ŝe nowy ma z nimi wspólne X termów (Dn ma ogółem Y róŝnych termów; a nowy Z termów trzeba znać wzór na współczynnik Jaccarda, który operuje na tych wartościach); obliczyć współczynnik podobieństwa Jaccarda dla tej pary, a potem zdecydować (i uzasadnić) do jakiej klasy zostanie przypisany nowy dokument na podstawie algorytmu k-nn z narzuconym k (algorytm prosty i waŝony)) VIII. Naiwny klasyfikator Bayesowski (dana reprezentacja binarna dokumentów i ich przydział do klas; dana reprezentacja binarna nowego dokumentu; zdecydować (i uzasadnić; potrafić zapisać na symbolach prawdopodobieństwa warunkowe; obliczyć prawdopodobieństwa), do której klasy zostanie przypisany nowy dokument na podstawie naive Bayesa rozmiar problemu ok. 3 termy; 2-3 klasy; 10 dokumentów). Za przybliŝenie końcowego prawdopodobieństwa P(C/Doc) uznajemy wartość licznika (mianownik dla wszystkich klas jest taki sam). IX. Utworzyć drzewo sufiksów i tablicę sufiksów dla danego słowa (typu: alibaba; kuskus, barnaba). Trzeba utworzyć suffix trie, a na jego podstawie drzewo sufiksów (suffix tree). Tablica sufiksów musi być tworzona za pomocą qsufsort z rozpisaniem wektorów SA (posortowane indeksy sufiksów) i ISA (najgorsza moŝliwa pozycja sufiksu (indeksu) w danym etapie) w kolejnych etapach. X. Dany fragment odfiltrowanego pliku logu odczytać zadaną cechę z pojedynczego rekordu; zidentyfikować uŝytkownika (będzie powiedziane na jakiej podstawie (np. IP hosta albo IP+przeglądarka; zidentyfikować sesje (podany próg timeoout); obliczyć długość sesji; średni czas na stronę) Np. oznacz takim samym symbolem (np. liczbami rzymskimi) rekordy wchodzące w skład jednej sesji (identyfikacja na podstawie IP hosta; timeout=30min). Oblicz długość sesji i średni czas na stronę dla sesji, w skład której wchodzi pierwszy rekord: 131.215.67.47 [29:22:58:20] "GET /docs/oppe/spatial.html HTTP/1.0" 200 17756 131.215.67.47 [29:22:59:40] "GET /docs/oppe/large.htm HTTP/1.0" 200 647 131.215.67.47 [29:23:01:20] "GET /docs/oppe/circle.htm HTTP/1.0" 200 1329 140.112.68.165 [29:23:01:40] "GET /docs/bul/bum.htm HTTP/1.0" 200 147 131.215.67.47 [29:23:03:00] "GET /docs/oppe/oppe.htm HTTP/1.0" 200 10752 140.112.68.165 [29:23:04:00] "GET /docs/bul/bal.htm HTTP/1.0" 200 147 140.112.68.165 [29:23:07:10] "GET /docs/bul/balon.htm HTTP/1.0" 200 647 140.112.68.165 [29:23:33:00] "GET /docs/bul/glu.htm HTTP/1.0" 200 247 131.215.67.47 [29:23:50:20] "GET /docs/oppe/new.htm HTTP/1.0" 200 132 131.215.67.47 [29:23:58:00] "GET /docs/oppe/line.htm HTTP/1.0" 200 2372 131.215.67.47 [29:23:59:20] "GET /docs/oppe/linera.htm HTTP/1.0" 200 2372 Czas pisania: 1.5h; ok. 10min. na zadanie 10 zadań; łącznie 34 punkty (progi: 17p (3.0), 20p (3.5), 23.5p (4.0), 27p (4.5), 30p (5.0)) Orientacyjna punktacja za poszczególne zadania (moŝe się zmieniać w zaleŝności od grup): I 5p, II 2p, III 4p, IV - 4p, V 3p, VI 3p, VII 3p, VIII 3p, IX 4p, X 3p Kartki dostaniecie; potrzebny jest kalkulator (choćby po to, by policzyć logarytm lub wymnoŝyć prawdopodobieństwa w zadaniu z Bayesem) Przywilej na kole za raporty: ok. 6 osób na podstawie najlepszych raportów; dowiadują się przed kołem; muszą napisać je na 50% i dostają ocenę z raportów. - 11 -
Koło trzeba zaliczyć. - 12 -