ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 148
Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 48
Abonament PDF

Data Science Scalabil: Spark ML Pipelines

Andrei Bâcu
Senior developer @ Paddy Power Betfair



PROGRAMARE


Ce este Data Science?

Deși conceptul Data Science nu este neapărat nou, provoacă încă numeroase dezbateri între cercetători și practicieni, cu privire la ceea ce este și ce nu este. O modalitate de a defini Data Science este ca un pas evolutiv în domenii interdisciplinare, cum ar fi analiza de afaceri care încorporează știința calculatoarelor, modelarea datelor, statistică, analiza datelor și matematică. Două cărți foarte bune care vă vor ajuta să începeți călătoria în Data Science sunt Developing Analytic Talent: Becoming a Data Scientist, de Vincent Granville, și The Field Guide to Data Science, lansat de către firma Booz Allen Hamilton.

În cazul în care nu știați acest lucru, Data Scientist a fost numit ,,cel mai sexy loc de muncă al secolului 21". Acest rol a devenit unic în industrie, guvern, precum și în alte organizații care dezvoltă procese bazate pe date. Mai mult decât orice, scopul unui Data Scientist este acela de a face descoperiri cu valoare pentru business, în timp ce analizează datele din toate perspectivele. De asemenea, aceste persoane sunt de obicei generaliste în analiza de business, statistici și informatică, cu expertiză în domenii precum robustețe, complexitatea algoritmilor, și tehnici de vizualizare a datelor. Acest lucru este reprezentat foarte des în articolele de specialitate prin diagrama Venn pentru Data Science din figura 1 de mai jos.

Figura 1. Diagrama Venn pentru Data Science

Spark: un mediator pentru Data Science

În cele ce urmează, vom expune îmbunătățirile aduse de Apache Spark domeniului Data Science, în ceea ce priveste scalabilitatea și ușurința în utlizare. Asa cum probabil ați mai citit în edițiile anterioare ale revistei TSM, Spark este un framework foarte performant de prelucrare a datelor pe scară largă, care a fost dezvoltat la U.C. Berkeley de doi români: Matei Zaharia și Ionel Stoica.

În prezent, este cel mai activ proiect Apache, cuprinzând mai multe librării, așa cum se poate observa în figura 2 de mai jos. Cea mai recentă versiune stabilă până în prezent este Spark 1.6.1. Recent, unul dintre proiectele incipiente de top, numit Spark ML Pipeline, a fost lansat ca o extindere a activității anterioare începute pe Spark MLlib. Acest nou pachet Spark ML își propune să ofere un set uniform de API-uri pentru algoritmi de machine learning. Este construit pentru a permite utilizatorilor să creeze și să îmbunătățească algoritmi existenti de machine learning. Cea mai recentă versiune stabilă Apache Spark acoperă algoritmi precum: Clasificare, Regresie, Recomandare, Clusterizare, Reducerea Dimensionalității, Extracție și Selecție de caracteristici, Import / Export modele, Fluxuri (Pipelines), și Metrici de evaluare.

Figura 2. Librăriile Spark

Componente Spark ML Pipeline

DataFrame

Spark ML folosește DataFrame din cadrul librăriei Spark SQL ca un set de date ML, care este practic o colecție distribuită de date organizate în coloane. Conceptual, este echivalent cu un tabel într-o bază de date relațională sau un Data Frame în R sau Python, dar cu optimizări mai bogate. Această structură poate fi construită dintr-o varietate de surse de date: fișiere, tabele Hive, baze de date externe, sau RDD-uri existente. De exemplu, un DataFrame într-un ML Pipeline poate avea coloane diferite pentru a stoca text, vectori de caracteristici, label-uri și predicții.

Transformers

Un Transformer reprezintă o abstracție care include funcții de transformare pentru feature-uri și modele învățate. Programatic vorbind, implementează metoda transform(), care transformă un DataFrame în altul, prin adăugarea mai multor coloane, numite în mod obișnuit caracteristici sau features. De exemplu, un model ML ar putea să ia un DataFrame care conține caracteristici, să obțină predicțiile și să creeze implicit un nou DataFrame cu predicțiile atașate ca o nouă coloană.

Estimators

Un Estimator reprezintă o abstracție a unui algoritm de învățare automată (ML), care poate fi antrenat pe date de intrare. Din punct de vedere tehnic, un Estimator implementează metoda fit(), care acceptă un DataFrame și produce un model ML, care este, de asemenea, un Transformer. De exemplu, un algoritm ML, cum este un Estimator, și prin apelul metodei fit(), antrenează un model de regresie liniară, care este un Model și, prin urmare, un Transformer.

Pipeline

Un Pipeline este specificat ca o succesiune de etape, iar fiecare dintre ele este un Transformer sau un Estimator. Aceste etape respectă ordinul de execuție, și prin urmare, DataFrame-ul de intrare este transformat pe măsură ce trece prin fiecare etapă. Un exemplu de proces de învățare automată poate fi o simplă procesare de text, care cuprinde mai multe etape:

• Împărțirea textului în cuvinte și simboluri.

• Conversia cuvintelor într-un vector de caracteristici numeric.

• Învățarea unui model de predicție ML folosind vectorii cu caracteristici și etichete.

Acest Pipeline ML cu trei etape este ilustrat în figura 3 de mai jos. Componentele Tokenizer și HashingTF sunt de tip Transformer, în timp ce LogisticRegression este de tip Estimator.

Cu toate acestea, în acest exemplu, un Pipeline este de tip Estimator. Astfel, metoda fit() unui Pipeline produce un PipelineModel, care este de tip Transformer. Acest PipelineModel poate fi folosit în continuare în timpul testarii modelului ML, după cum se poate observa în figura 4 de mai jos.

De obicei, ML Pipelines sunt complexe și implică mai multe etape interdependente, ilustrate în figura 5 de mai jos:

1. Data ingestion. RDD-uri Spark sau DataFrames pot fi folosite pentru a stoca date de intrare.

2. Feature extraction. Prin exploatarea Spark ML Pipelines, un Transformer poate fi folosit pentru a converti un DataFrame în alt DataFrame care conține caracteristicile necesare.

Figura 5. Complexitatea unui algoritm ML

3. Model training. De exemplu, un Estimator poate fi antrenat pe un DataFrame cu caracteristici, și poate produce unul sau mai multe modele ML.

4. Model evaluation. Predictii bazate pe modele ML pot fi realizate în Spark ML Pipelines folosind componente de tip Transformer.

Dezvoltări viitoare

Privind în perspectivă, dezvoltarea viitoare a Spark MLlib va include un API pentru SparkR, îmbunătățirea algoritmilor de inspecție a modelelor ML, precum și optimizări Pipeline. Până ce o nouă versiune stabilă este pusă la dispoziție, echipa Apache Spark a postat o versiune inițială Spark 2.0, menită să ofere mai devreme acces comunității pentru a încerca noua versiune a codului. Această versiune include o îmbunătățire foarte bună numită Machine Learning Model Persistence, care este o abilitate de a salva și încărca modelele ML din orice limbaj de programare suportat de Spark. Mai mult decât atât, API-ul Pipeline ML bazat pe DataFrame va deveni API-ul principal, cu mai mult suport pentru algoritmi ML populari, cum ar fi Generalized Linear Models (GLM), Naive Bayes, Survival Regression și K-Means.

Conferință TSM

NUMĂRUL 147 - Automotive

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects