Cea mai bună abordare pentru un proiect de învățare automată end-to-end [2022]

Publicat: 2021-01-01

Învățarea automată își ia ritmul și a fost o dispută pentru o perioadă foarte lungă de timp. Unii algoritmi și arhitecturi foarte grozave din acest domeniu au făcut posibil ca conceptul de învățare automată să fie aplicat în lumea practică și live.

Nu mai este doar o noțiune pentru cercetare și s-a răspândit adânc în domenii de aplicare utile. Și astăzi, mai mult ca niciodată, este nevoie să stăpânești arta pipeline end-to-end pentru proiectele de învățare automată.

Există un interes din ce în ce mai mare pentru învățarea automată pentru o mulțime de oameni și există o cantitate imensă de resurse disponibile care vă pot ajuta să înțelegeți elementele fundamentale ale ML și AI. Multe cursuri vă vor duce de la învățarea unor concepte de bază până la construirea unor modele de ultimă generație.

Dar asta este? Învățăm cu adevărat cum să accesăm datele și vedem cu adevărat cum să curățăm datele, astfel încât modelul nostru ML să poată extrage caracteristici utile din el? Și cum rămâne cu partea de desfășurare? Există atât de multe întrebări pe linii similare care rămân fără răspuns în mintea noastră după ce vom finaliza astfel de cursuri și programe.

Această problemă apare din cauza unei înțelegeri slabe a unei conducte complete de învățare automată de la capăt la capăt pentru orice proiect. În acest articol, vom trece printr-o astfel de conductă pentru a înțelege exact ce trebuie făcut pentru a obține rezultate mai bune într-un scenariu real pentru orice proiect ML.

Una dintre cărțile care arată cel mai bine acest lucru este Învățare automată manuală cu Scikit-Learn, Keras și TensorFlow de Aurelien Geron.

Această conductă de la capăt la capăt poate fi împărțită în câțiva pași pentru o mai bună înțelegere, iar aceștia sunt:

  1. Înțelegerea enunțului problemei
  2. Obținerea datelor solicitate
  3. Înțelegerea datelor
  4. Curățarea datelor
  5. Selectarea celui mai bun model pentru antrenament
  6. Reglarea fină a hiperparametrilor
  7. Prezentarea rezultatelor
  8. Implementarea și întreținerea sistemului

Pentru a înțelege mai bine canalul oricărui proiect de învățare automată din viața reală, vom folosi exemplul popular al problemei de predicție a prețului casei din California. Vom discuta toate punctele de mai sus în legătură cu această enunțare a problemei. Ar putea exista unele modificări minore pentru diferite proiecte, dar în general obiectivul rămâne același.

Cuprins

Înțelegerea enunțului problemei

Pentru a construi o soluție bună, trebuie să înțelegeți foarte clar enunțul problemei. Cel mai probabil vei ajunge să construiești și să antrenezi un model de învățare automată, dar zonele de aplicație din viața reală au nevoie de mult mai mult decât doar modele. Ieșirea modelului ar trebui să fie potrivită cu ceea ce are nevoie exact de utilizatorul final.

Pentru acest exemplu special, ni se oferă un set de date cu toate valorile din California, cum ar fi populația, venitul, prețurile caselor și altele. Rezultatul cerut de model este că ar trebui să poată prezice prețul casei având în vedere celelalte atribute ale acesteia, cum ar fi locația, populația, venitul și altele.

Motivul important pentru acest pas este să înțelegem exact ce trebuie făcut și exact ce fel de soluție este nevoie. Aici se face partea principală de brainstorming pentru modul în care trebuie abordată enunțul problemei.

Citiți: Idei de proiecte de învățare automată pentru începători

Obținerea datelor solicitate

Odată ce ați înțeles clar enunțul problemei și ați decis să mergeți mai departe cu o abordare de învățare automată pentru a rezolva problema, ar trebui să începeți să căutați date relevante. Datele sunt cel mai important ingredient al oricărui proiect de învățare automată, așa că trebuie să găsiți și să selectați cu atenție numai datele de calitate. Performanța finală a modelelor ML depinde de datele care au fost utilizate în timpul antrenamentului.

Există diverse surse pentru a găsi date care pot ajuta la înțelegerea distribuției datelor și în exemplele din viața reală. Pentru exemplul nostru, putem lua setul de date California House Price Prediction de la Kaggle. Aceste date sunt în format CSV și, prin urmare, vom folosi biblioteca Pandas pentru a încărca setul de date.

