Zaawansowane uczenie maszynowe:
tematy projektów


Typy tematów

Proponowane tematy projektów są podzielone na dwa typy: implementacyjno-analityczne oraz analityczne. Podstawowa różnica między nimi polega na tym, że w tematach pierwszego typu wymagana jest samodzielna implementacja pewnego algorytmu oraz, w ograniczonym zakresie, badanie jego właściwości, zaś w tematach drugiego typu nie jest wymagana samodzielna implementacja żadnego algorytmu, lecz szeroko zakrojone badania pewnego zbioru dostępnych algorytmów w realistycznym zastosowaniu.

Środowisko realizacji

Środowiskiem implementacji i eksperymentów dla wszystkich tematów projektu (w tym także tematów zaproponowanych przez wykonawców) jest język R lub język Python. Wykonawcy mogą przedstawić propozycję realizacji części zakresu projektu w obydwu środowiskach (np. w celu porównania dostępnych w obu środowiskach implementacji niektórych algorytmów).

Tematy implementacyjno-analityczne

Tematy implementacyjno-analityczne obejmują część implementacyjną i część analityczną. Część implementacyjna polega albo na samodzielnej implementacji pewnego algorytmu, albo na modyfikacji istniejącej implementacji pewnego algorytmu. Należy przy tym zapewnić maksymalną uniwersalność implementowanych algorytmów (możliwość wielokrotnego używania dla dowolnych zbiorów danych) i stosować się do przyjmowanych powszechnie w języku R lub języku Python konwencji dotyczących przekazywania danych, parametrów i zwracania wyników.

Część analityczna polega na eksperymentalnym zademonstrowaniu działania zaimplementowanego/zmodyfikowanego algorytmu w zastosowaniu do kilku wybranych zbiorów danych, w porównaniu z innymi algorytmami dostępnymi w środowisku R lub Python realizującymi to samo lub podobne zadanie. Należy ocenić jakość uzyskiwanych modeli w zależności od doboru parametrów wpływających na działanie algorytmów. Zakres tych eksperymentów jest z założenia ograniczony, ale powinien obejmować demonstrację zastosowania algorytmów do więcej niż jednego zbioru danych, podstawową ocenę jakości uzyskiwanych modeli oraz wpływu parametrów algorytmów na tę jakość.

Zgłoszenie tematu implementacyjno-analitycznego polega na wpisaniu składu zespołu oraz numeru tematu do arkusza wyboru tematu (link wysłany na listę mailową przedmiotu).

Lista tematów

  1. Budowa drzew decyzyjnych i drzew regresji z uwzględnieniem wiedzy dziedzinowej przy wyborze podziałów przez określenie preferencji (w przypadku kilku podziałów o zbliżonej jakości decydują preferencje użytkownika) lub przez wspomagany wybór interaktywny (użytkownik wybiera podział spośród kilku proponowanych podziałów o zbliżonej jakości). Implementacja przez modyfikację algorytmu z pakietu rpart (w przypadku realizacji w środowisku R) lub biblioteki scikit-learn (w przypadku realizacji w środowisku Python).

  2. Indukcja reguł za pomocą algorytmu typu "sekwencyjnego pokrywania" z przycinaniem inspirowanego przez wybrane klasyczne algorytmy (AQ, CN2, IREP, RIPPER). Funkcje do tworzenia modelu i predykcji. Porównania z wybranymi algorytmami klasyfikacji dostępnymi w środowisku R lub Python.

  3. Generowanie, przycinanie i stosowanie do predykcji zbiorów reguł na podstawie drzew decyzyjnych tworzonych przez algorytm z pakietu rpart (w przypadku realizacji w języku R) lub biblioteki scikit-learn (w przypadku realizacji w języku Python). Funkcje/metody do ekstrakcji zbioru reguł z drzewa, przycinania zbioru reguł i stosowania zbioru reguł do predykcji. Porównanie z drzewami decyzyjnymi i modelami tworzonymi za pomocą wybranych innych algorytmów klasyfikacji dostępnych w środowisku R lub Python.

  4. Tworzenie modeli klasyfikacji jednoklasowej przez zastosowanie dekompozycji na wiele zadań klasyfikacji binarnej z losowo generowanymi podziałami zbioru danych na klasy i selekcji podzbioru najlepszych modeli. Porównanie z algorytmami klasyfikacji jednoklasowej dostępnymi w środowisku R lub Python.

  5. Tworzenie modeli klasyfikacji jednoklasowej przez sztuczne generowanie przykładów odstających i stosowanie algorytmów klasyfikacji binarnej do odróżniania prawdziwych i sztucznych przykładów. Implementacja w formie opakowania umożliwiającego użycie dowolnego algorytmu klasyfikacji dostępnego w środowisku R lub Python stosującego standardowy interfejs wywołania. Funkcje do tworzenia modelu i predykcji. Porównanie z algorytmami klasyfikacji jednoklasowej dostępnymi w środowisku R lub Python.

  6. Tworzenie modeli klasyfikacji wieloklasowej przez zastosowanie dekompozycji na wiele zadań klasyfikacji binarnej z użyciem kodu z korekcją błędów. Implementacja w formie opakowania umożliwiającego użycie dowolnego algorytmu klasyfikacji dostępnego w środowisku R lub Python stosującego standardowy interfejs wywołania. Funkcje do tworzenia modelu i predykcji. Porównanie z algorytmami klasyfikacji bezpośrednio obsługującymi wiele klas dostępnymi w środowisku R lub Python.

  7. Tworzenie modeli klasyfikacji wieloetykietowej przez zastosowanie dekompozycji na wiele powiązanych zadań klasyfikacji jednoetykietowych zgodnie z metodą bayesowskiego łańcucha klasyfikatorów. Porównanie z algorytmami klasyfikacji wieloetykietowej dostępnymi w środowisku R lub Python.

  8. Tworzenie zespołu modeli klasyfikacji przez wielokrotne stosowanie dowolnego algorytmu klasyfikacji do bootstrapowych prób ze zbioru trenującego z losowo wybranym podzbiorem atrybutów. Porównanie z wybranymi algorytmami klasyfikacji tworzącymi pojedyncze modele oraz implementacjami algorytmów bagging i random forest dostępnymi w środowisku R lub Python.

  9. Ekstrakcja reguł do klasyfikacji z lasu losowego z wykorzystaniem metody globalnego modelu zastępczego (global surrogate model). Funkcje do ekstrakcji zbioru reguł i stosowania zbioru reguł do predykcji. Porównanie jakości predykcji z lasami losowymi i pojedynczymi drzewami.

  10. Aktywne uczenie się modeli klasyfikacji na podstawie małych zbiorów trenujących przez zgłaszanie zapytania o prawdziwe wartości atrybutu docelowego dla ograniczonej liczby przykładów z dostarczonego dużego zbioru danych nieetykietowanych wybranych według określonych kryteriów (np. przykłady bliskie granicy decyzyjnej dotychczasowego modelu lub takie, dla których jego predykcje są obarczone największą niepewnością) i iteracyjne doskonalenie modelu na podstawie powiększanego w ten sposób zbioru trenującego. Implementacja w formie opakowania umożliwiającego użycie dowolnego algorytmu klasyfikacji dostępnego w środowisku R lub Python stosującego standardowy interfejs wywołania. Badanie wpływu użycia aktywnego uczenia się na jakość modeli klasyfikacji tworzonych na podstawie małych zbiorów trenujących za pomocą wybranych algorytmów dostępnych w środowisku R lub Python.

  11. Zautomatyzowane próbkowanie danych przy tworzeniu modeli klasyfikacji lub regresji na podstawie dużych zbiorów trenujących przez iteracyjne powiększanie początkowej małej próbki o przykłady wybrane według określonych kryteriów (np. przykłady "trudne" do predykcji, niepodobne do dotychczasowego zbioru trenującego itp.). Implementacja w formie opakowania umożliwiającego użycie dowolnego algorytmu klasyfikacji lub regresji dostępnego w środowisku R lub Python stosującego standardowy interfejs wywołania. Badanie wpływu próbkowania na jakość i szybkość tworzenia modeli klasyfikacji i regresji za pomocą wybranych algorytmów dostępnych w środowisku R lub Python.

  12. Zintegrowane uwzględnianie kosztów pomyłek przy tworzeniu modeli klasyfikacji przez próbkowanie przykładów klas o niskich kosztach pomyłek, replikację przykładów klas o wysokich kosztach pomyłek oraz zmianę etykiet (metoda MetaCost). Implementacja w formie opakowania umożliwiającego użycie dowolnego algorytmu klasyfikacji dostępnego w środowisku R lub Python stosującego standardowy interfejs wywołania. Funkcje do tworzenia modelu i predykcji. Badanie wpływu uwzględniania kosztów pomyłek na jakość modeli klasyfikacji tworzonych za pomocą wybranych algorytmów dostępnych w środowisku R lub Python.

  13. Nienadzorowana detekcja anomalii na podstawie niepodobieństwa do sąsiadów z możliwością użycia dowolnej miary niepodobieństwa. Porównanie z nienadzorowaną detekcją anomalii za pomocą algorytmów klasyfikacji jednoklasowej dostępnych w środowisku R lub Python.

  14. Nienadzorowana detekcja anomalii na podstawie niepodobieństwa do grup wyznaczanych za pomocą algorytmów grupowania. Implementacja w formie opakowania umożliwiającego użycie różnych algorytmów grupowania dostępnych w środowisku R lub Python i różnych miar niepodobieństwa. Porównanie z nienadzorowaną detekcją anomalii za pomocą algorytmów klasyfikacji jednoklasowej dostępnych w środowisku R lub Python.

