EWzIRD/L/z1

From WikiZMSI

< EWzIRD | L

Na zajęciach

  • Zapoznać się z programem AccessLogConverter (Java/Eclipse), który zamienia access log na dane separowane przecinkami, które można wczytać w MATLABie.
  • Wczytać w MATLABie przygotowany plik saskatchewan100kLines.mat (zawiera 100 tys. linii loga, nazwy zmiennych, klastry requestów).
  • Zapoznać się i uruchomić skrypty: clusterRequests.m, label.m.
  • Znaleźć 3 najczęszczych hostów w logu, a następnie za pomocą skryptu toSetOfSequences zbudować dla każdego z 3 hostów zbiory sekwencji uczących i testujących. Wpisy dotyczące pojedynczego hosta można odfiltrować sobie za pomocą gotowego skryptu filterOutHost.m.
  • Napisać skrypty dotyczące modeli Markowa (jawnych): (1) budowanie modelu na podstawie zbioru sekwencji obserwacji, (2) epsilonowanie modelu, (3) obliczanie prawdopodobieństwa danej sekwencji obserwacji pod warunkiem modelu, (4) klasyfikowanie nieznanej sekwencji do modelu (wśród kilku modeli), (5) klasyfikowanie wielu sekwencji i obliczanie procentowej poprawności.
  • Zbudować i przetestować modele dla 3 hostów na sekwencjach uczących i testujących (procentowa poprawność).

Do domu

  • Z w/w strony internetowej wybrać sobie inny access log (są m.in.: NASA, Calgary, WorldCup98, ...).
  • Wczytać przynajmniej 300 tys. linii loga.
  • Opracować wg własnego uznania klastry (grupy) requestów (około 10-30).
  • Analogicznie jak na zajęciach przygotować zbiory sekwencji uczących i testujących dla 3 najczęstszych hostów w danym logu, zbudować modele Markowa dla tych hostów i przetestować ich poprawność rozpoznawania.
  • (* na wyższą ocenę) Zbudować analogicznie 3 modele dla najczęstszych hostów ale w oparciu o zbiór stanów, gdzie stan jest kombinacją: request + responseSize. Obserwujemy tu więc nie tylko to, co użytkownik odwiedza, ale i to, ile pobiera (nie utożsamiać z downloadem). Sugeruję opracować mniejszą liczbę klastrów (grup) requestów np. 5-10, a rozmiary odpowiedzi zdyskretyzować na np. 3 wartości {mała, średnia, duża} na podstawie dobranych przez siebie progów w bajtach (lub kB). Przetestować modele i porównać procentową poprawność rozpoznawania z wcześniejszymi modelami.