Adatbányászati szemelvények MapReduce környezetben Salánki Ágnes salanki@mit.bme.hu 2014.11.10. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék
Felügyelt és nem felügyelt tanulás Felügyelt tanulás o Adott néhány pontra az elvárt kimenet is o a tanuló példákból való általánosítás o Output: függvény a meglévő mintapontokra jól képez le megfelelően általánosítható Nem felügyelt tanulás o Nincs meg az elvárt kimenet o Visszajelzés nélkül építi a modellt o szabályok, összefüggések keresése (ismeretfeltárás)
Felügyelt és nem felügyelt tanulás Felügyelt tanulás o Adott néhány pontra az elvárt kimenet is o a tanuló példákból való általánosítás o Output: függvény a meglévő mintapontokra Tanulóhalmaz jól képez amin le építjük a modellt megfelelően általánosítható Teszthalmaz amin ellenőrizzük Nem felügyelt tanulás o Nincs meg az elvárt kimenet o Visszajelzés nélkül építi a modellt o szabályok, összefüggések keresése (ismeretfeltárás)
Osztályozás és csoportosítás alapfeladat Kép forrása: Ramaswamy S, Golub T R JCO 2002;20:1932-1941
Osztályozás alapfeladat Képosztályozás: a képen látható objektum madár vagy repülő?
Osztályozás alapfeladat Levelek osztályozása: SPAM vagy nem SPAM?
Osztályozás alapfeladat Szabályok alapján Severity osztályozása Kép forrása: http://192.9.172.90/bigadmin/features/articles/3pmi_mgmt.full.jsp
Csoportosítási alapfeladat Csoportosítás (clustering) megtalálni az egymáshoz hasonló elemeket o Output: klaszterek
Csoportosítási alapfeladat Csoportosítás (clustering) megtalálni az egymáshoz hasonló elemeket o Output: klaszterek Egymáshoz hasonló?
k-means Adatpontok: vektortér Klaszter reprezentációja: súlyponttal / középponttal (vektor-átlag) r(c i ): i-edik klaszter reprezentánsa Minimalizálandó a négyzetes távolságösszeg, mint hiba: E C = k i=1 u C i d u, r C i 2
Egy megoldás {r C 1, r C 2,, r(c k )} repr. kezdeti halmaza while r(c i ) változik do for u D adott sorrendben do h u klaszter-indexe j argmin i d(u, r(c i )) if h j then { C j C j u C i C i u r(c j ) 1 C j v C j v r(c h ) 1 C h v C h v} return C
Egy megoldás {r C 1, r C 2,, r(c k )} repr. kezdeti halmaza while r(c i ) változik do for u D adott sorrendben do return C h u klaszter-indexe j argmin i d(u, r(c i )) if h j then { C j C j u C i C i u r(c j ) 1 C j r(c h ) 1 C h v C j v v C h v} Régi klaszter
Egy megoldás {r C 1, r C 2,, r(c k )} repr. kezdeti halmaza while r(c i ) változik do for u D adott sorrendben do return C h u klaszter-indexe j argmin i d(u, r(c i )) if h j then { C j C j u C i C i u r(c j ) 1 C j r(c h ) 1 C h v C j v v C h v} Régi klaszter Új klaszter
Egy megoldás {r C 1, r C 2,, r(c k )} repr. kezdeti halmaza while r(c i ) változik do for u D adott sorrendben do return C h u klaszter-indexe j argmin i d(u, r(c i )) if h j then { C j C j u C i C i u r(c j ) 1 C j r(c h ) 1 C h v C j v v C h v} Régi klaszter Új klaszter Itt rögtön újra is számoljuk
k-means rmr2/blob/master/pkg/tests/kmeans.r dist.fun = function(c, P){ apply(c, 1, function(x) colsums((t(p) - x)^2))}
k-means rmr2/blob/master/pkg/tests/kmeans.r P pont C i klasztertől vett távolsága dist.fun = function(c, P){ apply(c, 1, function(x) colsums((t(p) - x)^2))}
k-means rmr2/blob/master/pkg/tests/kmeans.r P pont C i klasztertől vett távolsága dist.fun = function(c, P){ apply(c, 1, function(x) A klaszter középpontok mátrixának minden sorára colsums((t(p) - x)^2))}
k-means: map kmeans.map = function(., P) { nearest = { if(is.null(c)) sample(1:num.clusters,nrow(p), replace = T) else { D = dist.fun(c, P) nearest = max.col(-d)}} if(!(combine in.memory.combine)) keyval(nearest, P) else keyval(nearest, cbind(1, P))}
k-means: map A Map kap néhány kmeans.map = pontot function(., P) { nearest = { if(is.null(c)) sample(1:num.clusters,nrow(p), replace = T) else { D = dist.fun(c, P) nearest = max.col(-d)}} if(!(combine in.memory.combine)) keyval(nearest, P) else keyval(nearest, cbind(1, P))}
k-means: map A Map kap néhány kmeans.map = pontot function(., P) { nearest = { Első kör: inicializálás if(is.null(c)) sample(1:num.clusters,nrow(p), replace = T) else { D = dist.fun(c, P) nearest = max.col(-d)}} if(!(combine in.memory.combine)) keyval(nearest, P) else keyval(nearest, cbind(1, P))}
kmeans.map = function(., P) { nearest = { if(is.null(c)) k-means: map A Map kap néhány pontot Első kör: inicializálás sample(1:num.clusters,nrow(p), replace = T) Legközelebbi klaszter else { D = dist.fun(c, P) nearest = max.col(-d)}} if(!(combine in.memory.combine)) keyval(nearest, P) else keyval(nearest, cbind(1, P))}
k-means: map Kulcs: P ponthoz legközelebbi klaszter-centrum o C normál R objektum o scoping miatt elérhető a map-ben o P: HDFS-ből Érték: P Ha még nincsenek klaszter-centrumok: mintavétel visszahelyezéssel Vektorizált keyval ismét in.memory.combine, combine: nem a mapreduce függvényé!
k-means: reduce kmeans.reduce = { if (!(combine in.memory.combine)) else function(., P) t(as.matrix(apply(p, 2, mean))) function(k, P) keyval( k, k klaszterközépponthoz lekérjük az összes P pontot Előbb csak összeget számolunk.. t(as.matrix(apply(p,2,sum))))}
k-means: reduce Azonos kulcshoz (középpont) tartozó vektorok átlaga Azaz: o Map: a legközelebbi klaszterbe sorol (középpont) o Reduce: kialakult új középpontok Szemlétesen: a középpontokat tologatjuk Beragadhat lokális minimumba! (aut. megállásnál) Algoritmust lásd (aut. megállással): [8], p 1422
kmeans.mr: törzs (1)
kmeans.mr: törzs (1) Iterációk C felüldefiniálásával Minden menetben mapreduce-szal új középpontok
f függvény, bemenet: az attribútumok értéke, kimenet: megfigyelések legjobb közelítése ökölszabály Példa: testtömeg/magasság együttes eloszlás valójában egyenesre illeszthető, Regresszió
Regressziós módszerek Alapelv: Véletlen változó Közelítés t Y f t Hiba Jósolt esemény Átlagos hiba (mean error) Becsült érték Y f ( X1, X 2,..., X n ) ME n t1 Y t n F t Megfigyelhető változók Mért érték
Lineáris regresszió Egyszerű lin. függvény illesztése az adatokra o nem vár alapvető változást a rendszer viselkedésében Y a bx Legkisebb négyzetek módszere o keressük azokat az a,b paramétereket, amelyekre n n 2 t t t t1 t1 minimális (Sum of Squared Errors) 2 SSE Y F cél: n n 2 2 Y F Y a bx minimalizálása t t t t t1 t1
Levezetés (parc. deriválás) n 2 d Y t a bx t n t1 2 Yt a bx t 0 da n 2 t1 t1 d Y t a bx t n t1 X t Yt a bx t 0 db t1 n na Y bx a Y bx t t t t t t t t t t t t t1 n t1 t1 n t1 t1 n t1 t1 t n n 1 1 1 2 X Y Y bx bx X Y X Y b X X bxt 0 t1 n n n n n n b n n n n X Y X Y t t t t t1 t1 t1 n n 2 2 nx t X t t1 t1 Xi, Yi a mért értékpárok (pl. idő, terhelés)
Anscombe négyese Legjobban illeszkedő egyenes mindenre van
Anscombe négyese Legjobban illeszkedő egyenes mindenre van Minőségileg különböző adatpontokra is
y = Θ T x Lineáris regresszió: általános alak Solve: Θ = min Θ i=1 m (Θ T x i y i ) X R m n : design matrix - tanító-minták a sorok y = y 1,, y m m : target labels Θ = X T X 1 X T y
Summation form Θ = X T X 1 X T y Θ = A 1 b A = m i=1 x i y T i és b = m i=1 x i y i és ezek a szummák már párhuzamosíthatóak m- ben.