Sunteți pe pagina 1din 25

AZURE

MACHINE LEARNING
Ivascu Vlad Mihai
Secatureanu Vlad Cristian
Grupa 332
Introducere in Azure Machine Learning

Pentru a putea folosi serviciile Machine Learning din Azure, avem nevoie de un workspace. Cautam
“Machine Learning” in bara de resurse si selectam apoi initalizarea unui nou workspace.
In continuare, introducem informatiile obligatorii pentru un workspace Azure
nou: nume, subscriptie asociata, grup de resurse, locatie.
Dupa o asteptare de cateva minute, putem accesa resursa proaspat
creata de Machine Learning Services.
Odata accesat workspace-ul de Machine Learning, putem lansa Azure Machine
Learning Studio, ce ne pune la dispozitie toate uneltele Azure ce faciliteaza crearea si
deployment-ul modelelor, dar si analiza si prelucrea seturilor de date.
Side Menu –ul Azure Machine Learning
Studio arata in felul urmator:
(In cele ce urmeaza, vom prezenta, pe
scurt, fiecare unealta pe care ML Studio
ne-o pune la dispozitie)
Notebooks
Conform documentatiei oficiale, IPython notebooks reprezinta o extensie a calculului
interactiv traditional, bazat pe consola. Reprezinta o aplicatie web ce pune la dispozitie
solutii pentru intreaga gama de operatii de calcul: dezvoltare, documentare, exectuare
a codului, precum si pentru prezentarea rezultatelor si a concluziilor.

Ofera posibilitatea de editare a codului in browser, dar si de rulare a acestuia. Rezultatele


calculelor sunt atasate bucatilor de cod ce le-au generat.

De asemenea, afisarea rezultatelor se poate face folosind reprezentari de tip rich


media(HTML,
LaTeX, PNG, SVG etc. )

Azure ofera utilizatorului abilitatea de a lucra direct cu SDK-ul de Python si de a rula


experimente de predictie asupra datelor intr-un mediu de tip IPython notebooks.

Mentiune: Exista si suport pentru script-uri de R.


Lucrul intr-un notebook este impartit pe celule. Putem alege sa rulam intregul script(“Run all”,
dreapta-sus) sau o singura celula. Rezultatul unei celule poate fi folosit in calculul din alte celule,
folosindu-se identificatorul din partea stanga a celulei.

O celula poate fi de tip “code”, in care scriem cod Python propriu-zis, ce contribuie la efectuarea
calculelor, dar si de tip “markup”, in care prezentam rezultatele intr-o maniera cat mai intuitiva,
cu graficele sau cu figurile asociate.

Pentru a putea rula codul dintr-o astfel de celula, avem nevoie de o masina virtuala.
Azure ne ofera posibilitatea de a crea noi VM-uri direct din interfata de notebooks, pentru a
fi folosite in acest scop.

Putem initia un nou script de tip notebook direct din interfata Azure, dar si incarca unul deja existent
de pe masina noastra.
Unul dintre exemplele de notebooks pe care ni le pune la dispozitie ML Studio. In acest
caz, exemplul ne arata cum sa construim un clasificator ce prezice daca o tranzactie cu
cardul de credit este legitima sau tentativa de frauda. Observam cum, pe langa
bucatile de cod ce construiesc efectiv clasificatorul, exista celule pentru markup prin
care ni se prezinta intr-o maniera atractiva procesul de lucru cu AutoML.
Automated ML (AutoML)
Asa cum sugereaza si numele, Automated ML reprezinta modalitatea de automatizare
a procesului cronofag de dezvoltare a modelului potrivit pentru un set de date anume.
In mod normal, dezvoltarea unui model optim, adaptat cat mai bine setului de date curent,
reprezinta un proces costisitor din punct de vedere al timpului si al puterii de calcul necesare.

Motivul este evident: pentru a gasi modelul cel mai performant, singura varianta este
incercarea multiplelor variante de modele, pe care le ajustam treptat in functie de concluziile
observate pe parcurs.

