This is an old revision of the document!


Proiectul 1 (2020)

Nume proiect: Inferența pentru pacienții suspecți de COVID

Cum pandemia de COVID-19 pune societatea într-o situație nouă și plină de încercări, ne dorim să aducem o contribuție în domeniul medical. De aceea, ne propunem să construim un sistem de inferență a șansei de infectare cu COVID a unui pacient utilizând informații medicale și demografice.

Primul proiect la Managementul proiectelor software se desfășoară în perioada laboratoarelor 2, 3, 4, 5, 6. Începutul laboratorului 7 este termenul limită pentru definitivat proiectul, moment în care va fi prezentat asistentului (18-25 noiembrie 2020).

Întrebări și discuții

Cerinţa proiectului poate suferi modificări minore până în data de duminică, 25 octombrie.

Pentru întrebări sau nelămuriri legate de proiect, folosiți forumul dedicat al proiectului sau canalul de MS Teams dedicat proiectului .

Scopul proiectului

Se dorește construirea unui sistem de inferență a șansei de infectare cu COVID. Pentru realizarea lui, se vor utiliza:

  • un set de date cu informații medicale și demografice ale unor pacienți testați pentru COVID
  • un model de invățare automată supravegheată utilizând setul de date

Descrierea proiectului

Inferența se va face pe un set de date ce conține informații despre pacienți, precum:

  • instituția de unde au fost colectate datele
  • sex
  • vârstă
  • simptome declarate
  • dată debut simptome inițiale declarate
  • simptome raportate la internare
  • dată internare
  • diagnostic și semne de internare
  • istoric de călătorie
  • mijloace de transport folosite
  • confirmare contact cu o persoană infectată

Pentru antrenamentul modelului vostru, setul de date va conține și rezultatul unui test PCR:

  • rezultat testare (pe baza acestui câmp se va determina eticheta de clasificare a observațiilor)
  • dată rezultat testare

Observații

Despre datele primite:

  • generalizați și structurați cât mai bine datele astfel încât algoritmul va întoarce rezultate relevante pentru orice set de date de intrare nevăzut (numim nevăzut un set de date de intrare care respectă structura celui inițial, dar care conține observații medicale diferite de cele pe baza căruia s-a realizat antrenamentul)
  • toate datele de intrare vor fi codificate într-un format numeric folosind diferite tehnici pentru fiecare câmp găsit în fișierul de intrare; o codificare bună presupune posibilitatea de a ajunge la data inițială prin decodificarea datei codificate
  • se vor considera doar două valori pentru eticheta de clasificarea a observațiilor:
    • pozitiv (reprezentând faptul că pacientul a fost detectat pozitiv la testul PCR)
    • negativ (reprezentând faptul că pacientul a fost detectat negativ la testul PCR)
    • Hint: dacă se vor găsi și alte valori, este alegerea voastră cum le interpretați și cum le folosiți
  • există mutiple metode de evaluare precum:
    • utilizarea unor seturi de date disjuncte de antrenare și testare (se recomandă utilizarea acestei metode)
      • setul de date primit va fi împărțit în:
        • date de învățare
          • date pentru antrenare - training_data
          • date pentru validare și evaluare a antrenamentului - dev_training_data (acesta este un subset al training_data)
        • date de inferență/testare
          • date care nu vor fi folosite în etapa de antrenare astfel încât le putem considera date noi sau date nevăzute pentru modelul obținut - testing_data
    • validarea încrucişată cu mai multe (h) sub-seturi ale datelor (de antrenament)
    • leave-one-out cross-validation
    • Hint: rezultatele evaluării antrenamentului și rezultatele inferenței (pe același set de date, adică dev_training_data) trebuie să fie similare.
    • Hint: pentru obținerea unor subseturi corecte, trebuie să vă asigurați că raportul de distribuție al observațiilor cu rezultat pozitiv și cel al observațiilor cu rezultat negativ este relevant; adică un subset în care se găsesc doar observații cu rezultat negativ nu este corect; acest proces se numește echilibrare
  • folosiți următoarele măsuri de performanță:
    • acuratețea
      • este numărul de exemple corect clasificate / numărul total de exemple
      • este opusul erorii
      • va fi calculată pe:
        • setul de validare
        • setul de testare
    • precizia
      • este numărul de exemple pozitive corect clasificate / numărul total de exemple clasificate ca pozitive
      • probabilitatea ca un exemplu clasificat pozitiv să fie relevant
      • TP / (TP + FP)
    • rapelul
      • numărul de exemple pozitive corect clasificate / numărul total de exemple pozitive
      • probabilitatea ca un exemplu pozitiv să fie identificat corect de către clasificator
      • TP / (TP + FN)
    • scorul F1
      • media armonică a preciziei și rapelului
    • matricea de confuzie
    • AUC