Înțelegerea datelor

Este un aspect foarte important al soluției ML pentru a putea înțelege datele cu care lucrați. Acest lucru ne permite să alegem ce algoritmi sau arhitecturi model sunt mai potrivite pentru proiect. Înainte de a începe să privim datele în detaliu, este o bună practică să împărțiți mai întâi setul de date în seturi de tren și de testare. Acest lucru menține setul de testare neatins și, prin urmare, scade șansele de supraadaptare la setul de testare. Făcând acest lucru, eliminați părtinirea de snooping a datelor din model.

Există diferite moduri de împărțire a seturilor de date în aceste seturi de tren și de testare. Una dintre acestea este împărțirea acestuia cu o valoare procentuală codificată. 90% tren și 10% test este o valoare comună în majoritatea cazurilor.

După împărțire, va trebui să vizualizați setul de tren în profunzime pentru a înțelege datele. Setul de date actual include punctele de latitudine și longitudine și, prin urmare, este destul de util să folosiți diagrama de dispersie pentru a analiza densitatea în funcție de locații.

Găsirea corelației dintre două atribute din setul de date este utilă pentru a înțelege care atribute se referă mai mult la atributul necesar. În acest caz, trebuie să aflăm ce atribut este legat mai mult de prețurile caselor din setul de date. Acest lucru se poate face cu ușurință în Scikit-Learn folosind metoda corr(). Returnează o valoare pentru fiecare atribut în raport cu altul. Deci, dacă trebuie să vedeți relațiile cu prețurile caselor, acesta este modul în care o puteți face:

corr_matrix[“median_house_value”].sort_values(ascending=False)

valoarea_mediană a casei 1,000000venit_median 0,687170total_camere 0,135231vârsta_mediană_locuirii 0,114220gospodării 0,064702total_dormitoare 0,047865populație -0,026699longitudine -0,047279latitudine -0,142826

Aici, este vizibil că median_income este direct legat de valoarea casei și, pe de altă parte , valoarea latitudinii este indirect legată de aceasta.

În cele din urmă, puteți încerca, de asemenea, să faceți ceva inginerie de caracteristici combinând unele atribute împreună. De exemplu, total rooms_per_household poate fi mult mai informativ decât total_rooms sau valorile gospodăriei individual.

Curățarea datelor

În acest pas, pregătiți datele pentru proiectul Machine Learning. Este pasul cel mai consumator de timp și cel mai important din întreaga conductă. Performanța modelului depinde în mare măsură de cât de bine pregătiți datele. De obicei, este o practică bună să scrieți funcții în acest scop, deoarece vă va permite să utilizați acele funcții ori de câte ori este necesar și aceleași funcții pot fi folosite în linia de producție pentru a pregăti noile date pentru predicții.

Una dintre cele mai întâlnite probleme în datele reale este valorile lipsă pentru câteva intrări din setul de date. Există câteva moduri de a o gestiona. Puteți șterge direct întregul atribut, dar acest lucru nu este foarte bun pentru model. Puteți scăpa de rândul care are o valoare lipsă. Un alt mod care este folosit cel mai mult este să setați valoarea lipsă la o altă valoare, cum ar fi zero sau media aritmetică a întregii coloane, dacă este o valoare numerică.

Pentru valorile categorice, este mai bine să le reprezentați prin numere și să le codificați într-o codificare one-hot, astfel încât să fie mai ușor pentru model să lucreze la el. Scikit-Learn oferă, de asemenea, clasa OneHotEncoder, astfel încât să putem converti cu ușurință valorile categorice în vectori one-hot.

Un alt lucru de care trebuie să aveți grijă este scalarea caracteristicilor. Pot exista unele atribute ale căror intervale de valori sunt foarte drastice. Prin urmare, este mai bine să le scalați la o scară standard, astfel încât modelul să poată funcționa cu ușurință cu acele valori și să funcționeze mai bine.

Citește și despre: Salariul inginerului de învățare automată în India

Selectarea celui mai bun model pentru antrenament

După finalizarea curățării datelor și a ingineriei caracteristicilor, următorul pas devine destul de ușor. Acum, tot ce trebuie să faci este să antrenezi câteva modele promițătoare pe date și să afli modelul care oferă cele mai bune predicții. Există câteva moduri care ne ajută să alegem cel mai bun model.

Exemplul nostru de predicție a prețului casei din California este o problemă de regresie. Aceasta înseamnă că trebuie să prezicem o valoare dintr-un interval de numere care este, în acest caz, prețul casei.

