Aplicații web care utilizează modele AI

  • Pregătiți un model de învățare automată utilizând bibliotecile Python într-un Jupyter Notebook
  • Încorporarea unui model de învățare automată instruit într-o aplicație web Streamlit

Acestea sunt activitățile pentru această lecție:

LUCRUL CU MODELE DE ÎNVĂȚARE AUTOMATĂ

O altă caracteristică majoră a Jupyter Notebooks, Python și Streamlit este capacitatea de a antrena modele de învățare automată și de a face predicții. 

Dacă sunteți nou în Inteligența Artificială, ați putea dori să vizualizați lecțiile AI din acest curriculum pentru a învăța elementele de bază înainte de a sări în codarea mai avansată implicată aici. Puteți utiliza o platformă de modele de învățare automată ușor de utilizat, cum ar fi Teachable Machine, pentru a crea un model și pentru a-l încorpora în continuare într-o aplicație web Python . 

Dacă aveți ceva experiență cu inteligența artificială și cu lucrul cu seturi de date folosind Jupyter Notebooks, acesta este un pas bun pentru dumneavoastră. 

În această lecție, veți învăța despre unele dintre bibliotecile Python de învățare automată și despre unele dintre diferitele modele de învățare automată pe care le puteți crea utilizând Python. 

Pentru a trece în revistă, pentru a crea un model de învățare automată, există 3 părți principale. 

SET DE DATE

GĂSEȘTE MODELE CU AJUTORUL ALGORITMULUI DE ÎNVĂȚARE


PREDICȚIE!

Setul de date reprezintă datele de intrare pentru model. Acesta poate include text, imagini, sunete sau poziții. Am lucrat cu date text și numerice în Unitatea 2 folosind Jupyter Notebooks. Vom continua să lucrăm cu date text în această lecție, sub forma unei foi de calcul.

Găsirea modelelor este în esență construirea modelului de învățare automată folosind setul de date. Python conține multe biblioteci care vor construi un model AI din date. În acest curriculum, vom utiliza multe dintre funcțiile din pachetul scikit-learn. În plus față de bibliotecile pe care le oferă, site-ul web conține o mulțime de informații excelente despre învățarea automată și procesul de construire a modelelor. Este o resursă excelentă pentru a afla mai multe!

După ce ați creat modelul, modelul poate fi utilizat pentru a prezice un rezultat pe baza unor informații noi. Încă o dată, Python furnizează biblioteci care permit acest lucru.

PREPROCESAREA DATELOR

Înainte ca setul de date să poată fi trimis algoritmului pentru construirea modelului, acesta trebuie să fie preprocesatsau "curățat", astfel încât algoritmul de creare a modelului să poată lucra cu el și să creeze un model cât mai precis posibil. De fapt, cea mai mare parte a activității de creare a unui model de învățare automată constă în preprocesare. Va trebui să analizați cu atenție datele pentru a decide ce este important, ce poate fi lăsat deoparte și ce trebuie să fie curățat.

Ce implică preprocesarea? Cu un set de date bazat pe text, iată câteva lucruri de care trebuie să ne ocupăm.

 

Valori nule

Uneori, setul de date conține valori goale sau nule, în special dacă datele sunt date de sondaj. Uneori veți elimina toate rândurile care au date nule.

Cu toate acestea, dacă numărul de eșantioane este scăzut, este posibil să nu doriți să le eliminați. O altă opțiune este să înlocuiți o valoare nulă cu o altă valoare. Aceasta ar putea fi zero sau ar putea fi media tuturor celorlalte valori pentru câmpul respectiv.

Valori aberante

Uneori, datele conțin unul sau două eșantioane care sunt foarte diferite de restul datelor. Acest lucru ar putea distorsiona modelul. Nu doriți ca valorile aberante să afecteze modul în care este creat modelul, astfel încât deseori valorile aberante sunt eliminate din setul de date.

De exemplu, s-ar putea să aveți un set de date în care 95% din eșantioane sunt persoane cu vârste cuprinse între 10 și 30 de ani, dar aveți câteva eșantioane aleatorii în care persoanele au peste 50 de ani. Deoarece marea majoritate a eșantioanelor se află în grupa de vârstă 10-30 de ani, puteți lua în considerare eliminarea eșantioanelor din grupa de vârstă mai mare.

