added readme

This commit is contained in:
Jakub Adamski 2022-06-06 12:54:37 +02:00
parent 89cbcf7b9a
commit f965ceec53
2 changed files with 53 additions and 1 deletions

View File

@ -0,0 +1,52 @@
# Projekt 2
Szanowni Państwo,
Przesyłam propozycje 8 tematów projektu nr 2.
Zasady zaliczenia: 40 punktów podzielone następująco:
10 pkt - prezentacja projektu
15 pkt - implementacja, w tym:
5 pkt - zgodność z tematem,
5 pkt - jakość kodu,
5 pkt - poprawność implementacji
10 pkt - efekt "wow"
5 pkt - aktywność wszystkich członków grupy
Grupy domyślnie są 3-osobowe. Idealnie każda grupa studencka (w danej grupie ćwiczeniowej) powinna realizować inny temat. Studenci mogą zaproponować inne tematy spoza listy po konsultacji z nami. Do wyboru: Python lub R.
24 maja podczas ćwiczeń odbędzie się podział na grupy i przypisanie do tematów. Proszę sprawę przemyśleć.
Termin oddania: ustalony z prowadzącym ćwiczenia. Prezentacja projektów odbędzie się na spotkaniu umówionym z prowadzącym grupę ćwiczeniową. Ocena z projektów powinna być wystawiona przed przystąpieniem do egzaminu dnia 28 czerwca br.
1. Hierarchiczna analiza skupień metodą Warda.
Zakładamy, że dysponujemy zbiorem danych ciągłych. Jako miarę odległości pomiędzy obserwacjami przyjmijmy odległość euklidesową, a jako miarę wiązania skupień metodę Warda. Zakładamy, że wszystkie punkty na początku stanowią osobne grupy. W następnych krokach łączymy punkty (grupy punktów) najbardziej do siebie podobne. Postępujemy tak aż do połączenia wszystkich punktów. Implementacja powinna umożliwić zadanie parametru określającego liczbę grup. Na tej podstawie rysowany jest dendrogram z podziałem na grupy oraz zwracany jest wektor przypisanych do punktów grup.
2. Analiza skupień metodą k-medoids (PAM).
Zakładamy, że dysponujemy zbiorem danych ciągłych. Jako miarę odległości pomiędzy obserwacjami przyjmijmy odległość euklidesową. Na początku zadajemy parametr (k) odpowiadający za liczbę skupień. Dzielimy punkty losowo na k skupień. Dla każdej grupy punktów wyznaczmy medoidę (punkt w danych dla którego średnia odległość od wszystkich obiektów w skupieniu jest minimalna). Przesuwamy punkty do grupy, do której medoidy mają najbliżej. Przeliczamy medoidę itd. Kończymy kiedy żadne punkty się nie przemieszczają pomiędzy skupieniami. Implementacja powinna zwracać listę z punktami, które są medoidami oraz wektor przypisanych do punktów grup.
3. Algorytm najszybszego spadku dla regresji wielomianowej.
Zakładamy, że dysponujemy zbiorem składającym się z dwóch cech (x i y). Modelujemy zależność y od x za pomocą funkcji wielomianowej. Celem projektu jest implementacja metody najszybszego spadku dla tego problemu. Zakładamy kwadratową funkcję straty. Implementacja powinna umożliwiać podanie stopnia wielomianu, który ma być użyty do modelowania. Implementacja powinna zwracać wektor oszacowanych parametrów oraz pokazywać wizualnie zmiany wartości funkcji straty wraz z postępem uczenia.
4. Algorytm simpleks.
Zakładamy, że dysponujemy funkcją celu oraz układem kanonicznym warunków (równości). Implementacja powinna zwracać wektor wartości optymalizujących funkcję celu oraz znalezioną wartość funkcji celu.
5. Próbkowanie metodą MCMC. Zastosowanie do całkowania numerycznego.
Implementacja algorytmu Metropolisa-Hastingsa i zastosowanie go do próbkowania o żądanym rozkładzie. W projekcie proszę wybrać kilka poglądowych przykładów, uwzględniając w tym próbkowanie w wielu wymiarach. W implementacji należy wziąć pod uwagę wariant, w którym rozkład testowy jest dyskretny lub ciągły.
6. Spacery losowe po grafach: algorytm wyszukiwania klastrów.
Dla dużych grafów istotną informacją jest wykrycie podgrafów, które są silnie ze sobą powiązane. Za pomocą spacerów losowych po grafach zaprojektuj algorytm, który odkrywa strukturę klastrów w grafie (clustering algorithm). Wykorzystaj swój algorytm do wskazania krytycznych wierzchołków, tj. wierzchołków, których usunięcie rozspójnia graf. Przeanalizuj wariant algorytmu dla grafów skierowanych i grafów nieskierowanych.
7. Propagacja ataku w wybranej sieci z wykorzystaniem spacerów losowych.
Dla zadanego grafu sieci połączeń zaprojektuj oparty na spacerach losowych algorytm propagacji ataku na wierzchołki sieci. Omów metodologię ataku jako propagację w grafie i wyestymuj tempo propagacji ataku przy różnych typach topologii sieci. Poszukaj prawidłowości między średnim stopniem wierzchołków w sieci, a tempem propagacji ataku. Jako wariant wprowadź typy wierzchołków o różnej podatności na ataki i przeanalizuj jak wpływa to na tempo propagacji ataku.
8. Zabezpieczenia sieci z wykorzystaniem sieci neuronowej.
Dla sieci komputerów (reprezentowanej przez pewien graf skierowany/nieskierowany) zaprojektuj sieć neuronową, która trenuje wierzchołki (pod względem odporności na ataki) w celu opóźnienia propagacji ataków w takich sieciach. Wybierz jeden lub dwa parametry bezpieczeństwa wierzchołka i trenując algorytm na pewnym zbiorze grafów o podobnej strukturze przygotuj strategię zabezpieczenia sieci przed szybko propagującym się atakiem.
poziomu.
Z pozdrowieniami,
Bartosz Naskręcki
--
Wiadomość wysłana przez system USOS.
Łączna liczba adresatów tej wiadomości: 63

View File

@ -4,7 +4,7 @@ grad <- function(x){
return( (x - 7)^2 * x * (7*x^3 - 34*x^2 - 39*x + 168) ) return( (x - 7)^2 * x * (7*x^3 - 34*x^2 - 39*x + 168) )
} }
startPoint <- 3 startPoint <- -2
f <- function(x){ f <- function(x){
return( x^2 * (x + 3) * (x - 4) * (x - 7)^3 ) return( x^2 * (x + 3) * (x - 4) * (x - 7)^3 )