Dane do części analitycznej

W części analitycznej tematów implementacyjno-analitycznych należy, o ile temat nie nakazuje inaczej, wykorzystywać zbiory danych z repozytoriów UCI lub KEEL. O ile specyfika tematu nie wymaga inaczej, należy wybrać co najmniej 2-3 zbiory danych o realistycznych rozmiarach (więcej niż 1000 przykładów, więcej niż 10 atrybutów) dostosowane do typu algorytmów, których dotyczy zadanie, oraz niewymagające dodatkowego wstępnego przetwarzania.

Tematy analityczne

Tematy analityczne mają wyłącznie część analityczną, jest jednak ona znacząco rozbudowana i obejmuje pełen proces wnikliwej i szeroko zakrojonej analizy danych oraz tworzenia modeli z wykorzystaniem szeregu algorytmów, których implementacje są dostępne w bibliotekach języka R lub języka Python. Zakres niezbędnych prac może obejmować:

być może iteracyjnie powtarzanych (jeśli na podstawie oceny jakości uzyskanych modeli można zaproponować modyfikacje wcześniejszych kroków). W przypadku dużych zbiorów danych może być konieczne ograniczenie całości bądź części prowadzonych badań do losowo wybranych podzbiorów.

Każde z proponowanych zadań wymaga konkretyzacji odpowiedniej dla wybranego zbioru danych, której należy dokonać indywidualnie kierując się dostępnymi informacjami na temat źródła i pierwotnego przeznaczenia danych oraz własnymi zainteresowaniami, w razie potrzeby korzystając z konsultacji. Opis skonkretyzowanego zadania musi się znaleźć w specyfikacji projektu.

Zgłoszenie tematu analitycznego polega na wybraniu wariantu zadania i zbioru danych oraz wpisaniu składu zespołu, kodu zadania i numeru zbioru danych (np. K1 -- klasyfikacja, zbiór danych 1) lub numeru źródła danych poprzedzonego literą "z" (np. KTz1 -- klasyfikacja tekstu, źródło danych 1) do arkusza wyboru tematu (link wysłany na listę mailową przedmiotu).

Zadania

Należy wybrać zadanie z poniższej listy, a po wyborze zbioru danych dokonać jego konkretyzacji.

Dane

Do realizacji tematów analitycznych należy wybrać gotowy zbiór danych lub źródło danych do pobrania i samodzielnego przygotowania z poniższej listy. W przypadku gotowych zbiorów danych należy przed wyborem upewnić się, że wybrany zbiór danych jest wciąż dostępny i odpowiedni do wybranego zadania oraz pobrać go niezwłocznie, aby uniknąć ewentualnych późniejszych problemów z dostępnością.

W przypadku źródeł danych proces pobierania może być bardziej złożony (np. wymagać użycia dedykowanych narzędzi lub API przeznaczonych ekstrakcji tekstu z serwisów internetowych itp.), są więc one raczej rekomendowane dla osób posiadających stosowne doświadczenie lub gotowych do wykonania dodatkowej pracy w celu jego zdobycia. Należy jak najszybciej zweryfikować techniczną możliwość pobrania danych i ich przetworzenia do postaci nadającej się do analizy.

Zbiory danych

  1. Dane Balabit Mouse Dynamics Chalange -- rozpoznawanie nieautoryzowanych użytkowników na podstawie wzorców ruchu myszy.

  2. Dane RT-IoT2022 -- wykrywanie ataków na infrastrukturę IoT.

  3. Dane SGEMM GPU Kernel Performance (UCI) -- predykcja wydajności obliczeniowej.

  4. Dane Dynamic Features of VirusShare Executables (UCI) -- detekcja złośliwego kodu.

  5. Dane Appliances Energy Prediction (UCI) -- predykcja zużycia energii.

  6. Dane Human Activity Recognition Using Smartphones (UCI) -- detekcja czynności ruchowych człowieka.

  7. Dane Job Change of Data Scientists (Kaggle) -- predykcja odchodzenia z pracy specjalistów data science.

  8. Dane Airline Passenger Satisfaction (Kaggle) -- predykcja zadowolenia klientów linii lotniczych.

  9. Dane Credit Card Fraud Detection (Kaggle) -- detekcja oszustw w płatnościach kartami.

  10. Dane KDD Cup 2009 -- predykcja zachowań klientów sieci GSM.

  11. Dane KDD Cup 1998 -- predykcja skuteczności marketingu bezpośredniego.

  12. Dane Outlier Detection Datasets -- kolekcja zbiorów danych do detekcji anomalii.

  13. Dane CERN Proton Collision (Kaggle) -- predykcja liczby strumieni protonów o dużym pędzie poprzecznym.

  14. Dane tekstowe SpamAssassin Public Corpus -- pożądane/niepożądane wiadomości e-mail.

  15. Dane tekstowe Reuters-21578 (UCI) -- depesze agencyjne.

  16. Dane tekstowe 20 Newsgroups (UCI) -- wiadomości z grup dyskusyjnych Usenet.

  17. Dane tekstowe UM SI 670 -- artykuły naukowe.

  18. Dane tekstowe M35216F -- artykuły naukowe.

  19. Dane tekstowe NFS Research Award Abstracts 1990-2003 (UCI) -- wnioski grantowe.

  20. Dane tekstowe Amazon Fine Food Reviews (Kaggle) -- recenzje potraw.

  21. Dane tekstowe Wine Reviews (Kaggle) -- recenzje win.

  22. Dane tekstowe Amazon Product Reviews -- recenzje produktów.

Źródła danych

  1. Dane z wybranego serwisu handlu elektronicznego (kategorie, parametry i opisy ofert lub recenzje produktów).

  2. Dane z wybranego forum internetowego (kategorie/działy, czas, treści wpisów).

  3. Dane z wybranego serwisu społecznościowego (kategorie/działy/tagi, lokalizacja, czas, treści wpisów).

  4. Dane z wybranych działów Wikipedii (kategorie i treści artykułów).


Strona przedmiotu ZUM

Paweł Cichosz