Projekt z przedmiotu Wstęp do Algorytmów Ewolucyjnych.
Użycie algorytmu ewolucyjnego do szukania maximum wiarogodności na dyskretnej przestrzeni permutacji
Problem interpretuje się jako analizowanie korelacji celem znalezienia zależności między zmiennymi w danych tabelarycznych.
Algorytm ewolucyjny porównano z powszechnie używanym do tego celu algorytmem Metropolisa-Hastingsa (MH), zaimplementowanym pod gips::MH()
w pakiecie gips
dostępnym na stronie GitHub. Głównym celem projektu było znalezienie algorytmu radzącego sobie lepiej niż MH.
- Zaimplementowano do porównania algorytmy losowy (Monte Carlo, MC) oraz największego wzrostu (Best Growth, BG).
- Zaimplementowano algorytm ewolucyjny (Ewolutionary Optimization, EO) z adaptacją wielkości mutacji.
- Przeprowadzono szereg eksperymentów numerycznych mających na celu dopasowanie parametrów algorytmu do rozważanej rodziny problemów.
- Porównano wyniki działania algorytmu ze sobą oraz z algorytmami referencyjnymi MC, BG i MH.
- Przeprowadzono testy statystyczne i wywnioskowano, że najlepsza znaleziona konfiguracja EO jest lepsza od algorytmów referencyjnych.
Projekt zakończył się pełnym sukcesem. Znaleziono konfigurację EO dającą znaczące lepsze rezultaty niż MH. Więcej informacji o szczegółach można przeczytać w raporcie TODO().
Wszystkie wyniki są oparte o reprodukowalny skrypt generujący dane, znajdujący się w pliku R/parameters_tuning_generate_data.R
. Skrypt ten generuje dane, które są następnie zapisywane w folderze data
. Dane te są wykorzystywane przez skrypt R/parameters_tuning_plots.R
do tworzenia wykresów i do przeprowadzania testów statystycznych. Wykresy są zapisywane w folderze plots
.
Projekt wykonany jest w języku programowania R
. Wykorzystano pakiet gips
dostępnym na stronie GitHub. Skrypty są reprodukowalne na commicie pakietu gips
o id 91ce43e068f
. Zainstalować więc można pakiet gips
za pomocą zaklęcia: devtools::install_github("PrzeChoj/gips", ref = "91ce43e068f")
.
Algorytm BG wytworzony w ramach tego projektu został później dołączony jako część pakietu gips
, a algorytm MC będzie dołączony w przyszłości.
W pracy zidentyfikowano kilka potencjalnych ścieżek rozwoju:
- Analiza przeprowadzona na większej ilości reprezentantów analizowanej rodziny funkcji celu, np o większej liczbie wymiarów
$p$ . - Porównanie EO z algorytmem symulowanego wyżarzania.
- Rozszerzenie EO o mechanizm krzyżowania.
- Analiza przykładowego praktycznego przypadku użycia, np. do klasyfikacji modelem QDA.
- Zastanowić się nad innym rodzajem mutacji, np. w oparciu o cykle, a nie dowolne permutacje.