Table of Contents

Eksploracja danych

Prowadzący

telefon: 61 665 2961

email: Mikolaj.Morzy@put.poznan.pl

Instytut Informatyki Politechniki Poznańskiej, ul. Piotrowo 2, 60-965 Poznań

Miejsce przedmiotu w programie studiów

Przedmiot obowiązkowy na II stopniu studiów magisterskich na kierunku Informatyka, specjalność Technologie Przetwarzania Danych

Cele

Celem przedmiotu jest zapoznanie studentów z podstawowymi technikami eksploracji danych i odkrywania wiedzy w bazach danych. Podczas laboratoriów studenci implementują i testują różne algorytmy eksploracji danych (określanie ważności atrybutów, odkrywanie cech, odkrywanie asocjacji, klasyfikacja, analiza skupień, regresja) oraz ćwiczą proces odkrywania wiedzy. Główny nacisk położony jest na ćwiczenia praktyczne, studenci poznają istniejące narzędzia służące do eksploracji danych (RapidMiner, Project R, Orange Data Mining, scikit-learn), jak i implementują własne rozwiązania przy użyciu języków R i Python. Najważniejszym celem przedmiotu jest jednak zmiana sposobu zdobywania wiedzy poprzez większe zaangażowanie studentów i większą swobodę w akademickim kształceniu.

Sposób zaliczenia przedmiotu

Anatoli Skurikhin
Stakhanovets Kuzbassa, Egor Borisov
Worker at Kuzbass, 1933

Bez pracy nie ma kołaczy. Aby przeżyć, każdy górnik musi pracować. W trakcie każdego tygodnia górnik może wykonać jedną z prac prostych:

W zależności od liczby zdobytych punktów doświadczenia górnik osiąga określony poziom (a co za tym idzie, ocenę):

od XP do XP poziom ocena
0 39 parobek 2.0
40 59 gwarek 3.0
60 69 górnik 3.5
70 89 starszy górnik 4.0
90 99 sztygar 4.5
100 ++ nadsztygar 5.0

aktualne zestawienie punktów

Plan laboratoriów

Program zajęć laboratoryjnych obejmuje następujące zagadnienia:

Bibliografia

książki

UWAGA : świetna kolekcja darmowych książek z obszaru eksploracji danych, uczenia maszynowego i predictive analytics : https://www.kdnuggets.com/2015/09/free-data-science-books.html

  1. Eksploracja danych. Metody i algorytmy, T.Morzy, Wydawnictwo Naukowe PWN 2013
  2. Data Mining: Concepts and Techniques, J.Han, M.Kamber, J.Pei, Morgan Kaufmann, 2005
  3. Handbook of Data Mining and Knowledge Discovery, W.Kloesgen, J.Zytkow, (eds) Oxford University Press, 2002
  4. Introduction to Data Mining , P.Tan, M.Steinbach, V.Kumar, Addison Wesley, 2005
  5. Data Mining: Practical Machine Learning Tools and Techniques, I.Witten, E.Frank, Morgan Kaufmann; 2 edition (June 10, 2005)
  6. Introduction to Data Science, J.Stanton, Syracuse University’s School of Information Studies (darmowy e-book), kod R do przykładów w książce
  7. The LION way: Machine Learning plus Intelligent Optimization, darmowa książka Roberto Battitiego i Mauro Brunato

kursy MOOC

programowanie

COVID-19

Z oczywistych względów część zajęć w bieżącym semestrze odbędzie się w formie zdalnej. Na kanale https://www.youtube.com/playlist?list=PLo3c57ljcCfrJIrZIz6UIXKohnErIhh_F będę umieszczał filmy demonstracyjne z prezentacją najważniejszych elementów na każdy tydzień. Będziecie dostawali zadania do samodzielnej pracy, będziemy też organizować tele-konferencje na zoomie w trakcie których będziecie mogli porozmawiać “na żywo”, podpytać o szczegóły laboratorium, wyjaśnić wątpliwości, itd. Do ciągłej komunikacji utworzyłem kanał na Slacku, który będę wykorzystywał do informowania (np. o umieszczeniu nowego filmu, zadaniach do pracy samodzielnej, itp.), ale może stać się też punktem zadawania pytań czy wymiany informacji. Proszę się dołączyć do kanału #ed.

Laboratoria

W trakcie laboratoriów będą wykorzystywane następujące programy:


20.03.2020 wstępne przetwarzanie danych

27.03.2020 ocena ważności atrybutów

03.04.2020 odkrywanie reguł asocjacyjnych

10.04.2020

Moje drogie, moi drodzy

Nie zamierzam Was męczyć zajęciami w weekend świąteczny, wydaje mi się, że zasługujecie na trochę odpoczynku, a i ja muszę nadgonić zaległe quizy i zadania. W związku z tym w tym tygodniu nie ma zadań i laboratorium, jest natomiast propozycja. Niespełna 5 lat temu pojawiła się świetna książka Pedro Domingosa pt. The Master Algorithm, i do dziś nie straciła na aktualności. Jeśli nie znajdziecie czasu, żeby ją przeczytać, to możecie sobie obejrzeć wykład wygłoszony przez Domingosa w Google (ok. 60 min). Warto przy tym mieć pod ręką slajdy prezentowane przez Domingosa, znajdziecie je na SlideShare. Miłego oglądania, wypocznijcie, zrelaksujcie się, oderwijcie na chwilę od chaosu pandemii.

