doc. Ing. Jan Platoš, Ph.D. Akademický rok 2018/19 Kancelář: EA432 Konzultační hodiny: Úterý 14:00-15:00

MAD3

Přednášky

  1. Základní informace
  2. Dolování vzorů a pravidel
  3. Výběr atributů a shlukování pomocí reprezentantů a hierarchické
  4. Shlukování na základě hustoty a validace shluků
  5. Speciální shlukovací metody, Detekce odlehlých hodnot
  6. Redukce dimenze, Klasifikace, Výběr atributů a rozhodovací stromy
  7. Rozhodovací stromy, pravidlové systémy, pravděpodobnostní klasifikace, hodnocení klasifikačních algoritmů.
  8. Support Vector Machines
  9. Neuronové sítě
  10. Regrese
  11. Pokročilé přístupy a Ensemble metody

Cvičení

  1. Dolování vzorů (17.9.2018) Zobrazit/Skýt
    1. Vygenerujte všechny kombinace bez opakování o délce 3 z 6 možných.
    2. Na jednom z testovacích souborů (chess, connect) vygenerujte četné vzory z vypočtěte Support.
    3. Z vygenerovaných četných vzorů vypište pravidla a jejich Confidence
    4. Výsledky pro jednotlivé datasety:
      1. Testovací data z přednášky
      2. 
                    
      3. Chess
      4. 
                    
      5. Mushroom
      6. 
                    
      7. Connect
      8. 
                    
      9. T10I4D100K
      10. 
                  
  2. Výběr atributů a shlukování pomocí reprezentantů (1.10.2018) Zobrazit/Skýt
    1. Výběr atributů
      1. Načtěte jeden z uvedených datasetů.
      2. Pomocí Entropie ověřte vlastnosti datasetu pomocí vše atributů.
      3. Pro výpočet použijte jen numerické atributy a využijte vhodnou mřížku (např. dělení 10).
      4. Ověřte, možnosti redukce počtu atributů (vypočtěte možnou entropii).
      5. Nalezněte podmnožinu atributů s minimální entropii.
      6. Výsledky pro jednotlivé datasety při nastavení dělení N=10 (P je suma pravděpodobnosti, 1=100% bodů):
        1. Test.csv
        2. 
                        
        3. Water.csv
        4. 
                        
        5. Wine
        6. 
                        
        7. Wholesale
        8. 
                      
    2. k-means shlukovací algoritmus (nepovinný úkol)
      1. Načtěte jeden z uvedených datasetů.
      2. Za pomocí Euklidovy vzdálenosti realizujte/vyzkoušejte k-means algoritmus.
      3. Projděte si výsledky algoritmu v krocích.
  3. Aglomerativní shlukování (8.10.2018) Zobrazit/Skýt
    1. Cílem bude implementovat dvě varianty aglomerativního shlukování a to single a complete linkage.
    2. Obě metody vychází z matice vzdáleností.
    3. Cílem bude provést shlukování, které se zastaví buď při vhodné příležitosti, nebo po kompletním shlukování.
    4. Při kompletním shlukování sestupte dendrogramu shluků a nalezněte ty správné shluky.
  4. Shlukování - reálný příklad (15.10.2018) Zobrazit/Skýt
    1. Cílem cvičení bude analyzovat reálný dataset, výsledky budou prezentovány rovnou na cvičení, tzn. pozdější odevzdání není možné.
    2. Načtete si dataset uvedený zde.
    3. Rozdělte data do vhodných shluků, využít můžete libovolnou metodu, ale počet shluků musíte být schopni zdůvodnit.
    4. Nalezené shluky by měli vhodně popisovat data.
    5. Každý nalezený shluk analyzujte a popište typ zákazníků, kteří do něj patří.
    6. K vašemu řešení připravte krátký report, který mi, včetně zdrojových kódů, zašlete na email.
  5. Redukce dimenze (29.10.2018) Zobrazit/Skýt
    1. Načtěte dataset pro redukci dimenzi.
    2. Proveďte redukci dimenze na několik hodnot a změřte si Frobeniovu normu mezi originální a rekonstruovanou maticí.
    3. Redukci proveďte pomocí SVD a NMF.
    4. O obou algoritmů si vytiskněte nové bázové vektory.
    5. Např. v Pythonu je možné obě metody nalézt v Scikit-Learn, Accord.NEt pro C#.
  6. Klasifikace rozhodovacím stromem (05.11.2018) Zobrazit/Skýt
    1. Načtěte dataset pro klasifikaci.
    2. Sestrojte klasifikační rozhodovací strom s optimálním dělením.
    3. proveďte klasifikaci bodů v datasetu.
  7. Support Vector Machines (12.11.2018) Zobrazit/Skýt
    1. Na adrese knihovny LibSVM nalezněte příklad SVM.
    2. Otestujte nastavení knihovny na různých zadání bodů a volby kernelů.
    3. Otestujte různé nastavení kernelů, zejména konstantu C.
  8. Neuronové sítě (19.11.2018) Zobrazit/Skýt
    1. Nalezněte minimální strukturu sítě pro klasifikaci separabilního datasetu.
    2. Nalezněte konfiguraci, která maximálně analyzuje separabilní dataset.
    3. Nalezněte ideální strukturu pro Iris dataset.
  9. Regrese (03.12.2018) Zobrazit/Skýt
    1. Načtěte regresní data.
    2. Předzpracujte si je tak bya jste odstranili datum a převedli na den v roce (např.).
    3. Naučte regresní model na rozdělení dat.
  10. Klasifikace - reálný příklad (10.12.2018) Zobrazit/Skýt
    1. Cílem cvičení bude analyzovat reálný dataset, výsledky budou odevzdány formou reportu v PDF.
    2. Načtete si dataset uvedený zde.
    3. Natrénujte vhodný model (vyzkoušejte i metody z Ensemble přístupů/neuronových sítí).
    4. K vašemu řešení připravte krátký report, který mi, včetně zdrojových kódů, zašlete na email.

