Machine Learning, Hálózatelemzés BIG DATA Kazi Sándor Machine Learning, Hálózatelemzés 2014.
Data Science & ML Data Science, Gépi tanulás alapok,
Data Science – BIG Data Mintavételezés, mintavételezés, mintavételezés… Sokszor nem jó ötlet a teljes adatsorral dolgozni A túl kis mintával viszont rosszul is járhatunk Data Science ismeret kellhet az architektúratervezéshez is: A hatékonyan felhasználható tárolás fontos kérdés Szintén fontos, hogy mit érdemes egyáltalán tárolni Lehet, hogy aggregátumot is, lehet, hogy csak azt… Szükség lehet a tárolt adatok újrastruktúrálására is Szükséges kompromisszumokat kötni (nem lehet „mindent”) Megnő a „feltáró BI” szerepe is „A Data Understandinget jobb minél előbb megkezdeni” Ha jól tudjuk, mit fogunk az adatokkal csinálni, sokat segíthet … de legalább a skálázódás nem a mi dolgunk.
Machine learning – DATA SCIENCE Forrás: Schutt, O’Neil Doing Data Science 2012. (O’Reilly Media)
Machine learning – Alapok Input adatok Modell Lehetséges célok: A modell vizsgálata: problématér feltérképezése, kirívó események A modell használata: előrejelzés, vezérlés, … Kapcsolódó területek: Statisztika Mesterséges intelligencia Optimalizáció Négy nagy részhalmaz: Felügyelt tanulás (Supervised Learning) Nem felügyelt tanulás (Unsupervised Learning) Félig felügyelt tanulás (Semi-Supervised Learning) Megerősítéses tanulás (Reinforcement Learning)
Machine Learning – Felügyelt Tanulás Magyarázó változók X Célváltozó(k) Y Bevezető … … Tanításra nem használt minta (validáció, fs, …) Partícionálás Ismert a célváltozó Modelltanítás f(X)Y Mérés … ??? … Modell alkalmazása Ismeretlen a célváltozó Felhasználás
Machine learning – Use case-ek Osztályozás Felügyelt tanulás, a célváltozó kategorikus Regresszió Felügyelt tanulás, a célváltozó folytonos Klaszterezés Nem felügyelt tanulás, cél: homogén csoportokba sorolás Gyakori minták, rendellenes értékek, csalásfelderítés, … Döntéstámogatás, ajánló rendszerek, asszociációs szabályok, … On-line tanulás és akcióválasztás, vezérlés, … (Dimenziócsökkentés, főkomponensanalízis, …) (Statisztikai próbák, rétegzett mintavételezés, …)
Machine learning – Algoritmusok Osztályozás Neurális hálózat (MLP) k legközelebbi szomszéd (k-NN) Döntési fák, véletlen erdők … Regresszió Lineáris regresszió Regressziós döntési fák Klaszterezés Nem felügyelt tanulás, cél: homogén csoportokba sorolás Hierarchikus k-means és k-medoid
Data Science – BIG Data előtt Programozás Matlab Python – SciKit Learn csomag, pandas csomag R Java (Weka) … Vizuális eszközök SPSS Modeler (Clementine) SAS Enterprise Miner, SAS Guide RapidMiner Studio/Server Oracle Miner Knime
Mahout
Mahout – Mi a Mahout? “The Apache Mahout project’s goal is to build a sclable machine learning library.” http://mahout.apache.org Skálázható Gépi tanulási könyvtár 2014. április előtt Eleinte főleg MapReduce implementációk Probléma: jellemzően iteratív algoritmusok 2014. áprilistól Új MapReduce implementációk nem jöhetnek Helyette Spark integráció a kívánatos irány Többféle platform: egygépes környezet, MapReduce, Spark, …
Spark MLLib Machine Learning Library
Spark – Emlékeztető “Spark has an advanced DAG execution engine that supports cyclic data flow and in-memory computing.” http://spark.apache.org DAG végrehajtó motor globális belső állapot kezelése Ciklikus adatfolyam iteratív algoritmusok is In-memory RDD, perzisztálás NEM MapReduce: csak errőforráskezelő kell neki, futhat: YARN fölött EC2-n (Amazon) Mesos fölött (Apache) … Többféle programozási nyelven API: Java, Scala, Python… MLLib: gépi tanulási csomag a Spark keretrendszerében GraphX: gráf API a Spark felett
Mahout és MLLib – Eszköztár Csoport Algoritmus Mahout MLLib Statisztika Összegzés, Korreláció, Rétegzett mintavételezés - Igen Osztályozás, Regresszió Lineáris modellek (SVM, linreg, logreg) Local (logreg.) Döntési fa Naïve Bayes MR Random Forest Neurális háló (MLP) Local Klaszterezés K-means Local+MR Spektrális klaszterezés Ajánló rendszerek Kollaboratív szűrés Local ill. Local+MR Dimenzó-csökkentés PCA SVD Lánczos-módszer
Hálózatelemzés
Hálózatelemzés – Általános Hálózatelemzés, gráfelemzés… gyakorlatilag ugyanaz. Entitásokat és azok kapcsolatát leíró struktúra: Gráf (csúcsok, élek) és címkék (súlyok, stb.) Lehet statikus gráf vagy időben változó Input adatok Modell Hálózatelemzés célja: A modell vizsgálata, ezáltal Hálózat vizsgálata Hálózat változásának vizsgálata A struktúra feletti modell használata: előrejelzés, vezérlés, … Google Pregel
BSP Bulk Synchronous Parallel
Bulk Synchronous Parallel Node 𝒊 Node 𝒊+𝟏 Node 𝒊+𝟐 Node 𝒊+𝟑 𝒕 Superstep Worker Master Worker Worker Messages Synchronization Superstep Worker Master Worker Worker Messages + HeartBeat üzenetek („élek” + státusz) Synchronization Superstep Worker Master Worker Worker Messages Synchronization Az üzenetek csak a következő Superstepben válnak elérhetővé!
Számítás, üzenetküldés BSP – csomópont Egy fizikai node-on több virtuális node is futhat egymás után Gráffeldolgozásnál tipikus A végrehajtásnak vége, ha egyszerre mindenki megállásra szavaz Ha folyton üzeneteket küldünk, akkor sosem áll le a végrehajtás… a Superstep számra érdemes lehet limitet tenni Megállásra szavazás Nem érkezett üzenet Számítás, üzenetküldés Aktív Inaktív Üzenet érkezett
BSP – SSSP SSSP: Single Source Shortest Path nincs negatív összsúlyú kör (nincs is értelme) (kb. Bellman-Ford algoritmus) Vertex-Centric (a „csúcsok” számolnak, az „éleken” megy üzenet ) Példa: irányított gráf éllistája (SSSP A-ból) B nyilvánvalóan sosem küld üzenetet… A: {B: 6, C: 2, E: 2} B: - C: {B: 3, D: 1} D: {B: 1} E: {C: 1, F: 1} F: {D: 0} Algoritmus: mindenütt nyilvántartjuk az oda vezető legrövidebb út hosszát (init: végtelen) ha kisebb érték érkezik, átírjuk ha az érték változik, minden élen üzenet aki nem üzen, megállásra szavaz
BSP – SSSP Superstep: 1. SSSP: Single Source Shortest Path nincs negatív összsúlyú kör (nincs is értelme) (kb. Bellman-Ford algoritmus) Vertex-Centric (a „csúcsok” számolnak, az „éleken” megy üzenet ) Példa: irányított gráf éllistája (SSSP A-ból) B nyilvánvalóan sosem küld üzenetet… A: {B: 6, C: 2, E: 2} B: - C: {B: 3, D: 1} D: {B: 1} E: {C: 1, F: 1} F: {D: 0} Superstep: 1. Kiinduló állapot: Végállapot: Fogadott üzenetek: Küldött üzenetek: Algoritmus: mindenütt nyilvántartjuk az oda vezető legrövidebb út hosszát (init: végtelen) ha kisebb érték érkezik, átírjuk ha az érték változik, minden élen üzenet aki nem üzen, megállásra szavaz A B C D E F ∞ A B C D E F ∞ A: {0} A: {B: 6, C: 2, E: 2}
BSP – SSSP Superstep: 2. SSSP: Single Source Shortest Path nincs negatív összsúlyú kör (nincs is értelme) (kb. Bellman-Ford algoritmus) Vertex-Centric (a „csúcsok” számolnak, az „éleken” megy üzenet ) Példa: irányított gráf éllistája (SSSP A-ból) B nyilvánvalóan sosem küld üzenetet… A: {B: 6, C: 2, E: 2} B: - C: {B: 3, D: 1} D: {B: 1} E: {C: 1, F: 1} F: {D: 0} Superstep: 2. Kiinduló állapot: Végállapot: Fogadott üzenetek: Küldött üzenetek: A B C D E F ∞ A B C D E F 6 2 ∞ B: {6} C: {2} E: {2} C: {B: 5, D: 3} E: {C: 3, F: 3}
BSP – SSSP Superstep: 3. SSSP: Single Source Shortest Path nincs negatív összsúlyú kör (nincs is értelme) (kb. Bellman-Ford algoritmus) Vertex-Centric (a „csúcsok” számolnak, az „éleken” megy üzenet ) Példa: irányított gráf éllistája (SSSP A-ból) B nyilvánvalóan sosem küld üzenetet… A: {B: 6, C: 2, E: 2} B: - C: {B: 3, D: 1} D: {B: 1} E: {C: 1, F: 1} F: {D: 0} Superstep: 3. Kiinduló állapot: Végállapot: Fogadott üzenetek: Küldött üzenetek: A B C D E F 6 2 ∞ A B C D E F 5 2 3 B: {5} C: {3} D: {3} F: {3} D: {B: 4} F: {D: 3}
BSP – SSSP Superstep: 4. SSSP: Single Source Shortest Path nincs negatív összsúlyú kör (nincs is értelme) (kb. Bellman-Ford algoritmus) Vertex-Centric (a „csúcsok” számolnak, az „éleken” megy üzenet ) Példa: irányított gráf éllistája (SSSP A-ból) B nyilvánvalóan sosem küld üzenetet… A: {B: 6, C: 2, E: 2} B: - C: {B: 3, D: 1} D: {B: 1} E: {C: 1, F: 1} F: {D: 0} Superstep: 4. Kiinduló állapot: Végállapot: Fogadott üzenetek: Küldött üzenetek: A B C D E F 5 2 3 A B C D E F 4 2 3 mindenki megállásra szavazott… B: {4} D: {3}
SSSP – Pregel (C++)
PageRank – Pregel (C++)
GraphLab PowerGraph és GraphChi
GraphLab – PowerGraph C++ alapú open-source Gráfelemző szoftver Másra is használható, de erre készült A memóriában fut TCP/IP hálózatot használ Vertex-centrikus, de nem BSP Szinkron módban hasonlít a BSP-re Aszinkron módban FIFO ütemezőt használ Hatványeloszlás… GAS-pattern
GraphLab – GraphChi Tulajdonképpen egy egygépes PowerGraph Aszinkron Diszk-alapú Csúszóablakos hozzáférés Ritka eset, hogy nem sorfolytonosan olvassuk a diszket Mikor van rá szükség? Szeretnénk a PowerGraph eszköztárát használni Nincs PowerGraph-hoz klaszterünk Nem fér el a memóriában a gráf De egy-egy csúcs, és a hozzá tartozó információk elférnek