Spark MLlib - Biblioteca de învățare automată a Apache Spark



Acest blog Spark MLlib vă va prezenta biblioteca de învățare automată a lui Apache Spark. Acesta include un proiect de sistem de recomandare a filmului care utilizează Spark MLlib.

Spark MLlib este componenta Apache Spark’s Machine Learning.Una dintre atracțiile majore ale Spark este abilitatea de a scala calculele în mod masiv, și asta este exact ceea ce aveți nevoie pentru algoritmii de învățare automată. Dar limitarea este că toți algoritmii de învățare automată nu pot fi paralelați în mod eficient. Fiecare algoritm are propriile provocări pentru paralelizare, fie că este vorba de paralelismul sarcinilor sau de paralelismul datelor.

Acestea fiind spuse, Spark devine platforma de facto pentru construirea de algoritmi și aplicații de învățare automată.Ei bine, puteți verifica organizat de experți din industrie înainte de a continua blogul.Dezvoltatorii care lucrează la Spark MLlib implementează tot mai mulți algoritmi mașini într-un mod scalabil și concis în cadrul Spark. Prin intermediul acestui blog, vom învăța conceptele de învățare automată, Spark MLlib, utilitățile sale, algoritmi și un caz de utilizare complet al sistemului de recomandare a filmelor.





Următoarele subiecte vor fi tratate în acest blog:

  1. Ce este învățarea automată?
  2. Spark MLlib Prezentare generală
  3. Instrumente Spark MLlib
  4. Algoritmi MLlib
  5. Utilizați caz - Sistem de recomandare a filmelor

Ce este învățarea automată?

Evoluat din studiul recunoașterii tiparelor și al teoriei învățării computaționale în inteligența artificială, învățarea automată explorează studiul și construcția algoritmilor care pot învăța și face predicții asupra datelor - astfel de algoritmi depășesc urmând instrucțiuni strict statice ale programului prin luarea de predicții sau decizii bazate pe date , prin construirea unui model din eșantioane de intrări.



Învățare automată - Spark MLlib - Edureka Figura: Instrumente de învățare automată

Învățarea automată este strâns legată de statisticile de calcul, care se concentrează, de asemenea, pe predicția prin utilizarea computerelor. Are legături puternice cu optimizarea matematică, care oferă metode, teorie și domenii de aplicare pe teren. În domeniul analizei de date, învățarea automată este o metodă utilizată pentru a elabora modele și algoritmi complexi care se pretează la o predicție care în utilizarea comercială este cunoscută sub numele de analiză predictivă.

Există trei categorii de sarcini de învățare automată:



  1. Învățare supravegheată : Învățarea supravegheată este locul în care aveți variabile de intrare (x) și o variabilă de ieșire (Y) și utilizați un algoritm pentru a învăța funcția de mapare de la intrare la ieșire.
  2. Învățare fără supraveghere : Învățarea nesupravegheată este un tip de algoritm de învățare automată utilizat pentru a trage inferențe din seturi de date constând din date de intrare fără răspunsuri etichetate.
  3. Consolidarea învățării : Un program de computer interacționează cu un mediu dinamic în care trebuie să îndeplinească un anumit scop (cum ar fi conducerea unui vehicul sau jocul unui adversar). Programul primește feedback în ceea ce privește recompensele și pedepsele pe măsură ce navighează prin spațiul său problematic.Acest concept se numește învățare prin întărire.

Spark MLlib Prezentare generală

Spark MLlib este folosit pentru a efectua învățarea automată în Apache Spark. MLlib constă în algoritmi și utilități populare.

Prezentare generală MLlib:

  • scânteie.mllib conține API-ul original construit deasupra RDD-urilor. În prezent se află în modul de întreținere.
  • scânteie.ml oferă API de nivel superior construit pe baza DataFrames pentruconstruirea conductelor ML. scânteie.ml este principalul API de învățare automată pentru Spark în acest moment.

Instrumente Spark MLlib

Spark MLlib oferă următoarele instrumente:

