Documente Academic
Documente Profesional
Documente Cultură
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.
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.
3. Configurarea masinii ce va realiza calculul pentru antrenarea modelelor : masina locala sau
numeroase tipuri de resurse remote(VM, Azure Databricks 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.
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.
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 .
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.
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.
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.
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.
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.