Unealta de AutoML faciliteaza la maxim acest aspect: antreneaza si testeaza numeroase


modele (pe baza unor parametri pe care noi ii configuram inca de la inceput), pe care apoi
le compara pentru a alege solutia optima.

Exista trei categorii de probleme de ML la care AutoML ne ofera solutii: probleme de


clasificare, de regresie, si de predictie in functie de intervalul de timp(“Time Series
Forecasting”).
Conform documentatiei oficiale Microsoft, o etapa de AutoML se desfasoara in urmatorii pasi:

1. Identificarea problemei de Machine Learning pentru care cautom un model: clasificare,


regresie, predictie(pe baza intervalului de timp)

2. Specificarea sursei, dar si a formatului datelor de antrenare(datele deja clasificate, “labeled


data”) : vectori Numpy sau Panda dataframe

3. Configurarea masinii ce va realiza calculul pentru antrenarea modelelor : masina locala sau
numeroase tipuri de resurse remote(VM, Azure Databricks etc.)

4. Configurarea parametrilor referitori la modalitatea de procesara a datelor, de alegere a


modelului superior, a numarului de iteratii etc.

De exemplu, in fiecare experiment de ML, datele alese sunt scalate si normalizate automat,
in functie de algoritmii testati la iteratia respectiva. Pentru fiecare algoritm testat, sunt aplicate
urmatoarele variante de preprocesare : StandardScaleWrapper( ( x- mean )/var) ,
MinMaxScaler(scalarea in functie de minimum/maximum de pe fiecare coloana), MaxAbsScaler
etc.
Dar, pe langa aceste transformari incercate by default, exista si alte variante pentru care putem
opta din configurari: encoding, transformare a datelor, completarea cu valori ce lipsesc etc.
In plus, pe langa aceste optiuni referitoare la preprocesarea datelor, putem specifica
numarul de iteratii, parametrul in functie de care sa se faca k-fold validation etc. .
Aceste configurari pentru AutoMl pot fi setate atat din interfata AutoML, cat si din
SDK-ul Python, folosind notebooks.

5. Ultimul pas, dupa finalizarea tuturor configurarilor, este lansarea in executie a


experimentului AutoML. Deoarece un astfel de experiment consta in antrenarea si
evaluarea multiplelor modele, in functie de metricile alese, acest proces poate dura un
timp considerabil. Pentru a reduce timpul necesar, AutoML poate fi considerat sa omita
anumite modele pentru care este cunoscut deja un rezultat slab pe zona urmarita.

Exemplu : clasificator pentru MNIST

Alegem setul de date(deja existent in sectiunea Datasets din workspace sau un set nou)
Odata ales un set de date, trebuie sa
alegem un nume pentru experiment, dar
si o resursa pe care sa-l rulam.

De asemenea, trebuie sa alegem


coloana pe care sa se faca predictia.
In acest exemplu concret de
dataset,MNIST, eticheta unei imagini (ce
cifra este, de fapt), se afla pe ultima
coloana, 785.
In ultima faza, alegem tipul task-ului(dintre cele 3 mentionate anterior). Vrem un clasificator
care sa ne eticheteze imaginile cu etichete de la 0-9. De asemenea, in aceasta etapa
putem alege setarile suplimentare pentru experimentul de AutoML, dar si pentru modul de
procesare a datelor din coloane(daca, de exemplu, modelele sa omita o anumita
coloana)
Dupa terminarea executiei task-ului de AutoML, putem inspecta rezultatele pentru a vedea modelul
determinat ca fiind cel optim, dar si intregul clasament de modele si scorurile acestora.
Pentru fiecare model ni se ofera informatii precum acuratete, recall, durata executiei etc. .
De asemenea, ni se ofera optiunea de a da deploy modelului cel mai performant(sau a oricarui alt
model din clasament)

Pentru MNIST, cu setarile de baza, observam ca scorul cel mai bun(0.973) il are algoritmul
VotingEnsemble.
Clasamentul complet arata in felul urmator:

