13
Apache Hadoop în conjuncţie cu Mahout Budăi Steliana:[email protected] Odata cu cresterea masivă, atat a datelor structurate cat si a celor nestructurate, apare nevoia de a sti ce se află in aceste date. Invatarea automată este folosita pentru a afla ce este în aceste date cu un input uman minim. Construit peste Apache Handoop, Mahout rezolvă o serie de probleme de învăţare automată folosind terabytes de date pe mii de calculatoare Keywords: Mahout, Hadoop, clasificare, Bayes, SVM 1 Ce este Handoop? Căutarea informaţiilor pe web folosind Google sau Yahoo se face foarte repede deoarece se foloseste algoritmul Map Reduce. Acesta este o tehnologie porprietară. Apache vine cu un framework map reduce propriu numit Hadoop Apache Hadoop este un framework java ce ofera posibilitatea aplicaţiilor să lucreze cu mii de noduri si cantitaţi mari de date. Handoop este un proiect Apache fiind folosit şi construit de o comunitate formată din persoane din intreaga lume. Yahoo are cea mai mare contributie la acest proiect, folosind Handoop la cautări si publicitate. Alti contribuitori sunt Google si IBM, care il folosesc pentru cursuri universitare si programare distribuită. 1.1 Trăsaturi Handoop este un framework pentru rularea aplicaţiilor pe clustere, oferind aplicaţiilor siguranţa şi posobilitatea de a migra datele poate rula in trei moduri diferite, depinzand de modul de distributie al proceselor: o modul implicit: totul e rulat de un proces java

Hadoop Mahout Budai Steliana

Embed Size (px)

Citation preview

Page 1: Hadoop Mahout Budai Steliana

Apache Hadoop în conjuncţie cu Mahout

Budăi Steliana:[email protected]

Odata cu cresterea masivă, atat a datelor structurate cat si a celor nestructurate, apare nevoia de a sti ce se află in aceste date. Invatarea automată este folosita pentru a afla ce este în aceste date

cu un input uman minim. Construit peste Apache Handoop, Mahout rezolvă o serie de probleme de învăţare automată folosind terabytes de date pe mii de calculatoare

Keywords: Mahout, Hadoop, clasificare, Bayes, SVM

1 Ce este Handoop?

Căutarea informaţiilor pe web folosind Google sau Yahoo se face foarte repede deoarece se foloseste algoritmul Map Reduce. Acesta este o tehnologie porprietară. Apache vine cu un framework map reduce propriu numit HadoopApache Hadoop este un framework java ce ofera posibilitatea aplicaţiilor să lucreze cu mii de noduri si cantitaţi mari de date. Handoop este un proiect Apache fiind folosit şi construit de o comunitate formată din persoane din intreaga lume. Yahoo are cea mai mare contributie la acest proiect, folosind Handoop la cautări si publicitate. Alti contribuitori sunt Google si IBM, care il folosesc pentru cursuri universitare si programare distribuită.

1.1 Trăsaturi Handoop

este un framework pentru rularea aplicaţiilor pe clustere, oferind aplicaţiilor siguranţa şi posobilitatea de a migra datele

poate rula in trei moduri diferite, depinzand de modul de distributie al proceselor:

o modul implicit: totul e rulat de un proces javao pseudo distribuit ruleaza pe o singura masina cu diferiti demoni

Handoop rulati ca procese java diferiteo distribuit complet sau modul cluster o masina din cluster este

NameNod(are grija de namespace, ) ul si alta este JobTraker - ul implementează paradigma map reduce, care se bazeaza pe faptul ca aplicaţia

este divizată în mici fragmente fiecare din ele putand fi executată sau reexecutată pe fiecare nod din cluster. Map Reduce este o combinatie a funcţiilor map() şi reduce()

o Map: ofera functionalitate pentru procesare datelor de tip cheie valoare pentru a genera perechi de tip cheie valoare pentru output

o Reduce: include functionalitate pentru colecatrea output ului de la map - uri de procesare paralele si crearea otputului din datele colectate.

ofera un sistem de fisiere distribuit care stochează datele pe noduri. Atat

Page 2: Hadoop Mahout Budai Steliana

map/reduce cat şi fişierele de sistem distribuite sunt create astfel încat eşecurile din noduri sunt tratate de framework

1.2 Exemplu Map Reduce pentru transformarea textului cu spaţii în text fără spaţii

public static class Map extends MapReduceBase

implements Mapper<LongWritable, Text, Text, Text> {

private Text initialText = new Text();

private Text textTransformed = new Text();

public void map(LongWritable key, Text inputs,

OutputCollector<Text,Text>output, Reporter reporter)

throws IOException {

String input = inputs.toString();

intş length = input.length();

String transformed = new String();

for(int i=length-1; i>=0; i--) {

if(input.get(i)!=” ”)

transformed+= input.charAt(i));

}

initialText.set(inputString);

textTransformed.set(transformed);

output.collect(inputText,reverseText);

}

}

