B - Prekopcsak.com

Download Report

Transcript B - Prekopcsak.com

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ó
Célváltozó(k)
változók
X
Bevezető
Y
…
…
…
…
…
…
…
…
Modelltanítás
f(X)Y
…
???
…
???
…
…
…
Ismeretlen a
…
célváltozó
…
???
Felhasználás
Mérés
…a
Ismert
célváltozó
Partícionálás
Tanításra nem
használt minta
(validáció, fs, …)
Modell
alkalmazása
Machine learning – Use caseek
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
• k legközelebbi szomszéd (k-NN)
• …
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.)
Igen
Döntési fa
-
Igen
Naïve Bayes
MR
Igen
Random Forest
MR
-
Neurális háló (MLP)
Local
-
K-means
Local+MR
Igen
Spektrális klaszterezés
Local+MR
-
Ajánló rendszerek
Kollaboratív szűrés
Local ill. Local+MR
Igen
Dimenzócsökkentés
PCA
Local+MR
Igen
SVD
Local+MR
Igen
Lánczos-módszer
Local+MR
-
Klaszterezés
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𝒊+𝟑
Superstep
Messages Worker
Master
Worker
Worker
Synchronization
Superstep
Messages Worker
Master
Worker
Worker
Synchronization
Superstep
Messages Worker
Master
Worker
Worker
Synchronization
Az üzenetek csak a következő Superstepben válnak elérhetővé!
+ HeartBeat üzenetek („élek” + státusz)
𝒕
Node𝒊
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
Üzenet érkezett
Inaktív
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
• 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:
Superstep: 1.
•Kiinduló
mindenütt
nyilvántartjuk
az oda vezető
állapot:
Végállapot:
legrövidebb
út hosszát (init:
végtelen)
A B C D E F
A B C D E F
• ha
∞ kisebb
∞ ∞ ∞ érték
∞ ∞ érkezik, átírjuk
0 ∞ ∞ ∞ ∞ ∞
• ha az érték változik, minden élen üzenet
Fogadott üzenetek:
Küldött üzenetek:
• aki nem üzen, megállásra szavaz
A: {0}
A: {B: 6, C: 2, E: 2}
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}
Superstep: 2.
B: -
Kiinduló állapot:
C: {B: 3, D: 1}
D: {B: 1}
E: {C: 1, F: 1}
F: {D: 0}
Végállapot:
A
B
C
D
E
F
A
B
C
D
E
F
0
∞
∞
∞
∞
∞
0
6
2
∞
2
∞
Fogadott üzenetek:
B: {6}
C: {2}
E: {2}
Küldött üzenetek:
C: {B: 5, D: 3}
E: {C: 3, F: 3}
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}
Superstep: 3.
B: -
Kiinduló állapot:
C: {B: 3, D: 1}
D: {B: 1}
E: {C: 1, F: 1}
F: {D: 0}
Végállapot:
A
B
C
D
E
F
A
B
C
D
E
F
0
6
2
∞
2
∞
0
5
2
3
2
3
Fogadott üzenetek:
B: {5}
C: {3}
D: {3}
Küldött üzenetek:
F: {3}
D: {B: 4}
F: {D: 3}
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}
Superstep: 4.
B: -
Kiinduló állapot:
C: {B: 3, D: 1}
D: {B: 1}
E: {C: 1, F: 1}
F: {D: 0}
Végállapot:
A
B
C
D
E
F
A
B
C
D
E
F
0
5
2
3
2
3
0
4
2
3
2
3
Fogadott üzenetek:
B: {4}
D: {3}
Küldött üzenetek:
mindenki megállásra
szavazott…
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