Hint: Aceste măsuri vor fi folosite atât în etapa de antrenare cât și în etapa de de testare.

  • determinați și tratați zgomotele sau valorile lipsă găsite în setul de date
    • Hint: Se pot folosi valori predefinite pe baza unor informații statistice existente sau pe baza unei motivații logice.
  • distribuția datelor de antrenament și datelor de test trebuie să fie relevantă; de exemplu, rata de infectare cu COVID în realitate este de 5%
  • observațiile de antrenament trebuie să fie reprezentative pentru obesrvațiile de test; adică, atât în datele de test, cât și în datele de antrenare se vor găsi atât observații etichetate pozitiv, cât și negativ; raportul lor de distribuție rămâne la atitudinea voastră, dar trebuie motivată alegerea (vezi punctul anterior);
  • una din problemele ce pot apărea este Învățarea pe derost (overfitting): performanță bună pe datele de antrenament, dar foarte slabă pe datele de test;
  • unele date sunt irelevante pentru antrenament; una din opțiuni este să le eliminați din setul vostru; de gândit ce se întâmplă dacă primiți astfel de date la etapa de inferență

Despre etapa de antrenament:

O mare parte din operațiile pe date realizate în această etapă, se vor repeta/utiliza și la etapa de inferență.
* citește datele
* curăță, generalizează și mapează datele la o formă definită și așteptată de voi
  * aici (doar la antrenare) observații pot fi eliminate cu scopul de a oferi doar informații corecte/relevante la antrenare
* codifică datele într-o formă definită și așteptată de voi
  * aici (doar la antrenare) observații pot fi eliminate cu scopul de a oferi doar informații corecte/relevante la antrenare
  * se va determina cea mai bună codificare pentru fiecare tip de informație primit
    * exemple de tipuri de codificare:
      * one-hot encoding
      * dummy encoding
      * effect encoding
      * categorical encoding
      * binary encoding
      * base n encoding
* antrenează modelul ales și parametrizat cu datele codificate
* salvează modelul
* realizează inferența utilizând datele de validare
* evaluează antrenamentul utilizând metodele de măsurare menționate

Despre etapa de inferență:

Această etapă este numită și etapa de testare. În general, există următoarea abordare:
* citește datele
* curăță, generalizează și mapează datele asemenea etapei de antrenare
  * nu se vor elimina observații din setul de date
* codifică datele asemenea etapei de antrenare
  * nu se vor elimina observații din setul de date
* încarcă modelul
* realizează inferența utilizând:
  * datele de test
  * datele de validare
* evaluează inferența utilizând măsurile menționate

Cuvinte cheie

  • tensorflow
  • linear regressions
  • logistic regression
  • keras
  • input layers
  • selu layers
  • activation layers
  • dense layers
  • dropout layers
  • sigmoid function
  • binary cross-entropy
  • adam optimizer
  • precision
  • recall
  • AUC
  • TP, TN, FP, FN
  • binary classification
  • loss functions
  • fuzzy
  • fuzzy matching string
  • lemmatize
  • word2vec
  • spicy
  • numpy
  • pandas
  • categorical words
  • sklearn
  • metrics
  • classification report
  • slugify
  • fuzzy words mapping
  • fuzzywuzzy
  • jupyter
  • notebooks
  • kfold
  • outliers
  • pickle file
  • Hint: Vor fi adăugate ancore și mai târziu!

Setul de date

  1. dați clic aici.

Referințe

Livrabile

Obligatorii și care trebuie prezentate:

  1. Demo al sistemului
  2. Cod (pe Git)
  3. subsetul de antrenament
  4. subsetul de validare
  5. subsetul de testare

Alte livrabile la latitudinea evaluatorilor:

  1. prezentarea sistemului
  2. meeting minutes (minimum 5)
  3. SDD
  4. raport de testare (incluzand masuratorile de performanta mentionate mai sus)

Punctaj

70p implementarea sistemului. Din care:

  • 15p obținerea subseturilor de date conform indicațiilor din enunț
  • 35p antrenarea unui model și obținerea metricilor de performanță menționate în enunț
  • 10p realizarea inferenței pe date noi (nevăzute de sistem) obținute din setul de date inițial
  • 10p realizarea inferenței pe date noi (nevăzute de sistem) primite de la asistent la momentul prezentării proiectului

30p prezentarea proiectului. Din care:

  • 10p prezentarea metricilor de performanță și explicarea semnificației lor
  • 10p prezentarea membrilor de echipă și rolul fiecăruia în acest proiect
  • 10p se acordă de către asistent

Bonus

Se acordă un bonus de 10p pentru codificarea subseturilor de date de antrenare și validare.

Se acorda un bonus de cel putin 20% din punctajul total al proiectului dacă implementarea sistemului oferă posibilitatea de a integra funcția de inferență pe date noi într-un alt proiect software. De exemplu, funcția de inferență poate fi inclusă într-o componentă software de tip API care răspunde unui utilizator șansele de infectare cu COVID ale unor pacienți pe baza unui fișier de intrare.

mps/proiect/proiect-1.1634153997.txt.gz · Last modified: 2021/10/13 22:39 by iulia.stanica
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0