In tab-ul “Properties” ni se ofera date despre intregul experiment (Coloane omise, validare etc.)
ML Designer tool
Unealta “Designer” din cadrul AzureML ne pune la dispozitie un canvas, prin care ne
putem construi, cu ajutorul unei interfete grafice sugestive, un model de machine
learning .

Putem, de asemenea, efectua numeroase operatii asociate, precum prelucrarea


datelor conform anumitor algoritmi, testarea modelelor sau deployment-ul folosind
serviciile Azure adiacente.

Terminologie(pe scurt, conform documentatiei oficiale):

Modul – Algoritm pe care il putem aplica asupra datelor noastre. Se pot referi la
prelucrarea datelor, dar si la scoring, la validare etc. . Unele module au parametri prin
care putem configura algoritmii interni ai acestora.

Pipeline – Un pipeline este format din unul sau mai multe seturi de date + module, pe
care le conectam unul la altul. Putem realiza un pipeline care antreneaza un singur
model sau care sa antreneze multiple modele. In documentatia Azure ni se spune ca un
pipeline valid are urmatoarele caracteristici: datele se pot conecta doar la
module(deci nu si la alte seturi de date), modulele se pot conecta atat la date cat si la
alte module, toate porturile de intrare(aici putem face o analogie cu parametrii de
intrare ai unei functii) ale unui modul trebuie sa fie cumva conectate la flow-ul de date
(continuare Designer tool)
+ toti parametrii obligatorii ai modulelor trebuie setati.

Cu aceasta terminologie, putem explica concret ce face Designer-ul din ML Studio:


• Drag and drop de date si module pe canvas
• Conectarea modulelor unul la altul pentru realizarea de pipeline-uri
• Rularea unui pipeline folosind o resursa de calcul din Azure
• Publicarea unui pipeline catre un REST pipeline endpoint pentru a putea rula din nou pipeline-
ul respectiv, de data aceasta cu noi date si/sau cu noi parametri
• Deployment-ul unui pipeline de inferenta real-time pentru a realiza predictii real-time, pe
masura ce apar date noi

In continuare, vom prezenta un exemplu de clasificare a datelor din acelasi set ca mai
devreme, MNIST(cifre scrise de mana), folosind, de aceasta data, Designer-ul.
Inca de la inceput, ni se ofera optiunea de a alege un sample pipeline pentru seturi de date “fai-
moase”. Putem efectua atat regresie, cat si clasificare. De asemenea, in pipeline-urile noastre
putem integra scripturi Python scrise de catre noi.

In partea stanga a ecranului gasim modulele si seturile de date dispo-


nibile, pe care le putem adauga in canvas cu drag and drop.
Seturile de date pot fi atat dintre cele memorate deja in workspace,
cat si seturi “sample”, pe care le regasim in biblioteca Azure.
Modulele sunt grupate pe categorii. Algoritmii de preproce-
sare a datelor se gasesc in tab-ul “Data Transformation”.
Algoritmii din “Feature Selection” ne pot spune, de exemplu,
care dintre trasaturile(coloanele) datelor au avut cel mai
mare impact in determinarea categoriilor prezise.
Canvas-ul nostru arata in felul urmator:

Primul “nod” este setul de date. Nefiind un modul, acesta nu are parametri. Putem insa
vizualiza datele folosind tab-ul “Outputs”.

Datele din setul nostru devin parametru de intrare pentru modulul “Split Data”.
Conectarea datelor la modul se face prin trasarea unei sageti. Sensul este important,
deoarece ne dicteaza modul in care se realizeaza flow-ul datelor prin pipeline-ul nostru.
Primul nostru modul este acela de separare a datelor initiale in
doua seturi: datele de antrenare si datele pe care testam modelul
nostru, la final.
Astfel, acest modul primeste datele din nodul anterior, din el
plecand doua sageti: una corespunde setului 1(setul de
antrenare), iar cealalta setului secundar, cel de testare.