Standardizare

Adesea, numerele dintr-un set mare de date variază, în funcție de caracteristicile reprezentate. De exemplu, ați putea avea vârsta, care variază de la 0 la 70 de ani, dar apoi ați putea avea salariul, care variază de la 0 la 500.000! Scalele sunt foarte diferite, astfel încât o caracteristică ar putea conta mai mult în model.

Pentru a rezolva acest lucru, puteți standardiza datele astfel încât să fie pe o singură scală. scikit-learn oferă un StandardScaler, care actualizează fiecare caracteristică astfel încât media să fie 0 și abaterea standard să fie 1.

Un alt lucru de luat în considerare este un număr echilibrat de probe pentru fiecare clasă sau etichetă. Trebuie să vă asigurați că există aproximativ același număr pentru fiecare clasă în setul de date.

Codificare

Inteligenței artificiale îi plac numerele, nu neapărat cuvintele. Prin urmare, este util ca toate datele să fie convertite în numere. scikit-learn oferă funcții Encoder, astfel încât să puteți converti cu ușurință o serie de valori text posibile într-o serie de numere.

Un exemplu ar putea fi nivelurile de activitate, cu valori de eșantion sedentar, ușor, moderat, ridicat. Aceste răspunsuri ar putea fi codificate pentru a fi valorile 0, 1, 2 și 3, ceea ce este mult mai ușor de gestionat pentru algoritmul de construire a modelului.

SPLITTING DATA

După ce ați preprocesat datele, trebuie să le împărțiți într-un set de instruire și un set de testare. Setul de formare va fi utilizat pentru formarea și crearea modelului. Apoi vă veți testa modelul folosind setul de testare pentru a vedea cum funcționează.

Există modalități standard de împărțire (de obicei 75% pentru instruire și 25% pentru testare), dar puteți împărți oricum doriți. Din nou, funcțiile sunt furnizate astfel încât toate acestea să fie automatizate pentru dvs. 

CREAREA MODELULUI

Următorul pas este crearea modelului. O decizie importantă de luat este: ce algoritm să folosesc? Există mulți algoritmi diferiți de învățare supravegheată din care puteți alege și este greu să știți pe care să îl utilizați. Un proces bun este să încercați mai mulți algoritmi diferiți și apoi să vedeți care vă oferă cea mai bună precizie. 

Primul pas este să decideți dacă aveți nevoie de o algoritm de clasificare sau un algoritm de algoritm de regresie algoritm de regresie. Aceasta depinde de ceea ce încercați să preziceți. 

Algoritmii de clasificare sunt utilizate pentru a prezice obiective sau clase discrete. De exemplu, clasificarea e-mailurilor ca fiind spam sau nu spam ar fi o problemă de clasificare

Algoritmii de regresie sunt utilizate pentru a prezice ceva care se află de-a lungul unui interval continuu. Un exemplu ar fi prezicerea salariului pe care îl va primi o persoană. Predicția este un interval de numere, iar rezultatul poate fi orice valoare de-a lungul acestui interval. 

Iată doar câteva dintre tipurile populare de algoritmi de creare a modelelor.

neural network

Clasificare

  • Arbore decizional
  • Pădure aleatorie 
  • Vecinii cei mai apropiați (K-Nearest Neighbors)
  • Naive Bayes
  • Regresia logistică
  • Mașină vectorială de suport

Regresie

  • Regresie liniară
  • Regresia Ridge
  • Regresia Lasso
  • Regresia polinomială
  • Regresia liniară bayesiană
  • Regresie vectorială cu suport

Rețineți că unii algoritmi se încadrează în ambele tipuri. De exemplu, există un Clasificator cu arbore decizional, precum și un Regresor cu arbore decizional. Și un Support Vector Machine funcționează pentru clasificare, iar Support Vector Regression funcționează pentru regresie. 

Așadar, cum vă decideți pe care să o folosiți? Ar trebui să faceți cercetări pentru a vedea ce folosesc alți cercetători de date pentru diferite situații, pentru a vedea ce ar putea fi potrivit pentru modelul dvs. De asemenea, ar trebui să încercați algoritmi diferiți cu datele dvs. și apoi să găsiți cel care oferă cea mai bună precizie. De asemenea, puteți modifica parametrii unui anumit algoritm pentru a vedea dacă acesta generează un model mai precis. 

