Uploaded on

 

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
949
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
17
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Apache Mahout Bălăoi Bogdan Iulian bogdan.balaoi@infoiasi.ro Abstract. Apache Mahout este un proiect open-source de la Apache Software Foundation care are ca scop principal crearea si implementarea de algoritmi distribuiti de invatare automata. Are deja peste un an de functionare si a fost pornit de o echipa care lucra la Apache Lucene cu un activ interes in machine learning si dorinta pentru robustete, bine documentare, implementari scalabile ale algoritmilor cunoscuti de invatare automata pentru clusterizare si clasificare. 1. Introducere Proiectul Apache Hadoop dezvolta software open-source pentru fiabilitate, scalabilitate, calcul distribuit (distributed computing). Hadoop include urmatoarele proiecte: - Hadoop Common: utilitati comune ce suporta alte proiecte Hadoop; - Avro: sistem de serializare a datelor care ofera integrarea dinamica cu limbaje de scripting; - Chuwa: sistem de colectare de date pentru gestionarea de sisteme distribuite de mari dimensiuni; - MapReduce: framework pentru procesarea distribuita a seturilor mari de date privind calculul clusterelor; - Pig: limbaj high-level de data-flow si executarea framework-ului pentru calcul paralel; - ZooKeeper: serviciu de coordonare de inalta performanta pentru aplicatiile distribuite;
  • 2. 2 Bălăoi Bogdan Iulian 2. Apache Hadoop Apache Hadoop permite aplicatiilor sa lucreze cu mii de noduri si petabytes de date. Hadoop a fost inspirat de la Google cu MapReduce si Google File System(GFS). Acesta este de fapt un proiect Apache de nivel inalt ce a fost construit si utilizat de o multime de contribuitori din lumea intreaga. De exemplu, aplicatiile si organizatiile ce utilizeaza Hadoop sunt: - A9.com-Amazon: se creeaza produse Amazon cu indici de cautare utilizand streaming API si uneltele existente C++, Perl, Python. Se proceseaza milioane de sesiuni in fiecare zi pentru analizare, utilizand atat Java cat si streaming-uri API. Clusterele variaza de la 1 pana la 100 de noduri. - Adobe: utilizeaza Hadoop si Hbase in multe arii din serviciile sociale pentru a structura datele stocate si pentru a le prelucra pentru utilizarea interna. In mod curent are in jur de 30 de noduri care ruleaza HDFS, Hadoop si Hbase in clustere, variind intre 5 si 14 noduri, ambele de productie si de dezvoltare. Hadoop mai este folosit la Amazon Web Services, Cooliris, Cornell University Web Lab, Dropfire, IBM, Last.fm, Facebook, Meebo, etc. Printre cei care au contribuit la dezvoltarea Hadoop se numara Yahoo, cu cea mai mare contributie, ei utilizand extensiile in principal la cautarile web si la reclame. Yahoo Search Webmap este o aplicatie Hadoop care ruleaza pe mai mult de zece mii de clustere Linux si produce date care sunt apoi utilizate in orice interogare. Mai nou, IBM si Google au o initiativa majora in a utiliza Hadoop pentru suportul cursurilor universitare in programe distribuite. Hadoop consta din Hadoop Core care permite accesul la fisierele de sistem suport. „Rack awareness” este o optimizare care ia in considerare gruparea geografica a serverelor; traficul de retea intre serverele din diferite regiuni fiind minimizat. HDFS (Hadoop Distributed File System) este sistemul de fisiere proprii care este conceput a scala stocari si pentru a rula partea de sus a fisierelor de sistem care stau la baza. Deasupra sistemului de fisiere vine motorul MapReduce, care consta dintr-un „Job Tracker” la care aplicatiile client trimit sarcini MapReduce. MapReduce este un software framework introdus de Google pentru a suporta calcul distribuit pe un set mare de date. Framework-ul este inspirat de map si reduce functiile utilizate in mod
  • 3. Apache Mahout 3 obisnuit in programarea functionala. Bibliotecile MapReduce au fost scrise in C++, C#, Erlang, Java, Python, F#, R si altele. Sistemul de fisiere HDFS nu se rezuma doar la sarcinile MapReduce. Poate fi folosit si la alte aplicatii, dintre care multe sunt in curs de desfasurare la Apache. Lista include baze de date Hbase, sistemul Apache Mahout de machine learning si operatiile cu matrici. 3. Apache Mahout Apache Mahout este un proiect open-source de la Apache Software Foundation care are ca scop principal crearea si implementarea de algoritmi distribuiti de invatare automata. Are deja peste un an de functionare si a fost pornit de o echipa care lucra la Lucene cu un activ interes in machine learning si dorinta pentru robustete, bine documentare, implementari scalabile ale algoritmilor cunoscuti de invatare automata pentru clusterizare si clasificare. Mahout are drept scop: - construirea si suportul comunitatii de utilizatori si contribuabile astfel incat codul sa reziste mai mult decat oricare contribuabil particular implicat sau orice companie sau universitate; - focus pe lumea reala; - furnizare de documentatie de calitate si de exemple; Desi este relativ nou in ceea ce priveste open-source Mahout are deja un numar mare de functionalitati, in special in ceea ce priveste clusterizarea CF. Printre caracteristicile principale se enumera multe implementari de clusterizare MapReduce activate, incluzand K-Means, fuzzy K-Means, Canopy, Dirichlet si Mean-Shift, dar si implementari distribuite si complementare ale clasificarilor Naive Bayes. Mahout suporta diverse implementari ale algoritmilor de clusterizare, toate scrise in MapReduce, fiecare cu propriul set de obiective si criterii.
  • 4. 4 Bălăoi Bogdan Iulian 3.1 Clasificarea continutului cu Mahout Mahout accepta in prezent doua abordari legate de clasificare de continut pe baza statisticilor bayesiene. Prima abordare este un clasificator simplu Naive Bayes activat MapReduce. Clasificatoarele Naive Bayes sunt cunoscute a fi rapide si destul de precise, in ciuda ipotezelor cu privire la date ca fiind complet independente. Clasificatoarele Naive Bayes de multe ori descompun in cazul in care marimea exemplelor de antrenament pe clasa nu sunt echilibrate sau cand datele nu sunt indeajuns de independente. A doua abordare, numita Complementary Naive Bayes, incearca sa corecteze unele dintre problemele legate de modul de abordare, dar pastrand totusi simplitatea si viteza. Pe scurt, un clasificator Naive Bayes este un proces in doua parti, care implica urmarirea caracteristicilor (cuvintelor) asociate cu un anumit document si categorii, iar apoi utilizand aceasta informatie va prezice noua categorie, cu un continut necunoscut. Primul pas, cel de formare, creeaza un model cu privire la exemple de continut deja clasificat si apoi tine evidenta probabilitatilor ca fiecare cuvant este asociat cu un anumit continut. Al doilea pas, cel de clasificare, utilizeaza atat modelul creat in timpul formarii, cat si continutul unui nou document, impreuna cu teorema Bayes, pentru a prezice categoria documentului trecut. Astfel, pentru a rula clasificatorul Mahout, trebuie mai intai sa antrenam modelul si apoi sa utilizam modelul pentru a putea clasifica noul continut. 3.2 Cum ruleaza clasificatorul Naive Bayes Inainte de a putea rula trainerul si clasificatorul, trebuie facut un pic de lucru de instruire pentru pregatirea setului de documente. Se pot pregati documentele prin rularea ant prepare-docs si se pot imparti fisierele de intrare utilizand clasa WikipediaDatasetCreatorDriver, toate incluse in exemplele de la Mahout. Documentele sunt impartite pe baza ca fiecare document are o categorie care se potriveste cu una dintre categoriile de interes. Categoriile de interes pot fi orice categorie valida Wikipedia, sau orice subsir dintr-o categorie. In exemplul ce va fi
  • 5. Apache Mahout 5 prezentat vor fi incluse doua categorii: Science si History. Altfel, orice categorie de Wikipedia care are o categorie care contine cuvantul science sau history (nu trebuie sa fie potrivire exacta) va fi pus in aceeasi parte cu alte documente pentru acesta categorie. De asemenea, fiecare document este tokenizat si normalizat pentru a se elimina semnele de punctuatie, marcajele Wikipedia, precum si alte caracteristici care nu sunt necesare pentru aceasta sarcina. Rezultatele finale sunt stocate intr-un singur fisier cu eticheta cu numele categoriei, un document pe linie, care este formatul de intrare pe care Mahout il asteapta. De asemenea, rularea ant prepare-test-docs face acelasi lucru pentru documentele de test. Dupa formarea si testarea datelor, se va rula clasa TrainClassifier. Odata finalizat, se va incerca sa se faca clasificarea folosind modelul care a fost construit in timpul antrenamentelor. La iesire va rezulta o matrice confuzie, matrice ce descrie modul in care multe rezultate au fost corect clasificate si cate au fost clasificate in mod incorect pentru fiecare dintre categorii. Ca o concluzie a celor explicate, pentru a obtine rezultatele clasificate se vor rula urmatoarele: - ant prepare-docs - ant prepare-test-docs - ant train - ant test Rulandu-se toate acestea s-au obtinut urmatoarele: In rezumatul de mai sus se observa faptul ca 75 % sunt corecte si doar 25% gresite. La prima vedere, aceasta pare destul de rezonabil, mai ales pentru ca inseamna ca s-a
  • 6. 6 Bălăoi Bogdan Iulian facut mai bine decat aleatoriu ghicitul. Mai aproape de examinare arata, totusi, ca s-a facut foarte bine la estimarea history (aproximativ 95% in mod corect), precum si foarte prost la estimarea science (aproximativ 15%). In cautarea motivelor pentru care, o privire rapida la fisierele de intrare pentru antrenare arata ca sunt mult mai multe exemple de history decat science (dimensiunea fisierului este aproape dublu), care este probabil o posibila problema. 4. Concluzii Apache Mahout a reusit sa avanseze foarte mult in putin timp, aproximativ un an, si a reusit sa obtina rezultate semnificative in ceea ce priveste clusterizarea, clasificarea si CF, avand deasemenea potentialul de a fi dezvoltat. Se au in vedere implementarile MapReduce ale deciziilor aleatoare pentru clasificare, regulile de asociere si multe optiuni de categorisire folosind HBase precum si alte modalitati de stocare. 5. Bibliografie [1]Introducing Apache Mahout-Scalable, commercial-friendly machine learning for building intelligent application, Grant Ingersoll (grant@lucidimagination.com), Member, Technical Staff, Lucid Imagination, 08 Sept 2009 [2] http://hadoop.apache.org/ [3] http://lucene.apache.org/mahout/ [4] http://en.wikipedia.org/wiki/Apache_Hadoop