public static class Reduce extends MapReduceBase

implements Reducer<Text, Text, Text, Text> {

public void reduce(Text key, Iterator<Text> values,

OutputCollector<Text, Text> output,Reporter reporter)

throws IOException {

while (values.hasNext()) {

output.collect(key, values.next());

}

}

Page 3: Hadoop Mahout Budai Steliana

}

2 Mahout

2.1 Ce este Mahout?

Subproiect Hadoop pentru dezvoltarea algoritmilor de învatare automată scalabili,

comerciali. Numele a fost ales in respect fata de Handoop, al cărui logo este un elefant. Mahout inseamna om care conduce un elefant.La momentul actual Mahout oferă support pentru următoarele:

recomandare : învată din comportamentul user-ului şi încearcă să găsească ce i-ar place user-ului;

clustering: se grupează documente text si se pun în grupuri de documente înrudite;

clasificare: se învată din documentele existente cum arată un document de un anumit tip, fiind capabil ulterior sa eticheteze un anumit document intr-o anumită categorie.

2.2 Exemple practice

separarea informatiei importante de spam;

Fig 1: proiect Apahe ce încearcă să identifice spamul

gruparea stirilor in funcţie de tema;

gasirea programatorilor cu interese similare;

descoperirea grupurilor cu rezultate de cautare inrudite;

sortarea dupa relevanţă.

Page 4: Hadoop Mahout Budai Steliana

3 Ce este Clasificarea?

Clasificarea: se învată din categoriile de documente existente cum arată documentele de o anumita categorie; dat fiind un nou document acesta va fi asignat cu uşrinţă unei

categorii.

3.1 Exemplu de folosire al clasificarii

avem: un motor de cautare se vrea: indexarea paginiolor pe o anumita temă

recomandarea clipurilor video

Fig 2: rezultat al căutării pe You Tube al cuvantului Scrubs

RSS (imput:canale RSS, output: adu – mi pe cel mai nou si mai bun)

Page 5: Hadoop Mahout Budai Steliana

Fig3: imaginea preluată de la adresa http://cwiki.apache.org/MAHOUT/bookstutorialstalks.data/froscon.pdf

recomandare de ziare noi(input: ziare preferate si lista de noi aparitii, output: recomandare de ziare noi )

Page 6: Hadoop Mahout Budai Steliana

Fig 4: imagine preluată de la adresa http://cwiki.apache.org/MAHOUT/bookstutorialstalks.data/froscon.pdf

oferirea de suport pentru debug

poate face cautarea de job – uri mai uşoara(gasirea de job – uri postate pe internet şi extragerea automată a locului, titlului, datei)

Page 7: Hadoop Mahout Budai Steliana

Fig 5: imagine preluată de la adresa http://cwiki.apache.org/MAHOUT/bookstutorialstalks.data/froscon.pdf

agregarea informatiei(input: date gasite pe site uri sociale si motoare de cautare obisnuite, output: informatii despre o persoana sau firma)

convertirea de text scris de mană în text pe calculator

3.2 Algoritmi pentru clasificare

3.2.1 Regresie Logistică

se bazeaza pe predicţia probabilitatii de indeplinire a unui eveniment se foloseste de variabile de predictie care pot fi numerice sau de alt tip este echivalentul discriminator pentru Bayes naiv. Nu modelează

probabilitatea datei de input cum face acesta, deci nu poate face presupuneri false despre ditribuţia datelor de input

3.2.2 Naive Bayes

Naive Bayes este rapid si usor de implementat, faţa de alţi algoritmi care sunt mai putin eronaţi, dar mult mai lenţi.Este cel mai des intalnit la filtrele de spam. In ciuda simplităţii şi a presupunerilor naïve, s – a dovedit a fi foarte bun in practică. Pentru a fi clasificate obiectele sunt

Page 8: Hadoop Mahout Budai Steliana

reprezentate prin caracteristici numerice:

Exemplu :

la email spam: fiecare caracteristica indică daca un anumit cuvant este prezent sau nu in mail.

Algoritmul are doua parti invatare si aplicare.

Inainte de a se putea rula trainer – ul trebuie efectuată o muncă de pregătire pentru a seta o serie de documente pentru training şi un set de documente pentru testare.

WikipediaDatasetCreatorDriver, inclus in sursele Mahout împarte documentele în funcţie categorii de interes. Categoria de interes poate fi orice categorie Wikipedia validă.

Fie domeniile de interes moda, stiinţa, sport. Orice categorie Wikipedia care are o categorie din acestea trei va fi pus într – un grup împreună cu alte documente din aceeaşi categorie. Fiecare document este normalizat si ii este eliminată punctuaţia si alte elemente de care nu este nevoie pentru a face clasificarea. Documentele de test şi training nu trebuie sa fie aceleaşi.

