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
- 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).
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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ć:
- przygotowanie danych,
- podstawowy statystyczny opis danych,
- transformację danych (np. dyskretyzację, kodowanie atrybutów
dyskretnych, standaryzację),
- selekcję atrybutów,
- strojenie parametrów algorytmów,
- tworzenie modeli,
- wnikliwą ocenę jakości modeli,
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.
- Klasyfikacja (K). Konkretyzacja tego zadania wymaga:
- ustalenia atrybutu dyskretnego reprezentującego pojęcie
docelowe,
- określenia zakresu przygotowania danych (np. przetworzenia
do odpowiedniej postaci tabelarycznej, modyfikacji
typów/zbiorów wartości atrybutów, eliminacji/naprawy
defektów danych, modyfikacji rozkładu klas, losowania
podzbiorów danych),
- wskazania możliwości zdefiniowania nowych atrybutów,
- wyboru algorytmu selekcji atrybutów,
- wyboru algorytmów klasyfikacji,
- wskazania parametrów algorytmów klasyfikacji wymagających
strojenia (w tym parametrów umożliwiających zwiększanie
wrażliwości na klasy rzadziej występujące, trudniejsze do
prawidłowej predykcji lub o wyższych kosztach pomyłek)m
- ustalenia procedur oceny (np. k-krotna walidacja krzyżowa) i
miar jakości modeli (np. precyzja, odzysk, F1, krzywe ROC
i PR).
Wybierając zbiór danych do tego zadania należy się upewnić, że
występuje w nim co najmniej jeden atrybut dyskretny, który mógłby
pełnić rolę interesującego pojęcia docelowego.
- Regresja (R). Konkretyzacja tego zadania wymaga:
- ustalenia atrybutu ciągłego reprezentującego funkcję docelową,
- określenia zakresu przygotowania danych (np. przetworzenia do
odpowiedniej postaci tabelarycznej, modyfikacji typów/zbiorów
wartości atrybutów, eliminacji/naprawy defektów danych,
przekształcenia wartości funkcji docelowej, losowania prób),
- wskazania możliwości zdefiniowania nowych atrybutów,
- wyboru algorytmu selekcji atrybutów,
- wyboru algorytmów regresji,
- wskazania parametrów algorytmów regresji wymagających
strojenia,
- ustalenia procedur oceny (np. k-krotna walidacja krzyżowa) i
miar jakości modeli (np. MSE, MAE, R2).
Wybierając zbiór danych do tego zadania należy się upewnić, że
występuje w nim co najmniej jeden atrybut ciągły, który mógłby pełnić
rolę interesującej funkcji docelowej.
- Grupowanie (G). Konkretyzacja tego zadania wymaga:
- ustalenia atrybutów wykorzystywanych do grupowania
(traktowanych jako obserwowalne) oraz ewentualnie zbioru
atrybutów, na temat których będzie prowadzone wnioskowanie na
podstawie przynależności do grup (traktowanych jako
ukryte),
- określenia zakresu przygotowania danych (np. przetworzenia do
odpowiedniej postaci tabelarycznej, modyfikacji typów/zbiorów
wartości atrybutów, eliminacji/naprawy defektów danych,
losowania prób),
- wskazania możliwości zdefiniowania nowych atrybutów
(obserwowalnych),
- ustalenia kryteriów lub algorytmu selekcji atrybutów
(obserwowalnych),
- wyboru algorytmów grupowania,
- wyboru miar niepodobieństwa przykładów (dla algorytmów, które
je wykorzystują),
- wskazania parametrów algorytmów grupowania wymagających
strojenia,
- ustalenia miar jakości modeli (np. szerokość sylwetki, index
Dunna, indeks Daviesa-Bouldina, indeks Randa),
- ustalenia sposobu opisu grup i charakteryzowania ich specyfiki
na podstawie rozkładu wartości atrybutów.
- Klasyfikacja tekstu (KT). Konkretyzacja tego zadania wymaga:
- ustalenia wykorzystywanych technik wektorowej reprezentacji
tekstu (co najmniej dwie różne reprezentacje),
- określenia zakresu przygotowania danych (np. modyfikacji
rozkładu klas, losowania prób),
- ustalenia kryteriów/algorytmu selekcji atrybutów (słów) lub
transformacji redukującej wymiarowość,
- wyboru algorytmów klasyfikacji,
- wskazania parametrów algorytmów klasyfikacji wymagających
strojenia,
- ustalenia procedur oceny (np. krotna walidacja krzyżowa) i miar
jakości modeli (np. precyzja, odzysk, F1, krzywe ROC i
PR).
Wybierając tekstów do tego zadania należy się upewnić, że są one
poetykietowane klasami pewnego pojęcia docelowego.
- Grupowanie tekstu (GT). Konkretyzacja tego zadania wymaga:
- ustalenia wykorzystywanych technik wektorowej reprezentacji
tekstu (co najmniej dwie różne reprezentacje),
- określenia zakresu przygotowania danych (np. losowania
prób),
- ustalenia kryteriów/algorytmu selekcji atrybutów
(słów) lub transformacji redukującej wymiarowość,
- wyboru algorytmów grupowania,
- wyboru miar niepodobieństwa przykładów (dla algorytmów, które
je wykorzystują),
- wskazania parametrów algorytmów grupowania wymagających
strojenia,
- ustalenia miar jakości modeli (np. szerokość sylwetki, index
Dunna, indeks Daviesa-Bouldina, indeks Randa),
- ustalenia sposobu opisu grup i charakteryzowania ich specyfiki
na podstawie rozkładu występowania słów.
- Detekcja anomalii (DA). Zadanie to można uznać za
specyficzną odmianę dwuklasowej klasyfikacji, w której przykłady
klasy reprezentującej anomalii są zazwyczaj bardzo nieliczne lub w
ogóle nie są dostępne. W projekcie należy uwzględnić oba te warianty
zadania. W pierwszym przypadku, odpowiadającym tzw. nadzorowanej
detekcji anomalii, mogą być zastosowane zwykłe algorytmy
klasyfikacji pod warunkiem ich odpowiedniego uwrażliwienia na mniej
liczną klasę. W drugim przypadku mamy do czynienia z
tzw. nienadzorowaną detekcją anomalii, w której poszukuje się modelu
umożliwiającego identyfikowanie przykładów najbardziej nietypowych i
odróżniających się od pozostałych, np. przez mierzenie stopnia
niepodobieństwa do najbliższych sąsiadów lub grup wyznaczonych za
pomocą pewnego algorytmu grupowania, a także zastosowania algorytmów
klasyfikacji jednoklasowej. Konkretyzacja tego zadania wymaga:
- wyboru klasy reprezentującej przypadki nieprawidłowe,
- określenia zakresu przygotowania danych (np. przetworzenia
do odpowiedniej postaci tabelarycznej, eliminacji/naprawy
defektów danych, losowania podzbiorów danych),
- wskazania możliwości zdefiniowania nowych atrybutów,
- ustalenia kryteriów lub algorytmu selekcji atrybutów,
- wyboru algorytmów nadzorowanej i nienadzorowanej detekcji
anomalii,
- wskazania parametrów algorytmów wymagających strojenia (ze
szczególnym uwzględnieniem parametrów mających wpływ na
wrażliwość na anomalie),
- ustalenia procedur oceny (np. k-krotna walidacja krzyżowa) i
miar jakości detekcji anomalii (np. precyzja, odzysk, F1,
krzywe ROC i PR).
Wybierając zbiór danych do tego zadania należy się ograniczyć do
zbiorów danych do detekcji anomalii lub takich zbiorów danych do
klasyfikacji do klasyfikacji, dla których można sensownie rozważać
detekcję anomalii (tzn. takich, w których da się wyróżnić jedną
mniej licznie reprezentowaną klasę, która byłaby traktowana jako
odpowiadająca przypadkom nieprawidłowym).
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
-
Dane Balabit
Mouse Dynamics Chalange -- rozpoznawanie nieautoryzowanych
użytkowników na podstawie wzorców ruchu myszy.
-
Dane RT-IoT2022
-- wykrywanie ataków na infrastrukturę IoT.
- Dane
SGEMM
GPU Kernel Performance (UCI) -- predykcja wydajności
obliczeniowej.
- Dane
Dynamic
Features of VirusShare Executables (UCI) -- detekcja złośliwego
kodu.
- Dane
Appliances
Energy Prediction (UCI) -- predykcja zużycia energii.
- Dane
Human
Activity Recognition Using Smartphones (UCI) -- detekcja czynności
ruchowych człowieka.
- Dane
Job
Change of Data Scientists (Kaggle) -- predykcja odchodzenia z
pracy specjalistów data science.
- Dane
Airline
Passenger Satisfaction (Kaggle) -- predykcja zadowolenia
klientów linii lotniczych.
-
Dane Credit
Card Fraud Detection (Kaggle) -- detekcja oszustw w płatnościach
kartami.
- Dane KDD
Cup 2009 -- predykcja zachowań klientów sieci GSM.
-
Dane KDD
Cup 1998 -- predykcja skuteczności marketingu
bezpośredniego.
- Dane Outlier Detection
Datasets -- kolekcja zbiorów danych do detekcji
anomalii.
- Dane CERN
Proton Collision (Kaggle) -- predykcja liczby strumieni
protonów o dużym pędzie poprzecznym.
- Dane
tekstowe SpamAssassin
Public Corpus -- pożądane/niepożądane wiadomości e-mail.
- Dane
tekstowe Reuters-21578
(UCI) -- depesze agencyjne.
- Dane
tekstowe 20
Newsgroups (UCI) -- wiadomości z grup dyskusyjnych
Usenet.
- Dane
tekstowe UM
SI 670 -- artykuły naukowe.
- Dane
tekstowe M35216F -- artykuły naukowe.
- Dane
tekstowe NFS
Research Award Abstracts 1990-2003 (UCI) -- wnioski grantowe.
- Dane
tekstowe Amazon
Fine Food Reviews (Kaggle) -- recenzje potraw.
- Dane
tekstowe Wine Reviews (Kaggle) -- recenzje win.
- Dane
tekstowe Amazon
Product Reviews -- recenzje produktów.
Źródła danych
- Dane z wybranego serwisu handlu elektronicznego (kategorie,
parametry i opisy ofert lub recenzje produktów).
- Dane z wybranego forum internetowego (kategorie/działy, czas,
treści wpisów).
- Dane z wybranego serwisu społecznościowego
(kategorie/działy/tagi, lokalizacja, czas, treści wpisów).
- Dane z wybranych działów Wikipedii (kategorie i treści
artykułów).
Strona przedmiotu ZUM
Paweł Cichosz