Do zobaczenia za tydzeń!

17.04.2020 wprowadzenie do klasyfikacji

24.04.2020 naiwny klasyfikator Bayesa

1.05.2020

Moje drogie, moi drodzy

Przed nami Majówka, macie wiele zaległych zadań do wykonania i nie ma sensu, żebym Wam jeszcze dorzucał pracy. Zamiast tego proponuję Wam dwie zabawy, które mogą Wam nie tylko umilić kwarantannowy czas, ale też przybliżyć praktyczne aspekty uczenia maszynowego.

My wracamy do regularnych zajęć po Majówce.

Do zobaczenia za tydzeń!

8.05.2020, 15.05.2020 indukcja drzew decyzyjnych

22.05.2020 maszyny wektorów wspierających

29.05.2020 analiza skupień

5.06.2020 ekstrakcja cech

12.06.2018 meta-metody klasyfikacji

krótkie omówienie prac dyplomowych i sposobu ich realizacji

Prace magisterskie 2020/21

Szanowni Państwo,

poniżej zamieszczam krótkie opisy proponowanych przeze mnie tematów prac magisterskich na rok 2020/21. Oba tematy są ściśle związane z eksploracją danych i uczeniem maszynowym, w szczególności z procesem trenowania głębokich sieci neuronowych. Oba projekty są (tak mi się wydaje) ciekawe, ale są trudne i wymagające. W obu przypadkach wymagana jest bardzo dobra znajomość Pythona, wcześniejszy kontakt z PyTorch byłby bardzo pożądany. Ja traktuję oba projekty poważnie, mocno się angażuję w ich realizację, i oczekuję, że (a) zostaną ukończone najpóźniej do końca maja 2021 (b) zakończą się wysokiej jakości publikacją naukową. Praca odbywa się w 2-3 tygodniowych sprintach, każdy sprint kończy mała retrospektywa, pracujemy wg. gitflow.

W razie pytań lub wątpliwości proszę o kontakt mejlowy lub na Slacku. Chętnie też umówię telekonferencję, w trakcie której będę mógł opowiedzieć o projektach więcej.

Mikołaj Morzy

Uczenie pojemnościowe - nowa architektura trenowania głębokich sieci neuronowych (Capacity-based learning - a new architecture for training deep neural networks)

Większość współczesnych środowisk uczenia sieci głębokich zakłada statyczną architekturę sieci i modyfikację wag poszczególnych krawędzi w efekcie propagacji błędu. Istnieją też propozycje wykorzystania paradygmatu programowania genetycznego do szukania właściwej architektury, polega to z grubsza na jednoczesnym uruchomieniu całej populacji sieci neuronowych i implementację operatorów genetycznych (selekcja, krzyżowanie, mutacja). Celem niniejszego projektu jest zbadanie zupełnie innego podejścia do uczenia sieci. Zakładamy, że jeśli waga krawędzi ulegnie nasyceniu, to dany neuron wykorzystał całą swoją pojemność informacyjną. W ramach projektu należy zaimplementować mechanizm automatycznej ekspancji takich neuronów przez ich zastępowanie niewielkimi sieciami typu feed-forward, które zwiększają pojemność informacyjną zastępowanego neuronu. Dzięki temu sieć, po nauczeniu się pewnego generalnego konceptu, będzie mogła kontynuować specjalizację tego konceptu w rozszerzonym fragmencie sieci. Istotne będzie opracowanie metody oceny stopnia nasycenia krawędzi w trakcie poszczególnych epok uczenia, znalezienie dobrego rozmiaru rozszerzenia, którym zastępujemy poszczególne neurony, oraz określienie początkowej inicjalizacji wag w rozszerzeniu.

Zadania:

  1. opracowanie i implementacja metody automatycznego rozszerzania nasyconych neuronów (PyTorch)
  2. przeprowadzenie szeroko zakrojonych eksperymentów obliczeniowych

Komponentowe sieci neuronowe z fragmentacją wejścia (Component neural networks with input fragmentation)

Obowiązujący aktualnie paradygmat uczenia sieci neuronowych zakłada przedstawienie na wejściu przykładu uczącego, co zmusza sieć neuronową do automatycznego wykrywania zależności między poszczególnymi atrybutami. Takie podejście nie oddaje sposobu uczenia się przez ludzi, gdzie rozpoznawaniu podlegają jedynie fragmenty informacji, a połączenia między fragmentami informacji decydują o sukcesie uczenia. Celem projektu jest implementacja nowej architektury sieci neuronowej, w której niewielkie podsieci (komponenty) są odpowiedzialne za uczenie się jedynie fragmentów przykładów wejściowych. Między kolejnymi warstwami sieci komponenty przesyłają do siebie informacje, które mogą aktywować komponenty na wzajem. Hipoteza badawcza głosi, że tak skonstruowane sieci powinny mieć lepsze własności generalizacyjne i powinny szybciej osiągać zbieżność.

Zadania:

  1. implementacja architektury komponentowej sieci neuronowej przy użyciu PyTorch
  2. eksperymentalny i analityczny wybór funkcji aktywacji intra- i inter-komponentowych
  3. opracowanie i implementacja metody automatycznej fragmentacji wejścia
  4. przeprowadzenie eksperymentów obliczeniowych na dużej liczbie zbiorów danych