Datasety

  1. Dolování vzorů: Zobrazit/Skýt
    • Test Formát: DAT
    • Chess Formát: DAT
    • Connect Formát: DAT
    • Mushroom Formát: DAT
    • T10I4D100K (generated shopping cart) DAT
  2. Výběr atributů pro shlukování: Zobrazit/Skýt
    • Testová data se 4 nadbytečnými atributy: CSV
    • Wine dataset: CSV
    • Water-treatment dataset: CSV
    • Wholesale dataset: CSV
  3. Shlukování: Zobrazit/Skýt
    • 3 kruhové shluky: CSV
    • 5 kruhových shluků: CSV
    • 5 překrývajících se shluků: CSV
    • Soustředné kruhy: CSV
    • Obdélníky: CSV
  4. Shlukování reálný příklad Zobrazit/Skýt
  5. Redukce dimenze Zobrazit/Skýt
    • Data ke stažení ZDE
  6. Klasifikace Zobrazit/Skýt
    • Iris dataset se 4 atributy a 3 třídami. Informace: zde. Formát: CSV, Original
    • Tic-Tac-Toe dataset s 9 atributy a 2 třídami. Informace: zde. Formát: CSV, Original
    • Separabilní 2D dataset. Dataset obsahuje 2 třídy (+1,-1), a jedná se o body v rovině. Každá třída má 50 bodů a mají mezi sebou oddělující pásmo. Formát: CSV
    • Neseparabilní 2D dataset. Dataset obsahuje 2 třídy (+1,-1), a jedná se o body v rovině. Každá třída má 50 bodů, které mají mezi sebou oddělující pásmo a navíc každá třída dalších 20 bodů, které jsou zamíchány v druhé skupině. Formát: CSV
  7. Regrese Zobrazit/Skýt
  8. Klasifikace reálný příklad Zobrazit/Skýt

ARD