scitkit-learn oferă funcții pentru toți acești algoritmi, astfel încât crearea modelului este simplă. 

EVALUAREA MODELULUI

Doriți ca modelul dvs. să fie cât mai bun posibil, deci trebuie să îi evaluați performanța. Două variabile comune în evaluarea unui model sunt deviația și varianța. 

Bias este diferența dintre valoarea prezisă de model și valoarea corectă. 

Variația reprezintă cât de mult se schimbă predicțiile atunci când se utilizează date diferite. 

Doriți să obțineți un echilibru bun între părtinire și variație.

Prejudecată ridicată -> subadaptare.

Subadaptarea are loc atunci când modelul este prea simplu pentru a ține cont de zgomotul din datele de antrenament. Acest lucru se poate întâmpla dacă nu există suficiente date sau suficiente caracteristici (coloane), sau dacă există prea mult zgomot în date. Dacă un model nu are performanțe bune atât pentru datele de formare, cât și pentru datele de testare, acesta semnalează subadaptarea.

Varianță ridicată -> supraadaptare.

Overfitting se întâmplă atunci când antrenați un model pe un set de date și acesta funcționează foarte bine, dar dacă îi prezentați apoi date noi, acesta nu funcționează deloc bine. Acest lucru se poate întâmpla dacă modelul este prea complex și încearcă să se potrivească prea bine cu datele de antrenament. Modelul poate prezice foarte bine datele de formare, dar apoi are rezultate slabe la testarea datelor.

O tehnică de verificare a performanței unui model este validarea încrucișată.

Validarea încrucișată înseamnă antrenarea modelului de mai multe ori, folosind de fiecare dată diferite împărțiri ale datelor de antrenament/testare. Setul dvs. de date este împărțit în mai multe falduri, sau subseturi. Apoi, un grup este păstrat ca set de validare sau de testare, iar celelalte grupuri sunt utilizate pentru formarea modelului. Acest lucru se efectuează de mai multe ori, astfel încât de fiecare dată seturile de formare și de testare se schimbă. 

 

sciikit-learn oferă, de asemenea, un metrici astfel încât să puteți obține cu ușurință scoruri de performanță pentru modelele dvs. 

  • scor de acuratețe = predicții corecte/predicții totale
  • precizie = pozitive reale/(pozitive reale + pozitive false)
  • rechemare = pozitivi adevărați/(pozitivi adevărați + negativi falși)
  • Scorul F1 = (2 x precizie x reamintire)/(precizie + reamintire)
  • specificitate = negativ adevărat/ (pozitiv adevărat + negativ fals)
  • matricea de confuzie - arată numărul de rezultate pozitive adevărate, negative adevărate, fals pozitive și fals negative

Prin verificarea parametrilor de la diferiți algoritmi, puteți alege cel mai bun model. 

PREDICTING!

Odată ce aveți un model de care sunteți mulțumit, doriți să îl utilizați în aplicația dvs. 

Este o practică obișnuită să efectuați preprocesarea, crearea și evaluarea modelului utilizând Python, într-un mediu precum Jupyter Notebooks. De aici, vă puteți exporta modelul ca fișier.

Apoi, în cadrul aplicației Streamlit, puteți încărca modelul și îl puteți utiliza pentru a face predicții. 

În cadrul activităților din această lecție, veți parcurge întregul proces folosind un set de date privind riscul de accident vascular cerebral. Veți vedea cum să preprocesați datele, să creați modele utilizând diferiți algoritmi și apoi să utilizați un model într-o aplicație Streamlit simplă pentru a prezice riscul de accident vascular cerebral, având în vedere anumite caracteristici de intrare. 

ACTIVITATEA 1: FORMAREA UNUI MODEL AI ÎN JUPYTER NOTEBOOK

Durată estimată: 60 de minute

Explorați un set de date privind riscul de accident vascular cerebral pentru a construi un model AI