Pe langa acesti parametri “principali”, pe care ii observam direct


in canvas, modulul de “Split Data” primeste o serie de parametri
prin care putem configura algoritmul de separare a datelor.

Deoarece dorim sa separam exemple, nu trasaturi, alegem


optiunea “Split Rows”. Vom alege procentul standard pentru
algoritmii de ML: 80% din date vor fi folosite pentru antrenare, iar
restul de 20 % pentru testare. Bifand “Randomized split”, ne
asiguram ca impartirea se face la intamplare(altfel, primele
80% din intrari ar fi fost in categoria 1, restul in categoria 2).

Putem de asemenea seta seed-ul dupa care sa se efectueze


randomizarea.
In sectiunea outputs, observam ca modulul “Split Data” emite
doua seturi de date (disjuncte).
Urmatorul nod reprezinta algoritmul propriu-zis de ML ce ne da modelul. Observam in lista de
module din stanga ca Designer-ul ne pune la dispozitie o multitudine de algoritmi, pe care ii ale-
gem in functie de scopul nostru si de tipul de date pe care lucram.
In exemplul nostru concret, am ales drept algoritm o retea neuronala pentru clase multiple.
Putem seta diversi parametri ai modulului : numarul de straturi, numarul de iteratii, numarul de noduri
etc.
Modulul acesta este conectat la “Train Model” impreuna cu datele de antrenament(primul set de
date din output-ul “Data Split”), in care se realizeaza antrenarea efectiva a modelului, pe setul
nostru concret de date. Modulului de antrenare ii setam ca parametru coloana ce trebuie prezisa
(ultima, 785, ca in exemplul anterior), dar si resursa pe care se va realiza calculul.
Odata antrenat modelul, trebuie sa
il verificam folosind datele noastre
de test (cele 20% ramase, a doua
sageata ce iese din “Data Split”).
Output-ul din “Score Model” merge
in modulul “Evaluate Model” pentru
evaluarea finala a modelului.

Exista mai multi algoritmi pe care


Studio ii pune la dispozitie, referitori
la scoring si evaluarea modelelor.

De exemplu, putem realiza cross


validation, cu k-ul setat de noi ca
parametru.

Asa cum am mentionat mai sus, putem vizualiza diferite rezultate adiacente, prin care observam
evolutia modelelor testate. De exemplu, modulul “Permutation Feature Importance” primeste ca
parametri modelul antrenat si datele de test, oferind ca output trasaturile(coloanele) cele mai
importante in distinctia dintre clase.

Odata ce am conectat toate modulele dorite, putem rula pipeline-ul si observa rezultatul
experimentului.
Odata rulat pipeline-ul, putem observa rezultatele uitandu-ne la output-ul modulului de
evaluare. Clasificatorul nostru a obtinut o acuratete de 0.974.

Acum ca am realizat un pipeline complet, ii putem da deploy printr-un web service.


Acest lucru se poate face “manual”, adaugand modulele de web service din meniul din
partea stanga, sau folosind optiunea de publish. Putem, asa cum am mentionat in mod
precedent, forma un pipeline de inferenta in timp real(ne vor fi adaugate automat
modulele necesare si conectate la input/output-urile respective), pentru predictii real-
time.
Am acoperit cele 3 mijloace prin care putem dezvolta modele prin Azure ML Studio.
Uneltele din sectiunea “Assets” ne grupeaza intr-un singur loc conceptele pe care le-am prezentat
deja: seturi de date, pipeline-urile noastre, modele etc. .

Datasets:
Putem utiliza atat seturi de date locale, de pe web, cat si
diverse seturi de date prestabilite, precum cel MNIST. Toate
seturile de date cu care lucram in ML Studio apar aici, putand
fi apoi folosite in Designer sau in AutoML.

Experiments: experimentele rulate de noi, atat prin Designer cat si prin AutoML. Aici putem
grupa experimentele dupa setul de date folosit si observa diferentele intre rezultate.

S-ar putea să vă placă și