EKSPLORACJA ZASOBÓW INTERNETU - MIŁOSZ KADZIŃSKI LABORATORIUM VII KLASYFIKACJA I PREDYKCJA PLUS MAHOUT. Plan laboratorium VII Klasyfikacja znalezienie odwzorowania dokumentów w zbiór predefiniowanych klas; Budowa modelu opisującego predefiniowany zbiór klas; Zastosowanie opracowanego modelu do klasyfikacji nowych danych... Klasyfikacja Rocchio.2. Algorytm najbliższych sąsiadów (k-nn);.3. Naiwny klasyfikator Bayesa..4. Predykcja - User-Based i Item-Based Collaborative Filtering, Slope-One.5. Mahout Zastosowania: Strony internetowe (rekomendacja, strony-spam, SafeSearch, klasyfikacja Yahoo-like) Wiadomości w ramach Newsgroup (rekomendacja, filtrowanie spamu) Artykuły (personalizowane gazety) E-mail (routing, prioritizing, folderizing, filtrowanie spamu, sortowanie wiadomości) 2. Klasyfikacja Rocchio Wykorzystanie reprezentacji wektorowej Jak obliczyć granice między klasami? Klasyfikacja Rocchio wykorzystuje centroid każdej klasy: µ C = D C d D C v( d) Granica między parą klas jest zdefiniowana jako zbiór punktów w równej odległości od centroidów tych klas (dla dwóch wymiarów linia, dla większej hiperpłaszczyzna) Nowy obiekt jest przypisywany do klasy, w której region wpada (do klasy najbardziej podobnego centroidu): - -
Gdzie trafi gwiazdka? Gdzie trafi kwadrat? (algorytm ignoruje rozkład punktów w ramach klas) 3. Algorytm najbliższego sąsiada Charakterystyka: Klasyfikacja nowych dokumentów jest dokonywana na bieżąco (gdy pojawia się potrzeba klasyfikacji nowego przypadku); Uczenie z przykładów (instance-based learning); Uczenie leniwe (lazy learning) tworzenie modelu nie wymaga dodatkowych obliczeń; W algorytmie -NN klasa nowego dokumentu wynika z etykiety klasy najbliższego do niego dokumentu ze zbioru uczącego; Metoda czuła na punkty osobliwe i szum w danych treningowych; Rozwiązanie: zastosowanie strategii k-najbliższych sąsiadów (k-nn); Nowy przypadek klasyfikujemy jako należący do klasy, która dominuje w zbiorze k-najbliższych sąsiadów; Zwykle k=3 lub k=5; Ważony algorytm k-nn ważenie głosów za pomocą podobieństwa (lub odległości) dokumentów ze zbioru uczącego do dokumentu, który jest klasyfikowany (najprostsze rozwiązanie to użycie funkcji podobieństwa sim(x,y)); - 2 -
4. Naiwny algorytm Bayesa Klasyfikator statystyczny (oparty na twierdzeniu Bayesa); Jaka jest najbardziej prawdopodobna klasyfikacja nowego obiektu (dokumentu) przy danych uczących, którymi dysponujemy? Niech D={t, t 2,, t n } będzie reprezentacją binarną dokumentu w postaci n-wymiarowego wektora; P(C/D) prawdopodobieństwa a-posteriori, że dokument D należy do klasy C; Dokument D klasyfikujemy jako pochodzący z tej klasy C i, dla której wartość P(C i /D), i=,2,,m jest największa; Szacowanie prawdopodobieństwa P(Ci/D) P(C/D) = (P(D/C) P(C))/P(D); P(C) prawdopodobieństwo a priori wystąpienia klasy C (tj. prawdopodobieństwo, że dowolny przykład należy do klasy C) estymujemy jako stosunek liczby przykładów w zbiorze treningowym, które należą do klasy C do liczby wszystkich przykładów w zbiorze treningowym; P(D/C) prawdopodobieństwo a posteriori, że D należy do klasy C; P(D) prawdopodobieństwo a priori wystąpienia dokumenty D - mianownik dla wszystkich klas jest taki sam; Jak obliczyć P(D/C)? Przyjmujemy założenie o niezależności atrybutów Prowadzi to do następującej formuły: P ( D / Ci ) = P( t j / Ci ) Jeśli reprezentacja dokumentów jest binarna, to standardowe podejście (zadanie 2). n j= Jeśli chcemy uwzględnić liczność słów w dokumntach, to wykorzystujemy podejście zaproponowane stricte dla klasyfikacji dokumentów, przy czym, aby wyeliminować sytuację, w której P( t / C ) 0, stosuje się add-one bądź Laplace smoothing (dodanie do każdego j i = wystąpienia): Tct + T + P( t j / Ci ) =, ( T + V t' V ct = ct' + ) ( T t' V ct' ) gdzie T ct to liczba wystąpień t w zbiorze treningowym dokumentów należących do klasy C (włączając w to wielokrotne wystąpienia termu w ramach pojedynczego dokumentu); V jest liczbą termów w słowniku, np. - 3 -
Doc ID Content c=china? Training set Chinese Beijing Chinese Yes Training set 2 Chinese Chinese Shanghai Yes Training set 3 Chinese Macao Yes Training set 4 Tokyo Japan Chinese No Test set 5 Chinese Chinese Chinese Tokyo Japan? P(c) = 3/4 P(Chinese/c) = (5+)/(8+6) = 3/7 P(Tokyo/c)=P(Japan/c) = (0+)/(8+6) = /4 P(c/d5) 3/4 (3/7) 3 /4 /4 0.0003 P(~c) = /4 P(Chinese/~c) = (+)/(3+6) = 2/9 P(Tokyo/~c)=P(Japan/~c) = (+)/(3+6) = 2/9 P(~c/d5) /4 (2/9) 3 2/9 2/9 0.000 Decyzja c = China. 5. Collaborative Filtering - Social Learning Przykład: System oceniania filmów; skala beznadzieja, 7 super Historyczna baza danych uwzględnia oceny filmów dokonane przez Sally, Boba, Chris oraz Lynn Karen jest nowym użytkownikiem, który ocenił trzy filmu, ale nie widział jeszcze Dnia niepodległości. Czy powinniśmy jej go zarekomendować? Sally Bob Chris Lynn Karen Star Wars 7 7 3 4 7 Jurassic Park 6 4 7 4 4 Terminator II 3 4 7 6 3 Independence Day 7 6 2 2? Wypracuj rekomendację dla użytkownika na podstawie ocen innych użytkowników lub innych obiektów Zwykle rozważane są obiekty podobnej natury (albo strony internetowe albo kawałki muzyczne albo filmy, itd.) Zwykle zakłada się dostępność ocen obiektów na określonej skali (choć są próby uzyskania ocen nie wprost, np. na podstawie zachowań użytkowników; problemem jest fakt, że są to dane binarne) User-Based Collaborative Filtering Oblicz podobieństwo między użytkownikami, bazując na ich ocenach różnych obiektów Zastosuj algorytm k-nn Oblicz przewidywaną ocenę danego użytkownika - 4 -
Pearson Correlation Korelacja między użytkownikiem U oraz J r UJ = ( U U ) ( J J ) 2 ( U U ) ( J J ) gdzie U oraz J to średnie oceny użytkowników U oraz J dla wszystkich obiektów. ( oznacza ogromne podobieństwo, 0 brak korelacji, - przeciwstawne preferencje) Sprawdza się to dobrze dla ocen użytkowników na skali co najmniej -5 nie zawsze możliwe; w niektórych sytuacjach mamy dostępną tylko wartość binarną (np. użytkownik wybrał plik/dokument lub nie) Funkcja CORREL (WSP.KORELACJI) w MS Excel 2 Sposób obliczenia przewidywanej oceny W prostym podejściu przewidywana oceny jest średnią z ocen k najbliższych sąsiadów. W praktyce wykorzystuje się albo średnią ważoną przez miary podobieństwa: r( a, i) = k u= k r u, i i= sim( a, u) sim( a, u) albo średnią ważoną odchyleń od średnich ocen k najbliższych sąsiadów: r( a, i) = r a + k u= ( r u, i k i= r u ) sim( a, u) sim( a, u) Item-Based Collaborative Filtering Znajdź podobieństwo między obiektami, bazując na ocenach różnych użytkowników Predykcja nieznanej oceny użytkownika a dla obiektu I jest wypracowywana na podstawie przeszłych ocen użytkownika a dla obiektów podobnych do I Zalety: Ignoruje zawartość, bierze pod uwagę tylko to, kto ocenia obiekty w podobny sposób Jeśli mój kolega lubił tę książkę, to ja też ja będę lubił Jeśli podobały Ci się Gwiezdne Wojny, to spodoba Ci się też Dzień Niepodległości Sprawdza się dobrze dla danych odnoszących się do gustów Wady: Oceny dodane do bazy jako pierwsze mają większy wpływ na propozycje dla innych użytkowników Jeśli jest mało użytkowników, to wyniki mogą być niezadowalające Problem skalowania dla dużej liczby użytkowników, obliczenia dla k-nn zabierają sporo czasu Wykorzystanie dynamiczne, więc ciężko wybrać tylko część danych jako zbiór uczący Podatny na ataki shilling, push attack, nuke, system-wide attacks - 5 -
5. Ćwiczenia I. Dany jest przydział do klas (A lub B) dla 0 dokumentów (D-D0) ze zbioru uczącego oraz miary podobieństwa 8 z nich (D-D8) z dokumentem X o nieznanym przydziale. Podobieństwo pozostałych 2 dokumentów (D9-D0) z dokumentem X oblicz, korzystając ze współczynnika Jaccarda (dane są liczba wspólnych termów dokumentów D9 oraz D0 z X oraz liczby termów ogółem w tych dokumentach). Do jakiej klasy trafi dokument X, jeśli klasyfikatorem jest algorytm 3-najbliższych sąsiadów w wersji głosowania prostego lub ważonego? Uzasadnij przydział D D2 D3 D4 D5 D6 D7 D8 D9 D0 X Klasa B A B B A B A A A B? Podobieństwo z X 0.35 0.22 0.89 0.7 0.42 0.09 0.28 0.27?? - X D9 D0 Liczba termów ogółem 0 4 9 Liczba termów wspólnych z X - 7 4 Decyzja dla 3-NN (algorytm prosty): Rozwiązanie: podobieństwo X z D9 = podobieństwo X z D0 = Dokumenty na podstawie, których podejmujesz decyzję: Decyzja dla 3-NN (algorytm ważony): II. Dana jest reprezentacja binarna 0 dokumentów (D-D0), przy czym za istotne uważane są 3 termy (T-T3). Do jakiej klasy (A lub B) trafi dokument Y, jeśli klasyfikatorem jest naiwny klasyfikator bayerowski? Pokaż wszystkie prawdopodobieństwa cząstkowe, które trzeba obliczyć, by podjąć ostateczną decyzję. Jeśli prawdopodobieństwo cząstkowe będzie równe 0, zamiast 0 przyjmij wartość 0.0. Uzasadnij decyzję o przydziale do klasy. T T2 T3 C D B D2 0 0 B D3 0 0 B D4 0 0 B D5 0 0 0 A D6 0 A D7 0 A D8 0 0 A D9 0 A D0 0 0 A Y 0? Rozwiązanie: Dla klasy A: Dla klasy B: P(A) = P(B) = P( T = / A ) = P( T = / B ) = P( T2 = / A ) = P( T2 = / B ) = P( T3 = / A ) = P( T3 = / B ) = P(C=A/Y) Odpowiedź: Dokument Y zostanie przydzielony do klasy P(C=B/Y), ponieważ III. Historyczna baza danych uwzględnia oceny filmów dokonane przez Sally, Boba, Chris oraz Lynn. Karen jest nowym użytkownikiem, który ocenił trzy filmz, ale nie widział jeszcze Dnia niepodległości. Czy powinniśmy jej go zarekomendować? Pearson(Sally, Karen) = Star Wars Jur. Park Termin. II Ind. Day Średnia Kosinusowa Pearson Sally 7 6 3 7 0.983 Bob 7 4 4 6 5.00 0.995 0.97 Chris 3 7 7 2 5.67 0.787-0.97 Lynn 4 4 6 2 4.67 0.874-0.69 Karen 7 4 3?.0.0 K= - Predykcja = K=2 - Predykcja = K=3 - Predykcja = Załóżmy, że sim(sw,id) > sim(jp,id) > sim (TII, ID). Określ predykcję oceny Karen dla ID, gdy przyjmiemy k=. - 6 -
6. Omówienie zadań do samodzielnego wykonania Należy rozwiązać 2 z 3 pierwszych zadań oraz zadanie 4 i 5 (programistyczne - łatwe) w sumie do zdobycia 2+2+3+3=0 punktów I. [2] Do odfiltrowania spamu w skrzynce milowej wykorzystywany jest klasyfikator Naive Bayes. Jako dane uczące wybrano 0 dokumentów i określono dla nich, czy rzeczywiście są spamem. Do reprezentacji dokumentów za pomocą 5 termów wykorzystano macierz binarną. Używając klasyfikatora Naive Bayes określ, jak zostaną zaklasyfikowane wiadomości E (zawiera termy t, t2 i t4) oraz F (zawiera termy t 3 i t 5 ). Rozpocznij od obliczenia prawdopodobieństw Pr(t i /yes) oraz Pr(t i /no) dla i =,, 5, oraz Pr(yes) i Pr(no). Następnie oblicz Pr(yes/DOK) oraz Pr(no/DOK), gdzie DOK reprezentuje E lub F. Podaj uzasadnienie decyzji o przydziale do klasy. t t 2 t 3 t 4 t 5 SPAM D 0 0 No D2 0 0 0 No D3 0 0 Yes D4 0 Yes D5 0 0 0 Yes D6 0 0 0 No D7 0 0 0 0 Yes D8 0 0 Yes D9 0 0 No D0 0 0 Yes II. [2] Dany jest zbiór dokumentów opisujący wydziały w The School of Arts and Sciences, reprezentowanych jako wektory TFIDF z sześcioma atrybutami. Dla każdego z nich dana jest też etykieta klasy (patrz arkusz). Klasa ostatniego dokumentu jest nieznana. Obliczono też odległość między dokumentami za pomocą odległości cosinusowej. Do jakiej klasy trafi "Document" przy założeniu k=, k=3, k=7. Dla k=3 i k=7 podaj decyzję, którą podjąłby algorytm za pomocą prostego głosowania (każdy głos z wagą.0) i ważonego głosowania (waga głosu wynika z podobieństwa). Do znalezienia k najbardziej podobnych dokumentów możesz wykorzystać funkcję MAX.K. Czy duże k w algorytmie k-nn jest korzystne, czy może należy stosować k o małych wartościach? Jakie są wady wykorzystania k=? Uzasadnij. III. [2] Księgarnia internetowa zgromadziła oceny od 20 użytkowników U-U20 dla wybranych książek ( oznacza ocenę najgorszą, a 5 ocenę najlepszą patrz arkusz). Dwóch nowych użytkowników NU i NU2, którzy ostatnio odwiedzili witrynę księgarni oceniło niektóre książki w następujące sposób (? reprezentuje brak oceny): TRUE BELIEVER THE DA VINCI CODE THE WORLD IS FLAT MY LIFE SO FAR THE TAKING THE KITE RUNNER RUNNY BABBIT HARRY POTTER NU 4? 5 3 2 3? 4 NU2? 5 2 5 4? 2? Używając algotymu k-nn określ przewidywaną ocenę tych użytkowników dla książek, którym nie wystawili not. Użyj współczynnika korelacji Pearsona jako miary podobieństwa. - 7 -
a) [] Wykorzystaj podejście User-Based Collaborative Filtering. Oblicz podobieństwo między NU i NU2 a wszystkimi pozostałymi użytkownikami. Potem określ przewidywaną ocenę dla książek nieocenionych przez NU i NU2, przyjmując k=3. Wykorzystaj ważoną średnią funkcję do obliczenia prognozowanej oceny i pokaż kroki pośrednie w obliczeniach. Funkcja do obliczenia prognozowanej oceny: Załóżmy, że k najbliższymi sąsiadami dla NU są U, U2,, Uk. Określmy ocenę Uu dla elementu Ij przez r(ui,ij), a podobieństwo między użytkownikami Ui oraz NU przez sim(nu,ui). Predykcję oceny liczy się wtedy z następującego wzoru: k r( U i= i, I t ) sim( NU, U t ) r( NU, I t ) = k. sim( NU, U ) i= Zwróć uwagę, że jeśli wśród k najbliższych sąsiadów są tacy, których podobieństw do NU jest ujemne, to nie bierze się ich pod uwagę. Poza tym wśród k najbliższych sąsiadów rozważamy tylko tych, którzy dokonali oceny I t. A więc zakładając, że k=3 oraz U2 nie dokonał oceny I t, wzór wyglądałby następująco: r( NU, I t r( U ) =, I t ) sim( NU, U sim( NU, U t ) + r( U 3, It ) sim( NU, U ) + sim( NU, U ) 3 3 ) b) [] Wykorzystaj podejście Item-Based Collaborative Filtering. Oblicz przewidywaną ocenę NU dla The DaVinci Code. W tym wypadków musisz znaleźć najbardziej podobne książki (items) do The DaVinci Code, bazując na ich wektorach ocen. Dla tej części zadania przyjmij k=2, cosinusową miarę podobieństwa i ważoną f. predykcji. - 8 -
APACHE MAHOUT Biblioteka (Java), implementująca techniki uczenia maszynowego do: klasyfikacji uczenie się z istniejącej kategoryzacji dokumentów, jak wyglądają dokumenty specyficzne dla danej kategorii i nadawanie etykiet dokumentom nieocenionym; grupowania klastruje np. dokumenty w grupy powiązane tematycznie; odkrywania zbiorów częstych; rekomendacji bierze pod uwagę zachowanie użytkowników, starając się przewidzieć obiekty, które mogą im się podobać. Mahout jest obok Weki oraz R jednym z popularniejszym narzędzi wykorzystywanych w dziedzinie uczenia maszynowego. Podstawowe zalety: licencja Apache, szerokie środowisko, dobra dokumentacja, skalowalność (oparte na hadoopie, ale jego wykorzystanie nie jest obowiązkowe) -> możliwość zastosowania do dużych danych. Wykorzystanie: Adobe, Facebook, LinkedIn, BuzzLogic, Shop It To Me, Foursquare (recommendation engine), Twitter (user interest modeling), Yahoo (patern mining anti-spam) Tutorial i ćwiczenia do wykonania skupiają się na rekomendacji. Rekomendacja zaimplementowane algorytmy: User-based Collaborative Filtering (klasa GenericUserBasedRecommender) Item-based Collaborative Filtering (GenericItemBasedRecommender) SlopeOne Recommenders (SlopOneRecommender) Singular Value Decomposition-based Collaborative Filtering (SVDRecommender) W ramach oryginalnego projektu Mahout, dla celów reokmendacji wyodręniono framework do collaborative filtering o nazwie Taste. Rekomendacja w Mahout: Input: surowe dane (preferencje użytkowników) Output: estymacja preferencji Kroki działania systemu rekomendacyjnego: Step : mapowanie surowych danych na obiekty DataModel, na których operuje Mahout Step 2: ustalenie przez użytkownika parametrów systemu rekomendacyjnego: miara podobieństwa, sąsiedztwo, itd. Step 3: obliczenie estymat ocen. Step 4: ocena systemu rekomendacyjnego. - 9 -
Kluczowe interfacy Javy: DataModel: mapowanie surowych danych na format wymagany przez Mahout Każda metoda mapujące surowe dane na format Mahout jest implementacją generycznego interfacu, np. MySQLLJDBCDataModel wypełnia DataModel na postawie danych z bazy MySQL; możliwość wypełnienia na postawie MySQL, PostgreSQL, zewnętrznych plików (FileDataModel, format CSV), bezpośrednio z kodu FileDataModel zakłada, że dane są w pliku CSV,0,5.0 użytkownik ocenił obiekt 0 na 5.0,02,3.0 2,02,2.0 użytkownik 2 ocenił 02 na 2.0 2,04,5.0 Bez względu na źródło danych, oparowanie na obiektach DataModel jest takie samo Podstawowe obiekty: Preference trójka (user, item, score), przechowywane w UserPreferenceArray; dwie implementacje: GenericUserPreferenceArray (numeryczne preferencje), BooleanUserPreferenceArray (pomija numeryczne preferencje). UserSimilarity: obliczenie stopnia podobieństwa (korelacji) dla par użytkowników ItemSimilarity: obliczenie stopnia podoieńśtwa (korelacji) dla par obiektów Miary podobieństwa dla UserSimilarity oraz ItemSimilarity: Pearson Correlation Spearman Correlation Euclidean Distance Cosine Coefficient NC N A N B - N A liczba klientów którzy kupili produkt A, NC liczba klientów którzy kupili produkty A i B. Tanimoto Coefficient: N A N + N C B N C LogLikelihood Similarity LogLikelihood Similarity UserNeighborhood: metody dla zdefiniowania pojęcia sąsiedztwa N najbliższych sąsiadów N użytkowników (obiektów) z najwyższym podobieństwem jest uważanych za bliskich sąsiadów Próg (threshold) użytkownicy (obiekty) z podobieństwem wyższym od progu jest uważanych za bliskich sąsiadów Recommender - metody implementujące podejścia do rekomendacji - 0 -
RecommederEvaluator - metody implementujące funkcje oceny działania systemu rekomendacyjnego Miary oceny działania systemu rekomendacyjnego: Oparte na predykcji: Mean Average Error oraz RMSE (Root Mean Square Error) Na przykład: AverageAbsoluteDifferenceEvaluator - metoda: evaluate() z parametrami: Recommender implementation DataModel implementation TrainingSet size (np. 70%) % danych wykorzystywanych w ocenie Zapożyczone z IR (Information Retrieval): precision, recal, F także w wersji obciętej do k Na przykład: GenericReommenderIRStatsEvaluator - metoda: evaluate() z parametrami: Recommender implementation DataModel implementation Relevance Threshold (średnia + odchylenie standardowe) % danych wykorzystywanych w ocenie Tutorial + ćwiczenia odwołują się do zbioru danych movies.csv (zakładam że będzie on w folderze data w katalogu projektu; plik pobrałem z MovieLens i przetransformowałem do formatu wymaganego przez Mahout) W ramach ćwiczeń tutorialowych (I, II, III, IV, V, VII, VIII) w katalogu lab7 znajdują się klasy, które je rozwiązują. Ćwiczenia właściwe (VI, IX) polegają na rozwiązaniu analogicznego problemu samodzielnie (nie zmienia to faktu, że rozwiązuje się to przez analogię do tego co dostarczam w klasach dla tutorialu). Dodaj do projektu biblioteki (są spakowane w katalogu lib w lab7): mahout-core-0.9.jar mahout-integration-0.9.jar mahout-math-0.9.jar guava-8.0.jar slf4j-api-.7.7.jar slf4j-nop-.7.7.jar commons-math3-3.3.jar - -
I. Klasa CreatePreferenceArray Ćwiczenie polega na utworzeniu obiektu klasy Preference i wypełnieniu go preferencjami (ocenami) pojedynczego użytkownika dla dwóch obiektów bezpośrednio z poziomu kodu Klasy: GenericUserPreferenceArray, Preference PreferenceArray przechowuje preferencje pojedynczego użytkownika II. Klasa CreateGenericDataModel Ćwiczenie polega na utworzeniu obiektu klasy DataModel i wypełnieniu go preferencjami podanymi z poziomu kodu. Klasy: FastByIdMap, DataModel FastByIdMap przechowuje preferencje wszystkich użytkowników - jest rodzajem HashMapy zaprojektowanej tak, by zoptymalizować czynności związane z rekomendacją III. Klasa ExampleSimilarity Ćwiczenie polega na utworzenie DataModel na podstawie danych z pliku CSV (data/movies.csv) i obliczenie podobieństwa między użytkownikami dla wybranych miar podobieństwa: Pearsona i Eukildesowej Klasy: FileDataModel, PearsonCorrelationSimilarity, TanimotoCoefficientSimilarity, itd. IV. Klasa RecommederIntro Zadanie polega na utworzeniu prostego systemu rekomendacyjnego w oparciu o następującą charakterystykę: Utworzenie DataModel na podstawie danych z pliku CSV Zdefiniowanie miary podobieństwa z korelacją Pearsona Działa jako User-based CF Zdefiniowanie sąsiedztwa jaka 50-NN Wypisanie rekomendacji: top 0 obiektów dla użytkownika nr 50 Klasy: FileDataModel, UserSimilarity, UserNeighborhood, Recommender, RecommendedItem V. Klasa RecommnederIntroAdvanced Zadanie polega na utworzeniu bardziej złożonego systemu rekomendacyjnego o następującej charakterystyce: Utworzenie DataModel na podstawie danych z pliku CSV Zdefiniowanie miary podobieństwa ze współczynnikiem Tanimoto Działa jako Item-based CF Dla Item-based CF nie definiuje się sąsiedztwa Wypisanie dla każdego obiektu 5 obiektów najbardziej do niego podobnych - 2 -
VI. [3] Samodzielne: Zadanie polega na napisaniu klasy EZIRecommender, która będzie implementowała system rekomendacyjny o następującej charakterystyce: Utworzenie DataModel na podstawie danych z pliku CSV Zdefiniowanie miary podobieństwa jako odległości Euklidesowej Zdefiniowanie sąsiedztwa z definicją progową (threshold=0.7) User-based Collaborative Filtering Wypisze dla każdego użytkownika 3 najlepsze rekomendacje (obiekty) recommeder.recommend(userid,3) Dla użytkownika o numerze 943, wskaż 3 rekomendowane obiekty wraz z podobieństwami dodaj ten wynik jako komentarz w kodzie klasy VII. Klasa EvaluatorIntro Zadanie polega na ocenie systemu rekomendacyjnego (User-based CF, Pearson, 00-NN) za pomocą następującej metody: Wykorzystanie RandomUtils.useTestSeed() by zapewnić spójność między różnymi uruchomieniami testy Metryka Mean Average Error 70% zbioru danych jako dane uczące Testowanie na całym zbiorze Interface RecommenderEvaluation, Klasa AverageAbsoluteDifferenceRecommenderEvaluation Metoda evaluate() RecommenderBuilder instancja systemu rekomendacyjnego DataModelBuilder kryterium do uczenia Split Training-Test double (np. 0.7 dla 70%) Ilość danych wykorzystywanych w ocenie double (np..0 dla 00%) VIII. Klasa IREvaluatorIntro Zadanie polega na ocenie systemu rekomendacyjnego (Item-based CF, Pearson) za pomocą następującej metody: Wykorzystanie RandomUtils.useTestSeed() by zapewnić spójność między różnymi uruchomieniami testy Metryki: Precision, Recall, F obcięte do 5 Klasy: GenericRecommenderIRStatsEvaluator IX. [3] Samodzielne: zadanie polega na napisaniu klasy EZIEvaluator, która będzie implementowała ocenę różnych 2 (3 razy 4) konfiguracji systemu rekomendacyjnego typu User-based CF: Miara podobieństwa: odległość Euklidesowa, korelacja Pearsona, współczynnik Tanimoto Miara sąsiedztwa: próg 0.5 lub 0.7 albo najbliższych sąsiadów 5 lub 9 Metryka oceny: RMSE (Root Mean Square Error) Wskaż najlepszą konfigurację w komentarzu w kodzie klasy. Jako rozwiązanie arkusz + 2 klasy (EZIRecommender + EZIEvaluator). - 3 -