Cvičení

  1. Úvod do analýzy dat (04.10.2018) Zobrazit/Skýt
    1. Obsah cvičení je vyzkoušet propojení knihoven nad RUIAN daty:
      1. Načíst jeden CSV soubor
      2. Vytisknout tvar a hlavičku dat
      3. Vytisknout názvy sloupců
      4. Přejmenovat sloupec dle jeho názvu
      5. Přejmenovat sloupec dle jeho indexu
      6. Vybrat dva sloupce dle názvu nebo indexu odpovídající souřadnicím v S-JTSK souřadném systému
      7. Vytisknout tvar a hlavičku podmnožiny dat
      8. Zobrazit data v grafy typu Scatter Plot
    2. Řešení cvičení: Zobrazit/Skýt
    3. 
                      
                    
  2. Pokročilejší analýza (11.10.2018) Zobrazit/Skýt
    1. Obsahem cvičení je vyzkoušet propojení knihoven nad RUIAN daty do většího celku s výstupem některých analýz v grafech.
    2. Program cvičení je:
      1. Spojení všech souborů z RUIAN dat (rychlejší je spojení CSV než Pandas.Dataframe).
      2. Vizualizace všech souřadnic v Scatter grafu (pro správné zobrazení platí x=-y, y=-x)
      3. Pro každou obec dle "Kód obce" vypočítat střed ze souřadnic, počet adresních bodů na obec a počet unikátních ulic => DATASET_OBCE (při použití reset_index() jsou sloupce sjednoceny a vznikne novy dataframe)
      4. Nad datasetem DATASET_OBCE proveďte:
        1. Vypočtěte histogram dle počtu adresních bodů v obci a zobrazte jej pomocí Bar grafu.
        2. Vyneste do Scatter grafu 100 obcí s největším počtem adresních míst.
        3. Vyneste do Scatter grafu 100 obcí s nejmenším počtem adresních míst.
        4. U obou grafů uveďte také názvy obcí a velikost značky přizpůsobte velikosti obce.
      5. Nalezněte statistiku počtu obyvatel platnou k 1.1.2018. (ZDE)
      6. Tuto statistiku propojte s datasetem DATASET_OBCE.
        1. Vypočtěte histogram dle počtu obyvatel v obci a zobrazte jej pomocí Bar grafu.
        2. Vyneste do Scatter grafu 100 obcí s největším počtem obyvatel.
        3. Vyneste do Scatter grafu 100 obcí s nejmenším počtem obyvatel.
        4. Vypište obce s nejmladším obyvatelstvem.
        5. 
                            
        6. Vypište obce s největším procentem žen v obci.
        7. 
                            
        8. U grafů uveďte také názvy obcí a velikost značky přizpůsobte velikosti obce.
      7. Příklad části řešení ZDE
  3. Information retrieval (25.10.2018) Zobrazit/Skýt
    1. Obsahem cvičení je vyzkoušet implementaci nástroje pro Information Retrieval.
    2. Vstupem je kolekce záznamů a výsledkem je nalezení nejpodobnějších dokumentů dle definovaného dotazu.
    3. Cílem IR je dosažení maximální přesnosti vyhledávání a vráceních všech podobných dokumentu (Precision a Recall).
    4. Hlavním cílem je toto udělat rychle.
      1. Po načtení dat z CSV souboru je možné tyto zkusit zobrazit pomocí metody (Zobrazit/Skýt).
      2.                   def make_image_matrix(rows, cols, images, fileName):
                            img_height = int(math.sqrt(len(images[0])))
                            img_width = img_height
                            mat_width = cols*img_width
                            mat_height = rows*img_height
                            matrix = Image.new('L', (mat_width, mat_height))
                            for row in range(rows):
                              for col in range(cols):
                                idx = row*cols + col
                                data = images[idx].astype(np.int32)
                                data = data.reshape((img_height, img_width), order='F')
                                img = Image.fromarray(data, mode='I')
                                matrix.paste(img, box=(col*img_width, row*img_height))
                            matrix.save(fileName)
                        
      3. Prosté vyhledání Euklidovou vzdáleností a nalezení nejpodobnějších dokumentů vede k tomuto výsledku.
      4. Redukce dimenze pomocí metody NMF a podobnost Euklidovou vzdáleností pro 10 a 50 dimenzí.
      5. Redukce dimenze pomocí metody SVD a podobnost Euklidovou vzdáleností pro 10 a 50 dimenzí.
      6. Příklad části řešení Zobrazit/Skrýt a ke stažení ZDE
      7. 
                        
  4. Klasifikace dat (1.11.2018) Zobrazit/Skýt
    1. Obsahem cvičení je vytvořit klasifikační nástroj pro dodaná data.
    2. Vstupem je kolekce záznamů a jejich tříd a cílem je predikce třídy záznamu nad definovaného dotazu.
    3. Otestujte metody výběru atributů a redukce dimenze.
    4. Otestujte různé metody klasifikace.
  5. Soutěž POKER (1.11.2018) Zobrazit/Skýt
    1. Cílem je navrhnout klasifikátor, který co nejlépe analyzuje dataset POKER.
    2. Hodnocení je dle přesnosti klasifikátoru.
    3. Hodnocení 20, 15 a 10 bodů za první až třetí místo.
    4. Při shodné přesnosti se body rozpočítají.
  6. Shlukování dat (8.11.2018) Zobrazit/Skýt
    1. Vstupem jsou data Movie-lens - hodnocení filmů.
    2. Otestujte shlukovací metody pro seskupení filmů do skupin.
    3. Data bude třeba nejprve předzpracovat.
    4. Příklad části řešení Zobrazit/Skrýt a ke stažení ZDE
    5. 
                      
  7. Analýza dat ze streamu (29.11.2018) Zobrazit/Skýt
    1. Vstupem jsou data ze senzorických vložek do bot, které zaznamenaly postupné procházení, běh a doběh.
    2. Identifikujte kroky v datech.
    3. Určete:
      • počet kroků běhu,
      • čas běhu,
      • délku běhu v metrech,
      • jakoukoliv další informaci.
    4. Příklad části řešení Zobrazit/Skrýt a ke stažení ZDE
    5. 
                      
  8. TensorFlow - Part 1 (6.12.2018) Zobrazit/Skýt
    1. Základní práce s TensorFlow na nízké úrovni Zobrazit/Skrýt
    2. Základní potřebné definice pro použití a vytištění verze TensorFlow nainstalované na počítači.

      
                       
                        

      TensorFlow je framewrok pro práci s tesnory. Principem frameworku je, že nejprve je definovaný tzv. graf výpočtu a ten je dále vyhodnocen.

      
                      
                        

      Všechny proměnné a konstanty je možné pojmenovat a toto pojmenování pak využít v rámci vizualizace.

                       
                        

      Pro použití vizualizačního nástroje je potřeba do souboru uložit aktuální graf výpočtu. To se dělá pomocí tzv. writeru.

      
      
                        

      TensorFlow umožňuje také spuštění stejné odpoerace nad polem vstupů. výstupem je pak pole jako výstup.

      
      
                        

      Součásti TF jsou také náhodné generátory, a umožňuje s nimi pracovat jako s normálními vektory, všechny matematické operátoru jsou podporované a je možné pak získat požadované hodnoty. Ukážeme si to na příkladu lineární regrese. Nejpreve je třeba připravit data.

      
      
                        

      Dále je třeba vytvořit tzv. vrstvu pro výpočty. Vrstvy definují základní jednotku pro optimalizaci, u kterých je možné ladit nějaké parametry.

      
      
                        

      Jelikož vrstva jako taková je poměrně hloupá, musíme jí nastavit její váhy pomocí optimizéru.

      
                      
    3. Je také možné použít připravené estimátory, neboli klasifikátory a regresory. Zobrazit/Skrýt
    4.                 
                      
    5. A nebo rovnou využít high-level api jako je Keras. Zobrazit/Skrýt
    6.                 
                      
  9. TensorFlow - Part 2 (13.12.2018) Zobrazit/Skýt
    1. Základní analýza MNIST datasetu Zobrazit Notebook
    2. Základní analýza MNIST datasetu - konvoluční síť Zobrazit Notebook

Datasety

  1. Geografická RUIAN data
    • Originální RUIAN data ZIP/CSV
    • RUIAN v jednom souboru s anglickými názvy sloupců: ZIP/CSV
    • Data o počtu obyvatel s anglickými názvy sloupců: ZIP/CSV
  2. Information Retrieval:
    1. Datová kolekce ZIP/CSV
    2. Dotazy ZIP/CSV
  3. Klasifikace dat:
    1. Obrazová data - EMNIST (info):
      1. Trénovací sada X (data): ZIP/CSV, Y (labels): ZIP/CSV
      2. Testovací sada X (data): ZIP/CSV, Y (labels): ZIP/CSV
    2. Poker Data (info)
      1. Popis dat TXT
      2. Trénovací sada: ZIP/CSV
      3. Testovací sada: ZIP/CSV
  4. Shlukování MovieLens
    1. Základní data 100,000 recenzí, 3600 tagů, 9700 filmů, 610 uživatelů ZDE
  5. Streamová data
    1. Data ze sensorických vložek v botech ZDE
{% comment %} {% endcomment %}