Primul pas aici este să antrenați câteva modele și să le testați pe setul de validare. Nu ar trebui să utilizați setul de testare aici, deoarece va duce la supraadaptare pe setul de testare și în cele din urmă modelul va avea o regularizare foarte scăzută. Dintre aceste modele, modelul cu precizie bună de antrenament și acuratețe de validare ar trebui să fie ales de cele mai multe ori. Poate depinde și de cazul de utilizare, deoarece unele sarcini necesită configurații diferite decât altele.

Deoarece am curățat deja datele și funcțiile de preprocesare sunt gata, este foarte ușor să antrenați diferite modele în trei până la patru linii de cod folosind unele cadre precum Scikit-Learn sau Keras. În Scikit-Learn avem și o opțiune de validare încrucișată care ajută foarte mult la găsirea unor hiperparametri buni pentru modele precum arborii de decizie.

Reglarea fină a hiperparametrilor

După ce au fost selectate câteva modele, apare nevoia de reglare fină a hiperparametrilor pentru a-și elibera adevăratul potențial. Există și multe modalități de a realiza acest lucru. Unul dintre acestea este că puteți schimba manual hiperparametrii și antrena modelele din nou și din nou până când obțineți un rezultat satisfăcător. Aici puteți vedea clar problema pe care nu o puteți verifica atât de multe combinații cât ar face o sarcină automată. Deci, iată câteva metode bune de a automatiza aceste lucruri.

Grid Search este o caracteristică minunată oferită de Scikit-Learn sub forma unei clase GridSearchCV în care face validarea încrucișată pe cont propriu și află valorile perfecte ale hiperparametrului pentru rezultate mai bune. Tot ce trebuie să facem este să menționăm cu ce hiperparametri trebuie să experimentăm. Este o caracteristică simplă, dar foarte puternică.

Căutarea aleatorie este o altă abordare care poate fi folosită într-un scop similar. Căutarea în grilă funcționează bine atunci când există un spațiu mic de hiperparametri de experimentat, dar când există un număr mare de hiperparametri, este mai bine să utilizați RandomizedSearchCV. Încearcă hiperparametri aleatori și vine cu cele mai bune valori pe care le-a văzut de-a lungul timpului.

Nu în ultimul rând, este abordarea Ensemble Learning . Aici putem folosi mai multe modele pentru a-și oferi predicțiile respective și, în cele din urmă, putem alege predicția finală în ceea ce privește media tuturor. Aceasta este o metodă foarte promițătoare și câștigă o mulțime de competiții pe Kaggle.

După reglarea fină a toți hiperparametrii pentru modelul final, puteți utiliza modelul pentru a face predicții pe setul de testare. Aici putem evalua cât de bine se descurcă modelul pe setul de testare. Amintiți-vă că nu ar trebui să vă reglați fin modelul după aceasta pentru a crește acuratețea setului de testare, deoarece va duce la supraadaptarea eșantioanelor setului de testare.

Prezentarea rezultatelor

Odată ce cel mai bun model este selectat și evaluarea este făcută, este nevoie să afișați corect rezultatele. Vizualizarea este cheia pentru realizarea unor proiecte de învățare automată mai bune, deoarece totul este despre date și înțelegerea tiparelor din spatele acestora. Rezultatele numerice brute pot suna bine pentru oamenii deja familiarizați cu acest domeniu, dar este foarte important să le vizualizați pe grafice și diagrame, deoarece face proiectul atrăgător și toată lumea poate obține o imagine clară a ceea ce se întâmplă de fapt în soluția noastră.

Implementarea și întreținerea sistemului

Majoritatea cursanților ajung la această etapă a conductei și se confruntă cu probleme extraordinare în timp ce încearcă să implementeze proiectul pentru aplicare într-un scenariu real. Este destul de ușor să construiești și să antrenezi modele într-un notebook Jupyter, dar partea importantă este să salvezi cu succes modelul și apoi să îl folosești într-un mediu live.

Una dintre cele mai frecvente probleme cu care se confruntă inginerii ML este că există o diferență între datele care sunt primite live și datele pe care au antrenat modelul. Aici putem folosi funcțiile de preprocesare pe care le-am construit în timp ce creăm conducta pentru antrenarea modelelor noastre.