Urmați unul dintre aceste videoclipuri, în funcție de dacă sunteți codare locală pe computerul dvs. (video 1) sau codare online (video 2) către:
  1. Descărcați un set de date de predicție a accidentelor vasculare cere brale de la Kaggle.
  2. Lucrați cu datele într-un Jupyter Notebook pentru:
    • Analizați datele
    • Preprocesarea datelor pentru a le pregăti pentru model
    • Creați câteva modele diferite
    • Evaluați și alegeți un model pentru aplicația dvs.
    • Exportați modelul
Descarcă Notebook

PROVOCARE

Încercați un alt model decât cele din Jupyter Notebook. 

  1. Căutați pe site-ul scikit-learn alți algoritmi de clasificare și analizați alte exemple de creare de modele pe Kaggle.
  2. Alegeți un algoritm și adăugați codul în caietul dvs. pentru a crea modelul.  
  3. Utilizați metricile scikit-learn pentru a verifica precizia. 

Cum funcționează modelul dvs.? Este mai bun decât oricare dintre ceilalți algoritmi din caiet?

ACTIVITATEA 2: CREAȚI O APLICAȚIE DE PREDICȚIE

Durată estimată: 45 de minute

Utilizați modelul dvs. într-o aplicație Streamlit

Urmați unul dintre aceste videoclipuri legate mai jos pentru a crea o aplicație web care va face o predicție a riscului de accident vascular cerebral pe baza datelor introduse de utilizator.
Alegeți videoclipul potrivit în funcție de modul în care vă codificați aplicația, fie local cu Visual Studio Code, fie online cu Codespaces.

PROVOCARE

Setul de date Iris este un set de date clasic care clasifică florile de iris în 3 specii (setosa, versicolor și virginica) pe baza dimensiunilor petalelor și sepalelor.

  1. Faceți unele cercetări cu privire la setul de date pentru a învăța caracteristicile și țintele acestuia. 
  2. Puteți descărca setul de date și să vă creați propriul model sau să utilizați acest model(fișier pickle) creat cu ajutorul vecinilor K-nearest. Rețineți că nu a fost necesar niciun scalator pentru acest set de date. Fișierul pickle conține doar modelul.
  3. Importați modelul și creați o aplicație Streamlit pentru a prezice speciile de iris pe baza celor patru caracteristici ale setului de date.

INSPIRAȚIE TECHNOVATION

Iată câteva exemple uimitoare de la participanții la Technovation care au folosit Python și Streamlit pentru a crea aplicații web care încorporează modele de învățare automată. 

REFLECȚIE

Ați trecut prin întregul proces de preprocesare a unui set de date, de construire a mai multor modele și de evaluare și alegere a unuia pentru a-l utiliza într-o aplicație. Aceasta este o mulțime de lucruri de învățat într-o singură lecție!

reflection
Ce tip de model credeți că veți avea nevoie pentru soluția dumneavoastră - clasificare sau regresie?
Ce părți vi s-au părut greu de înțeles?
Ce măsuri puteți lua acum pentru a afla mai multe, astfel încât să vă puteți construi soluția?

REVIZUIREA TERMENILOR CHEIE

  • Preprocesarea - preluarea unui set de date și asigurarea faptului că datele din acesta sunt adecvate pentru a antrena un model de învățare automată
  • Algoritm de clasificare - un algoritm utilizat pentru a antrena un model de învățare automată care va clasifica sau prezice valori discrete
  • Algoritm de regresie - algoritm utilizat pentru a antrena un model de învățare automată pentru a prezice o valoare pe un interval continuu
  • Bias - diferența dintre valoarea prezisă de model și valoarea corectă, datorată ipotezelor incorecte care simplifică modelul
  • Variația - cantitatea de variabilitate în predicțiile modelului, atunci când un model nu este capabil să generalizeze atunci când se confruntă cu date noi
  • supraajustarea - atunci când modelul se potrivește prea bine cu datele de antrenament, astfel încât nu poate face predicții bune cu date noi, cauzat de varianța ridicată a modelului
  • Subadaptare - atunci când un model este simplificat prea mult și nu funcționează bine nici pe datele de antrenament, nici pe cele de testare, cauzat de un nivel ridicat de părtinire sau de ipoteze în model
  •  

RESURSE SUPLIMENTARE

Învățarea automată 

Streamlit