Dupa ce datele de test şi de training sunt setate se poat rula TrainClassifier, care va încerca să clasifice documentele. Va rezulta o cantitate mare de loguri atat de la Mahout cat şi de la Hadoop. Output ul testului este un set de date numit matrice de confuzie. Aceasta descrie cate rezultate au fost correct clasificate şi cate incorrect pentru fiecare categorie.

Se observa că aproximati 75% din date sunt corecte , ceea ce e mult mai bine decat ghicire random.

In timpul invatarii, algoritmului ii este atasat un set de vectori, fiecare dintre ei fiind clasificat clasei careuia ii apartine obiectul. Din aceasta este dedusa combinatia de caracteristici ce apare in mod fecvent in spam – uri. Avand aceasta informati este uşor de dedus daca un mesaj este spam sau nu.

Acest algoritm face numeroase presupuneri neadevarate despre date: un exemplu: se consider că toate caracteristicile obiectului sunt independente(contraexemplu: fie data fraza “Statuia Libertatii" aceasta nu influenteaza probabilitatea de vedea grupul de cuvinte”New York”)

3.2.3 Naive Bayes Complementar

încearcă să corecteze unele dintre problemele clasificatorului Bayes Naiv, dar în acelaşi timp încearcă să menţină simplicitatea şi viteza

3.2.4 SVM

Fiecare obiect este considerta un punct intr - un spatiu n - dimensional, n fiind numarul de atribute

Page 9: Hadoop Mahout Budai Steliana

folosite pentru descirerea obiectelor; fiecarui punct ii este asignat un label, exemplu true sau false. în timpul invatarii se incearca sa se gaseasca un hiperplan ce separa

elementele true de cele false. cum uneori este imposibil să se facă acest lucru, se va găsi hiperplanul care

cauzeaza cele mai putine erori

3.2.5 Perceptron şi Winnow

ambii algoritmi sunt clasificatori simpli comparabili . Fiind date informaţii de antrenament într un spatiu n-dimensional ce e adnotat cu etichete binare, ei garantează gasirea unui hiperplan separator dacă existăIn contrast cu Perceptron, Winnow lucrează doar pe vectori binari Desi algoritmii sunt simpli merg foarte bine pentru clasificare de text si sunt rapid de antrenat chiar pentru dat seturi uriase. Spre deosebire de Naive Bayes nu se bazeaza pe presupunerea ca toate atributele sunt independente

3.2.6 Retele neuronale

sunt folosite pentru clasificarea obiectelor multi dimensionale;acestea sunt capabile sa invete nu numai hiperplane separatoare liniare ci si legaturi de decizie arbitrare

3.2.7 Random Forests

este nevoie de cross validare sau un test separat pt a estima erorile, acestea fiind estimate intern in timpul rulării

3.2.8 pasii algoritmului:

adunarea paginilor web

asignarea de etichete: “in tema” sau “in afara temei”

generarea de vectori de proprietati a paginilor web(parsarea textului si imbunatatirea vectorilor cu ajutorul cuvintelor gasite)

antrenarea unor algoritmi

aplicarea algoritmilor antrenati unor date noi

Fiecare pagina web este un punct intr – un spatiu multi dimensional

y

X

z

Page 10: Hadoop Mahout Budai Steliana

Figura 1: spaţiul multidimensional al paginilor web

3.2.9 Pros si Cons Mahout

3.2.10 Pros

Mahout scaleaza sesiunile de training cu implementarea handoop

Mahout este Open Source

3.2.11 Cons:

nu scaleaza conform asteptarilor

scalabilitatea este obtinuta folosind o panta

panta standard pe recomandare nu este foarte exactă(exemple: Netflix test: succes -3%  (0.98RMSE)),

comparat cu alti algoritmi ce nu sunt inclusi in Mahout Factorizarea Matricilor (Netflix test: suces: 8.4% (0.87 RMSE))

implementare ineficienta

consum de memorie si resurse enorm

doar filtrare colaborativa

doar algoritmi standard

4 Referinte

http://en.wikipedia.org/wiki/Hadoop

http://jeffeastman.blogspot.com/2008/03/what-is-mahout.html

http://isabel-drost.de/hadoop/slides/google.pdf

http://ml-site.grantingersoll.com/index.php?title=Incubator_proposal

http://people.csail.mit.edu/jrennie/papers/icml03-nb.pdf

Page 11: Hadoop Mahout Budai Steliana

http://denizoktar.wordpress.com/2009/08/03/mahout-review-by-iletken/

http://cwiki.apache.org/MAHOUT/bookstutorialstalks.data/froscon.pdf

http://www.eu.apachecon.com/page_attachments/0000/0179/PG_20090313.pdf

http://lucene.apache.org/mahout  

http://www.ibm.com/developerworks/java/library/j-mahout/index.html

http://www.javaworld.com/javaworld/jw-09-2008/jw-09-hadoop.html?page=4