cum se instalează PHP pe Windows
  • Algoritmi ML: Algoritmii ML formează nucleul MLlib. Acestea includ algoritmi de învățare obișnuiți, cum ar fi clasificarea, regresia, gruparea și filtrarea colaborativă.
  • Caracteristică: Caracterizarea include extragerea, transformarea, reducerea dimensionalității și selectarea caracteristicilor.
  • Conducte: Conductele oferă instrumente pentru construirea, evaluarea și reglarea conductelor ML.
  • Persistenţă: Persistența ajută la salvarea și încărcarea algoritmilor, modelelor și conductelor.
  • Utilități: Utilitățipentru algebră liniară, statistici și tratarea datelor.

Algoritmi MLlib

Algoritmii și utilitarele populare din Spark MLlib sunt:

  1. Statistici de bază
  2. Regresie
  3. Clasificare
  4. Sistem de recomandare
  5. Clustering
  6. Reducerea dimensiunii
  7. Extragerea caracteristicilor
  8. Optimizare

Să ne uităm la unele dintre acestea în detaliu.

Statistici de bază

Statistici de bază include cele mai elementare tehnici de învățare automată. Acestea includ:

  1. Rezumatul statisticilor : Exemplele includ media, varianța, numărul, max, min și numNonZeros.
  2. Corelații : Spearman și Pearson sunt câteva modalități de a găsi corelația.
  3. Eșantionare stratificată : Acestea includ sampleBykey și sampleByKeyExact.
  4. Testarea ipotezei : Testul chi-pătrat al lui Pearson este un exemplu de testare a ipotezelor.
  5. Generarea aleatorie de date : RandomRDDs, Normal și Poisson sunt utilizate pentru a genera date aleatorii.

Regresie

Regresie analiza este un proces statistic pentru estimarea relațiilor dintre variabile. Include multe tehnici pentru modelarea și analiza mai multor variabile atunci când accentul se pune pe relația dintre o variabilă dependentă și una sau mai multe variabile independente. Mai precis, analiza de regresie ajută la înțelegerea modului în care se modifică valoarea tipică a variabilei dependente atunci când una dintre variabilele independente este variată, în timp ce celelalte variabile independente sunt menținute fixe.

Analiza de regresie este utilizată pe scară largă pentru predicție și prognoză, unde utilizarea sa se suprapune substanțial cu domeniul învățării automate. Analiza de regresie este, de asemenea, utilizată pentru a înțelege care dintre variabilele independente sunt legate de variabila dependentă și pentru a explora formele acestor relații. În circumstanțe restrânse, analiza de regresie poate fi utilizată pentru a deduce relații cauzale între variabilele independente și dependente.

Clasificare

Clasificare este problema identificării căreia dintr-un set de categorii (subpopulații) aparține o nouă observație, pe baza unui set de instruire de date care conține observații (sau instanțe) a căror categorie este cunoscută. Este un exemplu de recunoaștere a modelelor.

Aici, un exemplu ar fi atribuirea unui e-mail dat în clasele „spam” sau „non-spam” sau atribuirea unui diagnostic unui pacient dat, așa cum este descris de caracteristicile observate ale pacientului (sex, tensiune arterială, prezența sau absența anumitor simptome, etc.).

Sistem de recomandare

LA sistemul de recomandare este o subclasă a sistemului de filtrare a informațiilor care urmărește să prezică „ratingul” sau „preferința” pe care un utilizator i-ar da-o unui articol. Sistemele de recomandare au devenit din ce în ce mai populare în ultimii ani și sunt utilizate într-o varietate de domenii, inclusiv filme, muzică, știri, cărți, articole de cercetare, interogări de căutare, etichete sociale și produse în general.

Sistemele de recomandare produc de obicei o listă de recomandări în unul din cele două moduri - prin filtrare colaborativă și bazată pe conținut sau abordarea bazată pe personalitate.

  1. Filtrare colaborativa abordează construirea unui model din comportamentul trecut al unui utilizator (articole achiziționate sau selectate anterior și / sau evaluări numerice acordate acestor articole), precum și decizii similare luate de alți utilizatori. Acest model este apoi utilizat pentru a prezice articole (sau evaluări pentru articole) în care utilizatorul ar putea avea interes.
  2. Filtrare bazată pe conținut abordările utilizează o serie de caracteristici discrete ale unui articol pentru a recomanda articole suplimentare cu proprietăți similare.