Există două tipuri de modele de învățare automată care pot fi implementate: un model online și un model offline. Modelul online este cel care continuă să învețe din datele pe care le primește în timp real. Modelele offline nu învață din mostre noi și trebuie actualizate și întreținute corespunzător dacă există o schimbare a tipului de date primite de ele. Deci trebuie să existe întreținere adecvată pentru ambele tipuri de modele.

În timpul implementării modelelor de învățare automată, acestea trebuie să fie incluse într-o platformă pentru ca utilizatorii să interacționeze cu ușurință cu ele. Opțiunile sunt largi, îl putem include într-o aplicație web, aplicație Android, API Restful și multe altele. Cunoștințele de bază despre crearea unor astfel de aplicații sau API-uri reprezintă un mare plus. Ar trebui să puteți implementa aplicații NodeJS sau Python pe servicii cloud precum Google Cloud Platforms, Amazon Web Services sau Microsoft Azure.

Dacă nu vă simțiți confortabil cu unele cadre precum Django sau Flask, puteți încerca Streamlit, care vă permite să implementați un cod Python sub forma unei aplicații web în doar câteva rânduri de cod suplimentar. Există diverse astfel de biblioteci și cadre care pot fi explorate.

Concluzie

Pentru a încheia întregul articol, aș spune că proiectele de învățare automată sunt destul de diferite de alte proiecte tradiționale în ceea ce privește pipeline și dacă reușești să stăpânești acest pipeline, totul în rest devine mult mai ușor.

Unii dintre cei mai importanți pași ai acestei conducte de la capăt la capăt pe care mulți dintre începători tind să-i neglijeze sunt curățarea datelor și implementarea modelului. Dacă acești pași sunt respectați, restul piesei este la fel ca orice alt proiect.

Urmând acești pași și stabilirea unui canal pentru proiecte vă ajută să aveți o viziune clară despre sarcini, iar depanarea problemelor devine mai ușor de gestionat. Așa că vă sugerez să parcurgeți acești pași și să încercați să implementați un proiect de învățare automată de la capăt la capăt al dvs. folosind această listă de verificare. Preluați o declarație de problemă, găsiți setul de date și continuați să vă distrați cu proiectul dvs.!

Dacă sunteți interesat să aflați mai multe despre învățarea automată, consultați Diploma PG de la IIIT-B și upGrad în Învățare automată și AI, care este concepută pentru profesioniști care lucrează și oferă peste 450 de ore de pregătire riguroasă, peste 30 de studii de caz și sarcini, IIIT- B Statut de absolvenți, peste 5 proiecte practice practice și asistență pentru locuri de muncă cu firme de top.

Ce este învățarea automată sau ML?

Capacitatea unui sistem de a învăța o sarcină fără a fi programată în mod explicit din datele furnizate este denumită învățare automată. Acest domeniu se concentrează pe dezvoltarea de programe de calculator care pot accesa date și pot învăța pe cont propriu. Este un subdomeniu al vastului subiect al inteligenței artificiale (AI). Învățarea automată este implementată în aproape toate sectoarele pentru a crește productivitatea, marketingul, vânzările, fericirea clienților și profitul corporativ. Mulți experți IT au fost interesați de acest lucru și iau în considerare schimbarea carierei.

Ce sunt proiectele ML end-to-end?

Proiectele de învățare automată end-to-end implică pași precum pregătirea datelor, instruirea unui model pe acesta și implementarea modelului respectiv. Este alcătuit din conducte care sunt modalități de a scrie codul și de a automatiza procesul de lucru. Aceste conducte, atunci când sunt compilate corespunzător, duc la formarea unui proiect de învățare automată de succes. Înțelegerea enunțului, obținerea datelor corespunzătoare, înțelegerea datelor, curățarea datelor, selectarea modelului optim pentru antrenament, reglarea fină a hiperparametrilor și prezentarea constatărilor sunt doar câteva dintre etapele implicate.

Ce sunt hiperparametrii în învățarea automată?

Un hiperparametru este un parametru în învățarea automată a cărui valoare este folosită pentru a influența procesul de învățare. Ele pot fi clasificate în două părți, hiperparametri model și hiperparametri algoritm. Hiperparametrii modelului nu pot fi asumați în timpul servirii mașinii la setul de antrenament, deoarece direcționează către sarcina de selecție a modelului. În schimb, hiperparametrii algoritmilor nu au niciun efect asupra performanței modelului, ci influențează viteza și calitatea procesului de învățare. Diferiți hiperparametri sunt necesari de diferite tehnici de antrenament a modelului, dar există unii algoritmi de bază care nu au nevoie de hiperparametri.