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:

  • wypełnienie sprawozdania z dnia pracy: wypełnić quiz dostarczany po każdych zajęciach (5 XP)
  • praca w czynie społecznym : przygotować program rozwiązujący przykładowy problem (10 XP)
  • obowiązkowa rywalizacja pracownicza : udział w konkursie na platformie Kaggle (50 XP) lub realizacja przykładowego projektu

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:

  • wstępne przetwarzanie danych
  • określanie ważności atrybutów
  • reguły asocjacyjne
  • podstawy metod klasyfikacji
  • naiwny klasyfikator Bayesa
  • zaawansowane klasyfikatory: sieci neuronowe, SVM
  • indukcja drzew decyzyjnych
  • meta-metody: boosting, voting, stacking
  • algorytmy analizy skupień
  • odkrywanie cech i anotacja danych
  • regresja
  • wprowadzenie do NLP
  • wprowadzenie do sieci neuronowych

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

  • Mining Massive Datasets : autorami kursu są najlepsi specjaliści ze Stanfordu: Jeff Ullman, Jure Leskovec i Anand Rajaraman. Kurs jest niejako uzupełnieniem tego, o czym rozmawiamy w trakcie laboratoriów z eksploracji danych, ponieważ koncentruje się bardziej na technikach dla big data, takich jak haszowanie czy MapReduce, ale zawiera też wykłady ściśle związane z naszym kursem: drzewa decyzyjne, redukcję wymiarowości, k-NN, SVM. To jest niezwykle przydatny kurs o dużej wartości. Za ukończenie kursu przyznam 30 XP
  • https://www.coursera.org/learn/machine-learning : jeszcze jeden kurs ze Stanfordu, tym razem przygotowany przez Andrew Ng, jednego z najbardziej znanych naukowców w obszarze uczenia maszynowego. Kurs jest bardzo przystępny, niezwykle starannie przygotowany i bardzo ciekawy. Jego jedyną wadą jest użycie w zadaniach języka Octave (zamiast R). Ukończenie kursu daje 30 XP
  • https://aws.amazon.com/training/learning-paths/machine-learning/data-platform-engineer/ : szkolenie kierowane do inżynierów danych i inżynierów uczenia maszynowego, z silnym naciskiem na środowisko AWS. Jego ukończenie daje 10 XP.
  • https://aws.amazon.com/training/learning-paths/machine-learning/developer/ : szkolenie dla programistów wykorzystujących stos technologiczny Amazon (m.in. chatboty). Jego ukończenie daje 10 XP.
  • Machine Learning for Coders (Fast.AI) : najlepszy na rynku darmowy kurs płytkich metod uczenia maszynowego dla programistów. Jego ukończenie daje 30 XP.
  • http://course18.fast.ai/index.html : doskonały kurs dla programistów, błyskawicznie wprowadzający w tematykę sieci neuronowych i uczenia głębokiego. Jego ukończenie daje 30 XP.
  • ML crash course : bardzo prosty i podstawowy kurs dla deweloperów przygotowany przez Google, główną zaletą jest wykorzystanie TensorFlow jako głównej platformy. Jego ukończenie daje 10 XP.
  • ML w TensorFlow na GCP : zestaw kursów ML z silnym naciskiem na wykorzystanie narzędzi oferowanych przez GCP. Jego ukończenie daje 10 XP.
  • Machine Learning in Python : dobre wprowadzenie do narzędzi ML dedykowanych dla języka Python. Jego ukończenie daje 10 XP.

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.

  • AI Experiments with Google : zestaw kilkudziesięciu eksperymentów, które możecie przeprowadzić przez przeglądarkę, a których fundamentem jest uczenie maszynowe - obrazy, tekst, dźwięk, każdy znajdzie coś dla siebie
  • Neural Network Playground : co prawda nie mówiliśmy jeszcze o sieciach neuronowych, ale macie już pojęcie o tym, czym jest uczenie i czym jest proces trenowania modeli, ta aplikacja pozwoli Wam przez przeglądarkę pobawić się prostymi parametrami sieci (liczba neuronów, liczba warstw, tempo uczenia) i zobaczyć na własne oczy, jak przebiega proces uczenia.

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
 
start.txt · Last modified: 2021/03/09 13:08 by Mikołaj Morzy
 
Except where otherwise noted, content on this wiki is licensed under the following license:Public Domain
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Debian Driven by DokuWiki