Mai mult, aceste abordări sunt adesea combinate ca sisteme de recomandare hibridă.

Clustering

Clustering este sarcina de a grupa un set de obiecte în așa fel încât obiectele din același grup (numit cluster) să fie mai asemănătoare (într-un anumit sens sau altul) între ele decât cu cele din alte grupuri (clustere). Deci, este sarcina principală a exploatării de date exploratorii și o tehnică comună pentru analiza datelor statistice, utilizată în multe domenii, inclusiv învățarea automată, recunoașterea modelelor, analiza imaginilor, recuperarea informațiilor, bioinformatica, compresia datelor și grafica computerizată.

Reducerea dimensiunii

Reducerea dimensiunii este procesul de reducere a numărului de variabile aleatorii luate în considerare, prin obținerea unui set de variabile principale. Poate fi împărțit în selectarea caracteristicilor și extragerea caracteristicilor.

  1. Selecția caracteristicii: Selecția de caracteristici găsește un subset al variabilelor originale (numite și caracteristici sau atribute).
  2. Extragerea caracteristicii: Aceasta transformă datele din spațiul de înaltă dimensiune într-un spațiu cu dimensiuni mai puține. Transformarea datelor poate fi liniară, ca în analiza componentelor principale (PCA), dar există și multe tehnici neliniare de reducere a dimensionalității.

Extragerea caracteristicilor

Extragerea caracteristicilor începe de la un set inițial de date măsurate și construiește valori derivate (caracteristici) destinate a fi informative și non-redundante, facilitând etapele ulterioare de învățare și generalizare și, în unele cazuri, ducând la interpretări umane mai bune. Acest lucru este legat de reducerea dimensionalității.

Optimizare

Optimizare este selecția celor mai bunielement (cu privire la un anumit criteriu) dintr-un set de alternative disponibile.

În cel mai simplu caz, o problemă de optimizare constă în maximizarea sau minimizarea unei funcții reale prin alegerea sistematică a valorilor de intrare dintr-un set permis și calcularea valorii funcției. Generalizarea teoriei și tehnicilor de optimizare la alte formulări cuprinde o arie largă de matematică aplicată. În general, optimizarea include găsirea valorilor „cele mai bune disponibile” ale unor funcții obiective, având în vedere un domeniu (sau intrare) definit,incluzând o varietate de diferite tipuri de funcții obiective și diferite tipuri de domenii.

Utilizați caz - Sistem de recomandare a filmelor

Declarație problemă: Pentru a construi un sistem de recomandare a filmelor care recomandă filme pe baza preferințelor unui utilizator folosind Apache Spark.

Cerințele noastre:

Deci, haideți să evaluăm cerințele pentru a construi sistemul nostru de recomandare a filmelor:

  1. Procesați o cantitate imensă de date
  2. Intrare din mai multe surse
  3. Ușor de folosit
  4. Procesare rapidă

După cum putem evaluacerințele noastre, avem nevoie de cel mai bun instrument Big Data pentru a prelucra date mari într-un timp scurt. Prin urmare, Apache Spark este instrumentul perfect pentru a implementa sistemul nostru de recomandare a filmelor.

Să analizăm acum diagrama de flux pentru sistemul nostru.

După cum putem vedea, următoarele utilizează Streaming din Spark Streaming. Putem transmite în timp real sau citi date din Hadoop HDFS.

Obținerea setului de date:

Pentru sistemul nostru de recomandare a filmelor, putem obține evaluări ale utilizatorilor de pe multe site-uri web populare precum IMDB, Rotten Tomatoes și Times Movie Ratings. Acest set de date este disponibil în mai multe formate, cum ar fi fișiere CSV, fișiere text abaze de date. Putem fie să transmitem datele în direct de pe site-uri web, fie să le descărcăm și le stocăm însistemul nostru local de fișiere sau HDFS.

Set de date:

Figura de mai jos arată cum putem colecta seturile de date de pe site-uri web populare.

Odată ce transmitem datele în Spark, arată oarecum așa.

Învățare automată:

Întregul sistem de recomandare se bazează pe algoritmul Machine Learning Alternarea celor mai mici pătrate . Aici, ALS este un tip de analiză de regresie în care regresia este utilizată pentru a trasa o linie în mijlocul punctelor de date în așa fel încât suma pătratelor distanței de la fiecare punct de date să fie redusă la minimum. Astfel, această linie este apoi utilizată pentru a prezice valorile funcției în care îndeplinește valoarea variabilei independente.

Linia albastră din diagramă este linia de regresie cea mai potrivită. Pentru această linie, valoarea dimensiunii D este minimă. Toate celelalte linii roșii vor fi întotdeauna mai departe de setul de date în ansamblu.

Implementarea Spark MLlib:

  1. Vom folosi filtrarea colaborativă (CF) pentru a prezice evaluările pentru utilizatori pentru anumite filme pe baza evaluărilor acestora pentru alte filme.
  2. Colaborăm apoi cu evaluarea altor utilizatori pentru filmul respectiv.
  3. Pentru a obține următoarele rezultate din învățarea automată, trebuie să folosim DataFrame, Dataset și SQL Service ale Spark SQL.

Iată pseudocodul pentru programul nostru:

import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating import org.apache.spark.SparkConf // Import alte pachete necesare obiect Film {def main (args: Array [String] ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ('* Citește datele din fișierul CSV film * ') //rawData.first () val rawRatings = rawData.map (* Split rawData pe delimitatorul de file *) val ratings = rawRatings.map {* Harta matrice de cazuri de utilizator, film și evaluare *} // Formarea modelului de date val = ALS.train (evaluări, 50, 5, 0.01) model.userFeatures model.userFeatures.count model.productFeatures.count val predictedRating = * Predict pentru utilizator 789 pentru film 123 * val userId = * utilizator 789 * val K = 10 val topKRecs = model.recommendProducts (* Recomandă utilizatorului pentru valoarea particulară a lui K *) println (topKRecs.mkString ('')) val movies = sc.textFile ('* Citește datele listei de filme *') val titles = movies.map (line => line.split ('|'). take ( 2)). Hartă (matrice => (matrice (0) .toInt, matrice (1))). CollectAsMap () titluri valRDD = filme.map (linie => linie.split ('|'). Luați (2) ) .map (array => (array (0) .toInt, array (1))). cache () titluri (123) val moviesForUser = evaluări. * Căutare utilizator 789 * val sqlContext = * Creați context SQL * val movies Recomandat = sqlContext. * Creați un DataFrame al filmelor recomandate * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Select count (*) from moviesRecommendedTable'). foreach (println) moviesForUser. * Sortați evaluările pentru User 789 * .map (* Asociați evaluarea la titlul filmului *). * Imprimați ratingul * val results = moviesForUser.sortBy (-_. Rating) .take (30) .map (rating => (titluri (rating.product), rating.rating))}}

Odată ce generăm predicții, putem folosi Spark SQL pentru a stoca rezultatele într-un sistem RDBMS. Mai mult, acest lucru poate fi afișat pe o aplicație web.

Rezultate:

Figura: Filme recomandate utilizatorului 77

Ura! Astfel, am creat cu succes un sistem de recomandare a filmelor folosind Apache Spark. Cu aceasta, am acoperit doar unul dintre mulți algoritmi populari pe care Spark MLlib le poate oferi. Vom afla mai multe despre învățarea automată în blogurile viitoare despre algoritmi de știință a datelor.

Având în vedere, puteți continua să învățați Apache Spark cu Tutorial Spark, Tutorial Spark Streamingși întrebări de interviuri Spark.Edureka este dedicat oferirii celei mai bune experiențe de învățare online.

Verificați-ne eu Dacă doriți să învățați Spark și să construiți o carieră în domeniul Spark și să vă dezvoltați expertiza pentru a efectua prelucrări de date la scară largă utilizând RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​și Scala cu cazuri de utilizare din viața reală.