Introducere ………………………….. ………………………….. ………………………….. ………………………….. …….. [628729]

UNIVERSITATEA „BABEȘ -BOLYAI”
FACULTATEA DE MATEMATICǍ ȘI INFORMATICǍ
SPECIALIZAREA INFORMATICǍ

Lucrare de dizerta ție
Recunoa șterea sănătății
cardiace pe baza semnalelor
ECG

Coordonator științific
Prof. Dr. Anca Andreica
Absolvent: [anonimizat]
2019

1
Cuprins
Introducere ………………………….. ………………………….. ………………………….. ………………………….. ….. 3
1. Fundamentarea teoretică ………………………….. ………………………….. ………………………….. ………….. 6
1.1. Apartenența aplicației la domeniul medical ………………………….. ………………………….. ………. 6
1.1.1. Evoluția tehnologiei în domeniul medical ………………………….. ………………………….. …… 6
1.1.2. Dosarul electronic ………………………….. ………………………….. ………………………….. ……….. 6
1.1.3. Erori medicale ………………………….. ………………………….. ………………………….. …………….. 8
1.1.4. Tehnologii medicale ………………………….. ………………………….. ………………………….. …….. 8
1.1.5. Creșterea eficienț ei sistemelor de sănătate ………………………….. ………………………….. … 10
1.1.6. Tehnologia în cazul atacurilor de inimă ………………………….. ………………………….. …….. 10
1.1.7. Electrocardiografia ………………………….. ………………………….. ………………………….. …….. 11
1.1.8. Evoluția tehnologiei medicale ………………………….. ………………………….. ………………….. 12
1.1.9. Inteligența artificială în domeniul medical ………………………….. ………………………….. … 15
1.1.10. C oncepte ale științei și tehnologiei ………………………….. ………………………….. …………. 16
1.1.11. Fluența cu tehnologia medicală ………………………….. ………………………….. ……………… 17
1.2. Trecerea în revistă a avantajelor si dezavantajelo r. ………………………….. ……………………….. 17
2. Învățarea automata ………………………….. ………………………….. ………………………….. ………………… 19
2.1. Problematica învățării automate ………………………….. ………………………….. …………………….. 19
2.2. Învățarea supervizată ………………………….. ………………………….. ………………………….. ……….. 20
2.3. Învãțarea prin întãrire ………………………….. ………………………….. ………………………….. ………. 21
2.4. Învãțarea nesupervizatã ………………………….. ………………………….. ………………………….. ……. 23
2.5. Arbori de decizie ………………………….. ………………………….. ………………………….. …………….. 24
2.6. Algoritmul K -Nearest Neighbors ………………………….. ………………………….. …………………… 25
2.7. Mașinile cu suport vectorial (SVM) ………………………….. ………………………….. ……………….. 28
2.8. Rețele neuronale ………………………….. ………………………….. ………………………….. ……………… 33
2.9. Rețele neuronale recurente ………………………….. ………………………….. ………………………….. .. 38
2.10. Rețele LSTM(Long -Short Te rm Memory) ………………………….. ………………………….. …….. 40
2.11. Extragerea coeficienților MEL ………………………….. ………………………….. …………………….. 41
3. Detalii de implementare ………………………….. ………………………….. ………………………….. …………. 43
3.1. Arhitectura aplica ției ………………………….. ………………………….. ………………………….. ……….. 43
3.2. Procesarea datelor ………………………….. ………………………….. ………………………….. ……………. 44

2
3.3. Algoritmi de clasificare ………………………….. ………………………….. ………………………….. ……. 47
3.4. Utilizarea algoritmilor ………………………….. ………………………….. ………………………….. ……… 53
4. Prezentarea aplica ției ………………………….. ………………………….. ………………………….. ……………… 55
4.1. Crearea unei noi analize ………………………….. ………………………….. ………………………….. …… 55
4.2. Execuția algoritmilor ………………………….. ………………………….. ………………………….. ……….. 56
4.3. Predicția rezultatului pentru un ECG ………………………….. ………………………….. ………………. 57
4.4. Rezultate experi mentale ………………………….. ………………………….. ………………………….. …… 58
4.5. Concluzii ………………………….. ………………………….. ………………………….. ………………………… 59
Bibliografie ………………………….. ………………………….. ………………………….. ………………………….. ….. 61

3
Introduce re

Încă din cele mai vechi timpur i, ființa umană a simțit nevoia de a -și mări orizontul de c u-
noaștere în ceea ce privește mediul ce îl înconjoară și de a concretiza ideile sale într-un limbaj
cognitiv, matematic . Ace st lucru a fost îndeplinit odată cu invenț ia unei mașini de calcul care
avea să schimbe viața oamenilor într -un mod ideal și radical .
Progresele empirice realizate de -a lungul timpului în domeniul medical au reușit să epateze prin
utilitatea lor precum și prin nenumăratele vieț i salvate. Dezvoltar ea calității generale a vieții este
de asemenea o altă particularitate derivată din tehnologia medicală care avansează zilnic.

În zilele noastre, tehnologia a ajuns să -și imprime adânc rădăcinile în fiecare industrie,
îmbunătățind calitatea vieții personale a fiecărui om. Ramura medica lă e una din cele mai i m-
portante industrii în care tehnologia de vine un punct esențial de maximă necesitate. Această
creștere calitativă în domeniul medicinei este responsabilă pentru îmbunătățirea și salvarea n e-
număratelor vieți de pretutindeni.

Întrucât societatea contemporană se îndreaptă spre o progresie accentuată, domeniul medical a
luat și el amploare în domeniul tehnologiei. Acesta s -a dezvoltat rapid și este într -o continuă evo-
luție în concordanță cu cerințele pieții. Aplicațiile IT în domeniu l medical urmăresc să asigure
organizațiilor din domeniul sănătății o îmbunătățire în eficiența operațiunilor, o comunicare mai
bună medic -pacient, în vederea creșterii calității serviciilor de sănătate.

În această lucrare de dizertație voi elabora ș i prezen ta principalele aspect e teoretice și practice î n
legatur ă cu rolul aplicaț iilor de învățare automata în diagnosticarea bolilor de inima.
Diagnosticarea este o etapă a actului medical care permite identificarea naturii și cauzei afecțiunii
de care sufera un pacient. În unele situații, precum și cazul bolilor de inima, acest proces este
îngreunat de procesarea și înțelegerea electrocardiogramelor care necesita mult timp.

Scopul proiectului este de a demonstra necesitatea asistării doctorilor de către sisteme le intel i-
gente. Din cauza numărului mare informații, a erorii umane și a dificultății ridicate a procesului
de diagnosticare în anumite situații, aceste sisteme pot fi mai precise și ma i rapide decât cadrele
medicale. De asemenea, proiectul urmarește reali zarea unui sistem inteligent care să ajute card i-

4
ologii la determinarea exacta a tipului de boală cardiacă pe baza analizei electrocardiogramelor
(ECG). Acestea fiind spuse, se urmărește catalogarea pacientului într -una din cele treisprezece
categorii: Atri al Fibrilation, Atrial flutter, Atrial premature beats, Bigeminy, Heart left bundle
branch block, Heart right bundle branch block, Normal sinus rhythm, Premature ventricular co n-
tractions, Supraventricular Tachyarrhythmias, Trigeminy, Ventricular flutter, V entricular tach y-
cardia, Wolff Parkinson White Syndrome.

Un alt obiectiv urmă rit în realizarea proiectului reprezintă dezv oltarea unei aplicaț ii eficiente des-
tinată medicilor, care cuprinde atât utilizarea simplă și bine structurată, cât și funcț ionalități com-
plexe și concise. De asemenea, aplicația semnalează noutăți î n domeniul medical.

Pentru realizarea obiectivului se folosesc mai mul ți algoritmi de clasificare : Support Vector M a-
chines(SVM), Decision Tree, Reccurent Neural Networks, KNN. P e baza unui s et de date ,
aplica ția permite catalogarea unui nou pacient oferind un diagnostic. Lucrarea de dizertație
constituie și o comparație și o analiză a rezultatelor obținute utilizând algoritmii de clasificare
enumerați mai sus.

Partea practica a lucrării este reprezentată de o aplicație web care permite doctorilor
diagnosticarea unui pacient folosind clasificatorii descriși mai sus. De asemenea, doctorul are
posibilitatea de vizualizare a rezultatelor obținute și o analiză și comparație a algoritmilor
utilizaț i.

Lucrarea de dizertație intitulata “ Recunoașterea sănătații cardiace pe baza semnalelor ECG ” este
organizată în 4 capitole, fiecare capitol, la râ ndul lui este structurat pe mai multe subcapitole. În
continuare, capitolele lucrării de dizertație sunt alcătuite astfel : Primul capitol ilustreaz ă
prezentarea domeniului din care face parte proiectul(tema tratată relativ la enunțul problemei) , cât
și o prezentare succintă a tehnologiilor folosite . Al doilea capitol ofera o perspectivă de ansamblu
asupra înva țării automate. Aici sunt prezentați si algoritmii folosiți in aceasta aplicatie. De
asemenea, este descris modul de extragere a coeficienților Mel cepstrali cu ajutorul cărora se
proceseaza semnalele ECG în vederea utilizării algoritmilor de învățare auto mată. Capitolul al
treilea se rezum ă la descrierea detaliilor de implementare în timp ce c apitolul al patrulea este un

5
studiu de caz asupra diagnosticării bolilor de inima, prezentând rezultatele utilizării algoritmilor
de clasificare ( Support Vector Machi nes(Mașinile cu suport vectorial ), Decision Tree, Reccurent
Neural Networks, KNN) în aplicația practica. In ultimul capitol se exprimă atât concluziile finale
ale aplicației cât și opinia perso nală și posibilitățile de extindere a proiectului medical.

6
1. Fundamentarea teoretică

1.1. Apartenența aplicației la domeniul medical

Acest subcapitol i lustrează evoluția tehnologiei î n domeniul medical în vederea creșterii calității
serviciilor de sănătate.

1.1.1. Evoluția tehnologiei î n domeniul medical

Întrucât societatea contemporană se îndreaptă spre o progresie accentuată, domeniul me d-
ical a luat și el amploare în domeniul tehnologiei. Acesta s -a dezvoltat rapid, și este într -o con-
tinuă dezvoltare în concordanță cu cerințele pieții. Actualele sisteme de sănătate sunt centrate pe
pacient, și se bazează pe numeroase inovații tehnologice, ele luând naștere sub presiunea factor i-
lor demografici, economici si de calitate a vieții.
Aplicațiile IT urmăresc să asigure organizațiilo r din domeniul sănătății o îmbunătățire în
eficiența operațiunilor, o comunicare mai bună medic -pacient, în vederea creșterii calității se r-
viciilor de sănătate. Principalul beneficiu al inovațiilor IT din acest domeiu, îl reprezintă expa n-
siunea accesului la date, pacienții putându -se informa într -un timp real, de diagnostice, tratame n-
te, iar medicii având acces imediat la noile inovații din domeniul sănătății, oferindu -le pacienților
cele mai bune si eficiente tratamente. De asemenea, îmbunătățirea calităț ii serviciilor și vieții și
reducerea costurilor îngrijirilor medicale, conferă o reală valoare sistemului de sănătate.
La momentul actual, aplicațiile medicale au culminat spre realizarea unui sistem electro n-
ic integrat, care permit mai multor s tate ale lumii comunicarea și schimbul de informații între
pacienți, medici specialiști, organisme guvernamentale sau societăți de asigurare. Fără îndoială că
aceste sisteme au adus îmbunătățiri majore în ce privește calitatea și eficiența proceselor medic ale
în respectivele țări. Datorită acestei inovații tehnologice, se realizează cu ușurință detectarea ep i-
demiilor, îmbunătățirea supravegherii și evaluării parcursului bolilor cu caracter de durată,
îmbunătățirea supravegherii leacurilor ce apar în permane nță pe piață dar și restituirea cheltuiel i-
lor pacienților de către casele d e asigurări sociale de sănătate [1].

1.1.2. Dosarul electronic

Un punct esențial în sistemele de sănătate îl constituie elaborarea unui dosar electronic al
pacienților, c are să cuprindă informații cu privire la datele persoanale ale pacientului, alergii,
tratamente, reacții, evoluție medicală, acestea fiind absolut necesare cadrului medical pentru st a-

7
bilirea unui plan de tratament adecvat si corect pentru pacientul în cauz ă. Totodată, dosarul este
planificat a conține informații cu privire la istoricul medicației recomandate, rapoarte de la l a-
borator, radiografii, totul pentru o desfășurare calitativă a muncii cadrului medical cu raportare la
pacient.
Un avantaj demn de luat în considerare, este faptul că toate datele dintr -un asemenea
raport, sunt păstrate în siguranță, în mod organizat si cu accesibilitate online. Astfel, începând de
la trimiteri, rețete, analize, foi de observații, antecedente și istoricul de evenimente, sunt în pe r-
manență în siguranță. Printr -un sistem de autentificare, pacientul își poate verifica la orice oră
dosarul medical, prin intermediul accesului la Internet. De asemenea, cu acordul pacientului, m e-
dicul are acces la informații, pe baza cărora va oferi un plan eficient de tratament.
Pacientul, poate urmări etapele bolii, de la început, până ajunge la stadiul de vindecare.
Prin intermediul unui asemenea dosar electronic, are acces la consultații, medicație și indicații de
tratam ent din partea medicilor. Istoricul medical este administrat în maximă siguranță și se pot
vizualiza opiniile medicale, diagnosticele și sfaturile primite în decursul tratamentului. Prin i n-
termediul platformei, medicul curant are în vedere bolile și îngrij irile primite în trecut, de la d i-
verse insituții medicale publice sau private.
Așadar, numeroase beneficii se atribuie dosarului electronic al pacientului, printre care
administrarea eficace a informațiilor medicale, raportate de către reprezenta nții serviciilor med i-
cale, organizarea pe varii criterii și categorii a investigațiilor și tratamentelor, accesul privat și
securizat la informațiile medicale din orice locație.
Totodată este ușurat procesul de evoluție a stării de sănătate și în curajează participarea la
actul medical prin introducerea de informații utile cadrului medical, în vederea luării celor mai
bune decizii. Este redus în mod evident timpul de acces la informațiile necesare, în cazurile de
urgență și crește în mod semnificat iv operativitatea și eficiența serviciilor medicale.
Pentru medici, reprezintă o bază de date succintă și organizată ce conține istoricul med i-
cal al pacientului, cu detalii referitoare la investigații și tratamente. Este o bază întregită în v e-
derea stabilirii unui diag nostic, în realizarea investigaț iilor și oferă acces imediat și securizat în
orice moment. De asemenea medicul având acces la aceste informații, timpul de stabilire a unei
decizii clare și concise este redus în mod semnificativ.
Com unicarea între medici și între furnizorii de servicii medicale este facilitată și standar d-
izată iar numărul de erori medicale este redus, îmbunătățindu -se calitatea îngrijirilor. Medicul are

8
posibilitatea de a monitoriza rezultatele investigațiilor asigurâ nd un flux în procesul medical. În
situații de urgență, informațiile oferite de raport, pot fi vitale, întrucât reprezintă o sursă reală de
înștiințări medicale.
Pentru instituții, constituie o arhivă electronică eficientă în accesarea informațiilor și pe r-
mite administrarea unităților medicale, managementul pacienților în interiorul diferitelor sisteme.
Sunt evitate investigații suplimentare, scumpe, care totodată pot dăuna pacientului și crește cal i-
tatea actului medical prin informațiile oferite, costurile administrative reducându -se.
1.1.3. Erori medicale

În Statele Unite ale Americii, a fost realizat de către Agenția pentru Cercetarea și Cal i-
tatea Îngrijirii Sănătății o statistică cu privire la costurile și avantajele implementării tehnologiei
în acest domediu. S -a constat că au survenit modificări majore în cadrul acestor servicii, ele fiind
cu mult mai eficiente și sigure. Ceea ce este impresionant e faptul că s -a constatat că în cazul în
care circa 90% dintre pacienți ar fi beneficiat de acest sistem, economia ar fi ajuns la aproape 82
de miliarde de dolari, în anul 2015, printr -o creștere a eficienței și diminuarea șanselor de apariție
a efectelor adverse la pacienți internați sau care se tratează ambulator.
De-a lungul vremii, din cauza lipsei unu i sistem binedefinit în domeniul medicinei, au
avut loc numeroare erori de natură medicală ce au determinat decesul unui număr considerabil de
persoane, anual. Aceste erori au apărut datorită deficitului de performanță, greșelilor de scriere,
documentării foarte scăzute, probleme cauzate de slaba comunicare și datorită fluxului de lucru.
Însă cea mai mare eroare s -ar datora raportului greșit dintre doză și cantitate. O necunoaștere a
listei complete în ce privește medicația pacienților, poate duce la conse cințe nefaste, multiple
erori medicale și efecte adverse. [1]
Așadar, prin implementarea noilor sisteme cu informații medicale despre pacient și o bază
de date care să conțină toate prescripțiile medicale disponibile disponibile la orice oră, se dorește
reducerea acestor erori și salvarea mai multor vieți, pacientul beneficiind de cele mai optime se r-
vicii de sănătate. Este de un real folos, ca sistemul să fie răspândit pe o scară cât mai largă, și să
aibă cât mai mulți beneficiari.
1.1.4. Tehnologii medica le

Tehnologiile medicale sunt reprezentate de către dispozitivele medicale, diagnostice în
vitro, adică teste medicale efectuate în afara corpului și echipamente de imagistică folosite pentru

9
diagnosticarea, monitorizarea, evaluarea predispozițiilor și tratarea pacienților care suferă din
multiple cauze.
Dispozitivele medicale sunt importante deoarece sunt mecanismele prin care se livrează
diagnosticul și tratamentul. Ele sunt parte integrantă a tehnologiei medicale pentru furnizarea
procedeelor tehnolo gice medicale și sunt uneori considerate ca fiind centrul ei. Dispozitivele
medicale sunt cu siguranță unul dintre primele lucruri pe care indivizii le vor gândi când li se cere
să descrie tehnologia medicală. Adesea, dispozitivele medicale tehnologice sun t considerate o
extensie a simțurilor umane, permițând medicilor și tehnicienilor să vadă, să audă, să atingă, să
miroasă și să guste dincolo de limitele lor normale. Tehnologia imagistică permite medicilor să
vadă în interiorul corpului uman fără a le des chide. [2]
Produsele fabricate de industria tehnologiei medicale variază de la lentile și smartphone
dongle -uri, pentru diagnosticarea bolilor infecțioase, implanturile cardiace și monitorizarea gl u-
cozei din sânge, până la paturile de spital și scanerele RM N.[3]
Ca urmare a îmbunătățirilor pe care industria tehnologiei medicale le -a realizat, mulți o a-
meni trăiesc acum vieți mai sănătoase, mai lungi, mai active și mai independente. Tehnologia
medicală îmbunătățește, de asemenea, productivitatea și eficiența s istemelor de sănătate, d i-
recționându -le pe o cale durabilă.
Tehnologiei medicale i se datorează creșterea speranței de viață în multe zone afectate de
boală, îmbunătățind calitatea vieții și permițând oamenilor să rămână membri integrați, productivi
și social activi din punct de vedere economic. Între 1980 și 2011, speranța de viață a cetățeanului
european la naștere a crescut cu mai mult de 6 ani; Cu siguranță că îmbunătățirile tehnologiei
medicale au jucat un rol foarte important în acest sens.
Industria a demonstrat progrese considerabile cu privire la modul în care sunt gestionate și
tratate cazurile de boli cronice, cum ar fi bolile cardiovasculare și circulatorii, diabetul și afecți u-
nile musculo -scheletice. Mai mult decât atat, persoanele care suferă intervenții chirurgicale ben e-
ficiază acum de tehnici îmbunătățite. Există opțiuni de tratament mai multe și mai bune: proc e-
durile sunt mai puțin invazive, timpul de recuperare a fost redus și există mai puține complicații.
Diagnosticul este mai precis, det erminând cel mai eficient plan de tratament cu precizie
crescândă. Instrumentele de monitorizare mai performante țin pacienții departe de spitale, iar
monitorizarea la domiciliu permite pacienților să își gestioneze boala, rămânând în același timp
independ enți. În acest mod, pacienții se pot întoarce mai rapid într -o viață productivă și socială.

10
1.1.5. Creșterea eficienței sistemelor de sănătate

Evoluția tehnologiei medicale contribuie, de asemenea, la creșterea eficienței sistemelor
de sănătate. Fluxul co ntinuu al industriei tehnologiei, aduce noi îmbunătățiri problemelor e x-
istente și nevoilor medicale încă nesatisfăcute.
Pe măsură ce populația Europei înaintează în vârstă și se așteaptă creșterea bunăstării,
cererile financiare ale sistemelor europene de sănătate cresc mai rapid decât creșterea economică.
Prin urmare, este absolut necesar să se îmbunătățească eficiența îngrijirii. Industria tehnologiei
medicale, contribuie la eficientizarea sistemelor de sănătate, la eficientizarea costurilor și la vi a-
bilitatea acestora. De exemplu, există acum multe proceduri chirurgicale prin care un dispozitiv
este implantat. Aceste proceduri au înregistrat o reducere dramatică a duratei spitalizării.
În alte cazuri, cum ar fi chirurgia cataractei, marea majoritate a p rocedurilor sunt acum
efectuate fără a fi nevoie de internare. Și când spitalizarea este necesară, diagnosticele moderne
determină dacă un pacient este rezistent la antibiotice. În acest fel, utilizarea ineficientă și costi s-
itoare a produselor farmaceutice poate fi redusă. În mod similar, utilizarea soluțiilor precum
telemonitorizarea și trecerea de la spitalizare la îngrijirea comunității, contribuie, de asemenea, la
reducerea costurilor generale de îngrijire prin prevenirea spitalizărilor.
Există și alte beneficii, cum ar fi siguranța îmbunătățită a pacienților, datorită dispozitiv e-
lor medicale concepute pentru a minimiza riscul complicațiilor . Din cauza instrumentelor mai
sofisticate pentru stabilirea diagnosticului, planul de tratament poate fi stabilit mai eficient. Odată
cu creșterea medicinii personalizate, medicii pot determina la ce tratamente vor raspunde
pacienții fără a exista riscul de a se produce erori.
Tehnologia medicală rapidă în schimbare și disponibilitatea echipamentelor de diagnost i-
care și terapeutică de înaltă tehnologie, împreună cu schimbarea modului de practică al medicilor,
au revoluționat modul în care se livrează astăzi îngrijirile medicale.
1.1.6. Tehnologia în cazul atacurilor de inimă

Tratamentul pentru atacul de cord este un exemplu convingător al beneficiilor noilor
tehnologii. Tratamentul atacului de cord a fost modificat pentru a include utilizarea intervențiilor
chirurgicale de “bypass”, a medicamentelor de dizolvare a cheagurilor de sânge și a terapiilor pe
termen lung ca re reduc riscul aparițiilor atacurilor de cord.

11
Cheltuielile pentru pacienții cu infarct miocardic acoperite de Medicare în SUA au crescut
de la 3 miliarde USD în 1984 la 5 miliarde USD în 1998, în ciuda scăderii numărului de atacuri
de cord. Aceste costu ri crescute s -au datorat mai degrabă utilizării tehnologiilor avansate decât
creșterii costului tratamentului.
În urma îngrijirilor, a tratamentelor si a intervențiilor chirugicale oferite pacienților, se
constată că utilizarea tratamentului cu noi tehnol ogii a contribuit la creșterea speranței de viață a
pacientului cu atac cardiac, în medie cu un an. Reducerea mortalității prin atacurile de inimă se
datorează schimbărilor tehnologice. Tehnologia crește cheltuielile, dar se pare că beneficiile
pentru sănă tate sunt mai mult decât justificarea costurilor suplimentare. [4]

1.1.7. Electrocardiografia

Electrocardiograma, cunoscuta si sub abrevierea din limba engleza, EKG sau ECG, co n-
stituie un test simplu, nedureros care inregistreaza activitatea electrica a inimii. Pentru a intelege
acest test, este important sa cunoasteti modul in care functioneaza inima. Cu fiecare bataie a i n-
imii, un semnal electric (sau o unda) este transmis din varful inimii catre baza (generat de niste
celule speciale din camera dreapta superioara a inimii). Pe masura ce avanseaza, semnalul dete r-
mina inima sa se contracte si sa pompeze sange, procesul repetandu -se cu fiecare bataie de inima;
semnalele electrice ale inimii stabilesc ritmul batailor inimii. Atriul drept si cel stang sau
camerele superioare creeaza unda denumit "unda P" (urmeaza unei linii drepte cand impulsul
electric merge la camerele de la baza), iar ventriculele stang si drept sau camerele inferioare
creeaza urmatoarea unda denumita "complex QRS"; unda finala sau "unda T" reprezinta intoa r-
cerea electrica la un stadiu de repaus pentru ventricule.
Astfel, o electrocardiograma va monitorizeaza inima si va arata cat de repede bate, daca ritmul
batailor inimii este constant sau neregulat, puterea si freventa semnalelor electric e pe masura ce
trec prin fiecare portiune a inimii .

Medicul poate apela la electrocardiograma pentru a detecta neregularitati in ritmul inimii
(aritmii), respectiv: defecte ale inimii, probleme la valvele inimii, artere blocate sau ingustate
(boala arte riana caronariana), un atac de inima in situatii de urgenta.
De asemenea, EKG poate fi utila in identificarea cauzei durerilor inexplicabilein piept
(poate fi vorba de atac de cord, inflamatia invelisului inimii – pericardita sau angina), cauza sim p-

12
tomelor bolilor de inima (cum sunt scurtarea respiratiei, ameteala, stare de lesin sau batai ale i n-
imii reregulate sau rapide -palpitatii), dar si daca peretii camerelor inimii sunt i n-
grosati (hipertrofiati), modul in care functioneaza medicamentele/dispozitivele i mplantante spec i-
fice (pacemaker) sau daca pot afecta inima. Nu in ultimul rand, EKG poate evalua starea de san a-
tate a inimii cand sunt prezente alte afectiuni, cum sunt hipertensiune, colesterol ridicat, fumat,
diabet sau istoric familial de boli cardiovas culare. EKG ofera in mod concret doua tipuri princ i-
pale de informatii: prin masurarea intervalelor de timp in care semnalele electrice trec prin inima
(daca sunt normale, incete, rapide), dar si a cantitatii de semnale electrice ce trec prin muschiul
inimi i (cardiologul poate verifica daca parti ale inimii sunt marite sau suprasolicitate; dar si mo d-
ul in care inima este amplasata in cavitatea toracica). Exista insa si o serie de situatii in care pur si
simplu EKG este realizata ca o procedura de rutina, de exemplu inaintea efectuarii unei operatii.
1.1.8. Evoluția tehnologiei medicale

Practicanții timpurii ai medicinei s -au bazat în primul rând pe descrierea simptomelor și
pe observațiile personale ale pacientului. Rar au examinat corpul fizic al pacientulu i. În plus, un i-
versitățile medicale din Europa secolului al 13 -lea au subliniat o abordare teoretică și filosofică
care a descurajat studenții din domeniul medicinei să -și pună mâna pe pacient în timpul practicei
medicinei. Acest lucru a început să se schi mbe pe masură ce mulți medici au început să -și dea
seama ca textele medicale publicate pentru prima dată în secolul al XI -lea si practicile medicului
general din acea perioadă au avut multe erori. Începând cu secolul al XVIII -lea, medicii au î n-
ceput să uti lizeze din ce în ce mai mult tehnici manuale (sau mecanice) pentru a diagnostica
pacienții, iar disecția cadavrelor a devenit acceptată ca o practică medicală (Reiser, 1978).
În timp ce disecția cadavrelor umane și atingerea unui medic au fost extrem de u tile în
furnizarea unui tratament mai obiectiv și mai precis, cea mai mare parte a populației în această
perioadă era reticentă în a permite oricărui medic examinarea fizică. Începând cu secolul XIX,
medicii au început să folosească aparatură pentru diagno sticare sau terapeutică. Dispozitivul
Hutchinson pentru măsurarea capacității vitale a plămânilor a fost una dintre primele tehnologii
dezvoltate pentru a măsura numeric o funcție esențială a corpului. Un alt dispozitiv timpuriu a
fost tensiometrul lui Her isson pentru măsurarea tensiunii arteriale. De asemenea, chimia a început
să joace un rol important și a fost din ce în ce mai folosită pentru a diagnostica boli precum di a-
betul, anemia, difteria și sifilisul. Medicina s -a schimbat încet de la utilizarea dovezilor subiective

13
furnizate de pacient la dovezi obiective obținute de dispozitivele tehnologice mecanice și chi m-
ice.
Medicina la începutul secolului al XIX -lea a fost practicata doar de medici generaliști.
Tehnologia medicală a stimulat dezvoltarea spe cialiștilor medicali din Statele Unite. Specializ a-
rea medicală a fost necesară întrucât medicii de familie nu mai reușeau să țină pasul cu cantitatea
de cunoștințe necesare pentru a face evaluări exacte de diagnostic sau de tratament și de as e-
menea, apara tele și echipamentele utilizate în practica medicală deveniseră destul de complexe,
necesitând expertiză tehnică specializată.
Specializarea a forțat medicii să devină din ce în ce mai cooperanți. Astfel, spitalul a
devenit locul central pentru îngrijirea medicală. Specializarea și tehnologia medicală au mărit, de
asemenea, cantitatea de date necesare diagnosticării și tratării unui pacient. Astfel, înregistrarea
medicală a devenit punctul esențial pentru păstrarea informațiilor despre pacient și a creat n evoia
tehnologiei informației de a organiza și de a stoca cantități voluminoase de date. Această creștere
exponențială a tehnologiei medicale și a datelor a creat nevoia de mai mulți tehnicieni, de toate
felurile, pentru a testa și a gestiona datele medica le. Tehnologia medicală a creat și nevoi ed u-
caționale. Tehnicienii medicali aveau nevoie de educație pentru a deveni competenți în utilizarea
tehnologiei ce ajuta la tratarea și diagnosticarea bolilor. Pacienții aveau nevoie de educație atunci
când se conf runtau cu deciziile adesea confuze privind testele și procedurile efectuate pentru
sănătatea și bunăstarea lor. Medicii au devenit mai dependenti de utilizarea tehnologiei pentru
diagnostic si tratament. Tehnologia a efectuat evaluările de diagnostic care se bazau pe descrierile
pacientului sau pe examinările medicilor și le transferau la laboratoare medicale, chimice sau r a-
diologice. Rezultatul a fost o creștere a preciziei diagnosticului în detrimentul relațiilor apropiate
dintre doctor și pacient.
Unele dintre primele descoperiri ale tehnologiei medicale au fost termometrul, st e-
toscopul, microscopul, oftalmoscopul, laringoscopul și radiografia. Aceste dispozitive au permis
medicului să audă și să vadă părți ale corpului care au fost observate anterior doa r în cadavre.
Dispozitivul considerat a fi primul progres tehnologic medical de diagnosticare a fost stetoscopul.
Rene Läennec, un medic francez familiarizat cu acustica, a inventat stetoscopul în 1816. Invenția
a oferit numeroase soluții pentru obținerea de informații despre plămânii și bătăile inimii
pacienților. Cu toate acestea, scepticii i -au pus la încercare meritul și eficacitatea. În ciuda

14
opoziției inițiale față de valoarea sa, stetoscopul este încă folosit de profesioniștii medicali de
astăzi.
Mai târziu, invenția de raze X le -a permis medicilor să vizualizeze interiorul corpului fără
intervenție chirurgicală. În ciuda avantajelor de a fi capabile să producă imagini ale structurii i n-
terne a corpului, radiografia nu a fost o invenție care să fie răs pândită rapid.
Avansurile tehnologiei medicale au accelerat la începutul secolului al XX -lea prin d e-
scoperirile științifice și tehnologice, cum ar fi tehnicile de măsurare electrică, dezvoltarea se n-
zorilor, medicina nucleară și ultrasunetele de diagnostica re. În 1903, William Einthoven a co n-
ceput primul electrocardiograf și a măsurat modificările electrice care au avut loc în timpul
bătăilor inimii. În acest proces, Einthoven a inițiat o nouă treaptă atât pentru medicina cardiova s-
culară, cât și pentru tehni cile de măsurare electrică.
Avansarea rapidă a tehnologiiloe medicale, disponibile pentru profesia medicală, au co n-
dus, de asemenea, la dezvoltarea unor proceduri chirurgicale complexe. Aparatul respirator a fost
introdus în 1927 și prima mașină bypass ini mă-plămân în 1939. Dezvoltarea de noi cunoștințe și
proceduri a fost atât de mare încât, până la sfârșitul celui de -al doilea război mondial, un număr
mare de ingineri și oameni de știință americani și -au folosit capacitatea pentru a dezvolta tehn o-
logia. În acest timp s -au înregistrat progrese extraordinare în domeniul electronicii, al științei m a-
terialelor și al termodinamicii, care au contribuit la dezvoltarea tehnologiei medicale.
O altă tehnologie aplicată în domeniul medical în anii 1950 a fost micros copul electronic.
Microscopul electronic a reprezentat un progres semnificativ în vizualizarea celulelor relativ m i-
ci.
În anii 1970, cercetătorii medicali au adaptat computerele care au dezvoltat tehnologia
medicală prin efectuarea calculelor complexe, p ăstrarea înregistrărilor prin intermediul intel i-
genței artificiale și controlul instrumentelor care adesea au susținut șansa la viață. Dezvo ltarea
unor noi tehnologii medicale de imagistică, cum ar fi tomografia și imagistica prin rezonanță
magnetică (RMN) , unite cu modelare tridimensională, depindeau de tehnologiile informaționale
și informatice care au putut reprezenta grafic funcțiile și condițiile corpului. [5]
Tehnologiile medicale au furnizat dispozitive protetice, cum ar fi valve cardiace artif i-
ciale , vase sanguine artificiale, membre electromecanice funcționale și articulații scheletice r e-
constructive. Aceste inovații sunt rezultatul progreselor în domeniul științei, tehnologiei imagi s-
tice, tehnicilor de proiectare tehnologică și al științei material elor. În ultimii ani, tehnologia și

15
știința medicală au influențat practica medicinei în moduri profunde. Progresele tehnologiei me d-
icale în ultimii 50 de ani au depășit avansurile înregistrate în ultimii 2000 de ani. Într -o cultură
bogată în știință, se pare că dezvoltarea și utilizarea tehnologiei medicale vor continua.
Inovațiile tehnologice și științifice analizate reprezintă un segment mic al tehnologiilor
medicale care au influențat progresul și capacitățile furnizorilor de servicii medicale. Inovaț iile în
tehnologia medicală au înzestrat furnizorii moderni de îngrijire medicală cu abilitatea de a susține
și prelungi viața, de a repara părțile corpului afectate, de a se integra în corpul uman, de a vindeca
și trata multe boli și de a ameliora altfel o gamă largă de boli fizice și nedorite, dintre care puține
ar fi putut fi realizate în trecutul recent.
1.1.9. Inteligența artificială î n domeniul medical

Inteligența artificială începe să lucreze cot la cot cu medicii din întreaga lume, iar impactul ut i-
lizării acesteia în sistemul medical este unul uriaș. În primul rând, Inteligența Artificială se fol o-
sește azi în termeni restrânși, nu avem Inteligență Artificială generalizată, avem numai aplicații
care beneficiază de un aspect restrâns al acesteia. Aces t aspect se referă la rețele neurale, cu mu l-
te niveluri, ceea ce se numește deep learning, iar prin aceste rețele algoritmii pot învăța să ex e-
cute anumite sarcini de care beneficiază medicul sau pacientul. Beneficiile Inteligenței Artificiale
în medicină s unt împărțite pe trei dimensiuni: creșterea eficienței și productivității, prin autom a-
tizarea și optimizarea proceselor clinice, în așa fel încât medicul să se poată concentra pe pacient;
îmbunătățirea experienței pacientului, prin evitarea procedurilor in utile și prin prioritizarea cazu r-
ilor complexe și dezvoltarea medicinei de precizie, bazată pe diagnosticare de precizie și trat a-
ment optimizat pentru pacient.
Concret, un exemplu al modului în care Inteligența Artificială se folosește, la ora actuală,
în medicină este la nivelul diagnosticării pacienților pe baza datelor medicale – există algoritmi
antrenați să interpreteze aceste date mai rapid și cu o acuratețe mai mare decât un medic, ceea ce
în final duce la îmbunătățirea îngrijirii pacientului. De as emenea, prin Inteligența Artificială pot fi
detectate anumite afecțiuni medicale, procesele de scanare sunt automatizate, iar imaginile redate
sunt de o calitate mult mai bună. De altfel, în prezent, specialiștii lucrează la sisteme care
conectează anumite date despre pacient, stabilind cea mai bună opțiune de tratament (medicina de
precizie). În acest sens, Siemens Healthineers dezvoltă sistemul „Digital Twin“, un model fizi o-
logic, personalizat, actualizat pe tot parcursul vieții cu date despre pacient, fo losit pentru o îngrij i-
re personalizată și un tratament integrativ.

16
Gradul de deschidere al medicilor pentru folosirea Inteligenței Artificiale este foarte mare.
Există interes pentru adoptarea cât mai rapidă a acestor sisteme în spitalele din întreaga lum e, se
caută soluții pentru ca acestea să funcționeze cu cât mai puține erori și, în același timp, la nivelul
organizațiilor internaționale de sănătate există dorința de a încuraja penetrarea Inteligenței Artif i-
ciale în medicină. Astfel, dezvoltarea tehnolo giei nu va însemna faptul că medicii vor fi înlocuiți
cu roboții inteligenți, din contră, Inteligența Artificială le va ușura munca acestora.
Astfel, Inteligența Artificială este, probabil, singura tehnologie care are șanse să îmbunătățească
sistemul medic al, să micșoreze costurile asociate și să ofere îngrijire medicală milioanelor de pe r-
soane care au nevoie. Acum doctorii și inginerii lucrează foarte strâns .
Totuși, folosirea Inteligenței Artificiale în medicină are anumite limitări, ca orice altă
tehnol ogie. De pildă, pentru ca un algoritm să învețe să facă anumite sarcini, cum ar fi să recun o-
ască o anumită boală la un pacient, are nevoie de cât mai multe date ale pacienților pe care „să
exerseze“. Însă, în cazul unor boli rare, nu există suficiente date disponibile și atunci nu pot fi
construite sisteme care să învețe să recunoască acele afecțiuni.
Comunitatea științifică este optimistă și încearcă să dezvolte metode prin care calculatorul sau
rețeaua neurală pot învăța din exemple mult mai puține, dar a cest lucru va necesita mult mai mu l-
tă cercetare .[5]
1.1.10. Concepte ale științei și tehnologiei

Fundamentul tehnologiei medicale se bazează pe știință. Principiile științifice, nivelurile
anchetei și metodele științifice constituie baza lumii tehnologice . Dezvoltarea tehnologiei cu u l-
trasunete nu ar fi fost niciodată posibilă fără cunoașterea științifică a acusticei. Imagistica prin
rezonanță magnetică nu ar fi fost posibilă fără cercetarea științifică a energiei electrice și ma g-
netice. Tehnologul medical , înarmat cu cunoștințe create din știință, încearcă să creeze soluții la
problemele suferinței umane, bolii și mortalității. Ca rezultat, legăturile se formează între si s-
temele de știință, tehnologie și corp, care creează aria de anchetă numită tehnologie medicală.
Chiar dacă tehnologia medicală este strâns legată de aplicarea umană, ea se bazează mai
mult pe rădăcinile sale științifice. Astfel, se aplică în alte domenii. Multe tehnologii medicale sunt
deja utilizate în domeniul medicinii veterinare. În c onsecință, provocarea pentru atingerea unui
nivel de alfabetizare în domeniul tehnologiei medicale este de a promova înțelegerea faptului că
știința și tehnologia sunt inseparabile și trebuie învățate simultan. În timp ce aplicarea tehnologiei

17
medicale est e specifică sistemelor corporale, aceasta rămâne fundamentată atât în știință, cât și în
tehnologie. [6]
1.1.11. Fluența cu tehnologia medicală

Nu este suficient să înțelegi și să ai cunoștințe despre tehnologie. Astăzi, majoritatea o a-
menilor trebuie să ai bă, de asemenea, un nivel de bază de fluență cu tehnologia pentru a inte r-
acționa cu succes unul cu celălalt sau pentru a folosi serviciile de bază. Oamenii trebuie, de as e-
menea, să fie educați din punct de vedere tehnologic pentru a evalua produsele, servi ciile, si s-
temele disponibile și pentru a putea face alegeri sau decizii corecte. Natura lumii tehnologice va
necesita ca oamenii să poată gestiona tehnologia din jurul lor și să poată observa, investiga, testa
și analiza eficacitatea acesteia. Este foarte probabil ca majoritatea oamenilor să interacționeze sau
să aibă nevoie de folosirea unei tehnologii medicale în timpul vieții lor. Cunoașterea modului în
care se utilizează un defibrilator cardiac sau modul de efectuare a resuscitării cardiopulmonare
(CPR) poate fi de mare valoare. [7] În ceea ce privește impactul economic, cererea de specialiști
medicali cu competențe tehnice se numără printre domeniile ocupaționale cu cea mai mare
creștere. Viitorul tehnologiei medicale poate avea un impact semnificativ as upra sănătății,
sănătății și dezvoltării economice a societății.

1.2. Trecerea în revistă a avantajelor si dezavantajelor.

Aplicația practica este dezvoltată cu ajutorul tehnologiilor Python, Angular 6 si Nodejs. Am
folosit tehnologiile Python pentru de zvoltarea algoritmilor de inteligență artificiala, cât și pentru
analiza, procesarea si normalizarea datelor. Python este un limbaj de programare dinamic, de
nivel înalt, ce pune accent pe expresivitatea și înțelegerea ușoară a codului. Sintaxa sa permite
implementări echivalente cu alte limbaje în mai puține linii de cod. Datorită acestui fapt, Python
este foarte răspândit atât în programarea de aplicații, cât și în zona de scripting.
Limbajul facilitează mai multe paradigme de programare, în special parad igma imperativa (C) și
pe cea orientată pe obiecte (Java). Spre deosebire de C, Python nu este un limbaj compilat, ci i n-
terpretat. Acest fapt are atât avantaje, cât și dezavantaje. Pe de -o parte, Python este mai lent decât
C. Pe de altă parte, aplicațiile Python sunt foarte ușor de depanat, codul putând fi ușor inspectat
în timpul rulării. De asemenea, este foarte ușor de experimentat cu mici fragmente de cod fol o-
sind interpretorul Python.

18
Partea de server a aplicației este dezvoltată folosind framework -ul Node.js ; Datorită operă rii pe
un singur thread, abordării event -driven ș i modelului non -blocking I/O, Node. js practic acceptă în
permanentă cerințe, deoarece nu e nevoie să aș tepte să citească sau să scrie operaț ii – ceea c e
constituie o soluție eficientă pentru a fa ce față la sute de mii de cerinț e concurente . De asemenea,
această tehnologie e o soluție perfectă pentru implementarea de proxy -uri pentru API -uri REST .
Interfața client este dezvoltată folosind framework -ul Angular 6; Printre cele mai importan te
avantaje ale folosirii unui framework Javascript enumer ăm următoarele : arhitectura bazat ă pe
componente care oferă o calitate de rang înalt a codului, folosirea limbajului Typescript, folosirea
pachetului RxJs care ne permite utilizarea funcțiilor asinc rone, performanță crescută,
documentație “bogat ă”.
Un avantaj al aplicațiilor web este faptul că sunt accesibile de oriunde. Din punct de vedere al
principiului client -server, o aplicație web necesită puțin spațiu pe disk și deloc pe client. Într -o
aplicaț ie web, în ceea ce privește partea de client, aceasta se ocupă cu descrierea și prezentarea
informațiilor, pe când partea de server deține partea de logică și stocarea,menținerea datelor. De
asemenea, aplicațiile web pun în evidență avantajele rețelelor de securitate.
Un al doilea avantaj al aplicațiilor web îl reprezintă faptul că pot fi accesate de pe orice sistem de
operare, atâta timp cât dispozitivul este conectat la internet. De asemenea, conținutul aplicațiilor
web prezintă caracteristica de a putea fi accesate de pe orice dispozitiv (tabletă , PC, smartphone,
etc), permițand tuturor utilizatorilor să dețină acces și, mai mult decâ t atât, utilizatorii pot intra
mult mai ușor în contact cu informațiile.
Toate aceste informații pe care le -am prezentat ma i sus m -au determinat, în urma analizei efect u-
ate asupra beneficiilor și avantajelor oferite de tehnologiile web, să iau hotărârea de a dezvolta o
aplicație web c are are rolul de a facilita viaț a de zi cu z i a medicilor din întreaga lume prin intr o-
ducerea unui sistem de inteligenta artificiala care să ajute cardiologii la determinarea exacta a
tipului de boală cardiacă pe baza analizei electrocardiogramelor (ECG).
Totusi, aplicațiile web au câ teva dezavant aje, dintre care voi aminti două dintre cele mai consid-
erabile: conexiunea slabă a dispozitivului la internet (ceea ce va duce la o rulare lentă a aplicației)
și problematica compatibilitații cu diferitele versiuni ale navigatorilor web (browser). [8]

19
2. Învățarea automata

2.1. Problematica î nvățării automate
Învățarea automată, unul din sub -domeniile de bază ale Inteligenței Artificiale, se
preocupă cu dezvoltarea de algoritmi și metode ce permit unui sistem informatic să învețe date,
reguli, chiar algoritmi. Învățarea automată presupune în p rimul rând identificarea și
implementarea unei modalități cât mai eficiente de a reprezenta informații, în sensul facilitării
căutării, reorganizării și modificării lor. Alegerea modului de a reprezenta aceste date ține atât de
concepția generală asupra mo dului de rezolvare a problemei, cât și de caracteristicile datelor cu
care se lucrează. [9 ]
Învățarea nu se poate face pe baza unui set foarte mare de cunoștințe, atât din cauza
costurilor mari, presupuse de acumularea unor baze de informații mari cât și d in cauza
complexității memorării și prelucrării unui volum mare de informații. În același timp însă,
învățarea trebuie să ducă la formularea de suficiente „reguli” atât cât să permită rezolvarea unor
probleme dintr -un spațiu mai larg decât cel pe baza căru ia s-a făcut învățarea. Adică învățarea
trebuie să îmbunătățească performanța unui sistem nu doar în rezolvarea repetată a unui același
set de probleme, ci și în rezolvarea unor probleme noi. Acest lucru presupune o generalizare a
unei metode de rezolvare pentru a acoperi un număr cât mai mare de instanțe posibile, dar și
păstrarea unei specializări suficiente pentru a fi identificate corect instanțele acceptate. Aceasta se
poate face fie inductiv, generalizând o problemă plecând de la un set de exemple, fi e deductiv,
plecând de la o bază de cunoștințe suficiente asupra universului problemei și extrăgând date și
reguli esențiale. Pentru a putea face acest lucru, un algoritm de învățare trebuie să fie capabil să
selecteze acele elemente semnificative pentru r ezolvarea unei instanțe viitoare a problemei.
Aceasta alegere se face pe baza unor criterii de selecți e numite diagonale inductive. [10][11 ]
O altă componentă esențială al unui algoritm de învățare este metoda de verificare, o
metodă capabilă să confirme d acă generalizările făcute sau regulile deduse se apropie mai mult
de soluția ideală decât starea anterioară a sistemului. Studiul învățării automate a dus la
descrierea a numeroase metode, variind după scop, date de antrenament, strategia de învățare și
modalitatea de reprezentare a datelor.

20
În cadrul învățării automate se pot distinge trei mari direcții de cercetare și de tipuri de
învățare. Prima dintre ele este reprezentată de învățarea supervizată, care presupune construirea
unui model al datelor iniția le în care o parte dintre ele sunt explicative, etichetate, iar una sau mai
multe sunt neetichetate, considerate date de test. Cel de -al doilea tip de învățare automată este
învățarea prin întărire, care presupune oferirea unei recompense sau a unei pedeps e simulate, în
funcție de anumite tipuri de comportamente ale sistemului, cu ajutorul cărora sistemul învață un
comportament așteptat. Ultima categorie, cea a învățării nesupervizate, se aplică cel mai bine pe
anumite probleme din viația reală, deoarece nu necesită nicio etapă de antrenare, aplicându -se
direct pe datele neetichetate. În continuare vor fi prezentate cele trei tipuri de învățare. [12 ]

2.2. Învățarea supervizată
Învățarea supervizată este un tip de învățare inductivă ce pleacă de la un set de exemple
de instanțe ale problemei și formează o funcție de evaluare, denumită șablon, care să permită
clasificarea unor instanțe noi. Învățarea este supervizată în sensul că setul de exemple este dat
împreună cu clasificarea lor corectă. Aceste instanțe r ezolvate se numesc instanțe de antrenament.
Formal, setul de instanțe de antrenament este o mulțime de perechi atribut -valoare (x,f(x)) , unde x
este instanța iar f(x) clasa căreia îi aparține instanța respectivă.
Scopul învățării este construirea unei func ții de tip șablon care să clasifice corect i n-
stanțele date ca exemplu, iar pentru un x pentru care nu se cunoaște f(x) să propună o aproximare
cât mai corectă a valorii f(x). Astfel, învățarea supervizată este echivalentă cu optimizarea unei
funcții de ero are care măsoară diferența dintre răspunsurile care ar trebui să le producă sistemul și
cele pe care le produce efectiv. [12 ]
Probleme importante ale învățării nesupervizate sunt cele de clasificare, probabilistice.
Astfel, clasificarea supervizată implică gruparea datelor pe baza unor modele prestabilite, den u-
mite clase de antrenament. De obicei, acestea reprezintă o grupare de referință ce corespunde r e-
alității, folosită inițial pentru antrenarea sistemului înaintea clasifi cării propriu -zise a datelor. [1 2]
2.3. Învãțarea prin întãrire
Spre deosebire de metodele de învățare supervizată prezentate mai sus, învățarea prin
întărire se face fără ca algoritmul de învățare să compare direct șablonul obținut cu rezultatele

21
corecte pentru exemplele de antrenament. În schimb este implementată o modalitate de a
“răsplăti” sau “pedepsi” sistemul în funcție de cât de mult se apropie de rezultatul corect. Acest
feedback este singura metodă a sistemului de învățare de a se regla pentru îmbunătățirea r e-
zultatelor sale. Ac est lucru face învățarea prin încurajare mai dificilă, căci sistemul nu mai
primește informații directe despre cum și cât să se corecteze, ci doar știe dacă se apropie sau se
depărtează de rezultatul optim. De asemenea, feedback -ul poate veni doar uneori, nu neapărat la
fiecare schimbare în șablonul ipotetic, deci sistemul trebuie să aibă o modalitate de a direcționa și
impulsiona singur schimbarea pen tru îmbunătățirea șablonului. [12 ]
Concretizând, învățarea prin întărire se referă la o clasă exactă de pro bleme din învățarea
automată care admite ca un sistem să exploreze mediul, să perceapă anumite stări și să încearce
niște acțiuni. În schimbul acțiunilor efectuate, sistemul va primi o recompensă pozitivă sau neg a-
tivă. Astfel, algoritmul de învățare prin î ntărire va urmări să găsească o politică de maximizare a
recompensei pe parcursul execuției, în contextul problemei date. Spre deosebire de majoritatea
formelor de învățare în care sistemului i se spune dinainte ce acțiuni să întreprindă, în cazul
învățări i prin întărire sistemul trebuie sa descopere singur care acțiuni duc la obținerea unei re c-
ompense mai mari. Acțiunile întreprinse pot afecta nu numai recompensa obținută imediat, dar și
situația următoare, și în consecință toate recompensele viitoare. Pro gramarea sistemelor se face
prin semnale de întărire sau slabire (răsplată/pedeapsă) fără a fi nevoie să se precizeze modal i-
tatea concretă de rezolvare a sarcinii necesar a fi îndeplinită. Comportamentul adecvat se învață
prin interacțiuni de tipul încercă rilor succesive asupra m ediului înconjurător dinamic. [10 ]
O diferență majoră dintre învățarea prin întărire și învățarea de tip supervizat o r e-
prezintă faptul că primului tip îi este necesară o fază explicită de explorare a mediului în scopul
achiziționăr ii de cunoștințe. Cel de al doilea tip de învățare, cel supervizat, presupune acumularea
cunoștințelor pe baza unor exemple furnizate de către un expert sau supervizor extern și, deși r e-
prezintă unul din tipurile cele mai importante de instruire, nu este a decvată învățării din interacț i-
uni cu mediul. În probleme interactive este deseori imposibil și nepractic să se obțină exemple de
comportament adecvat și reprezentativ pentru toate situațiile posibile în care un sistem ar putea să
se găsească. Este deci ne cesară capacitatea sistemului de a î nvăța din propria experiență. [11 ]

22
În acest context intervine problema explorare versus exploatare: pentru a obține o re c-
ompensă însemnată un sistem instruit prin învățare prin întărire va prefera acțiuni care au mai fos t
încercate în trecut și care au dovedit că aduc un aport substanțial.
Totodată este necesar să încerce și noi acțiuni care s -ar putea dovedi mai productive
decât cele testate până în prezent. În consecință, dilema explorare -exploatare se rezumă la faptul
că un sistem trebuie să exploateze cunoștințele deja acumulate pentru a maximiza recompensa,
dar trebuie și să exploreze noi acțiuni care s -ar putea dovedi mai bune decât cele deja efectuate.
Sistemul trebuie să încerce o varietate de acțiuni și progresiv să le favorizeze pe cele care par a fi
mai bune. [10 ]
În continuare vor fi prezentate pe scurt fundamentele teoretice ale câtorva tehnici
folosite în cadrul învățării prin întărire:
• Q learning : este o metodă bazată pe valoarea acțiunilor. Sistemul poate al ege o
acțiune cu o valoare estimată cât mai mare, denumită și ”acțiune lacomă”.
Această metodă exploatează cunoștințele curente în scopul maximizării reco m-
pensei. Comportamentul sistemului poate fi îmbunătățit prin acțiuni de ti pul ε-
lacome, care descriu s electarea unei mici proporții ε de date care vor fi alese al e-
ator, iar restul datelor alese vor fi de tipul celor cu valoarea estimată cât mai
mare. Unele strategii din Q -learning încep cu o valoare ε mare, pentru î ncuraja r-
ea explorării, după care valoarea sa este treptat diminuată.
• Metode de tip Monte Carlo : nu presupun cunoașterea completă a a modelului
mediului. Sunt necesare însă secvențe de stări, acțiuni și recompense desprinse
din interacțiunea actuală sau simulată cu mediul.
• Metode bazate pe program area dinamică : sunt acele metode care se bazează pe
anumiți algoritmi care pot fi folosiți la calculul unor strategii optime, având dat
un obiect modelat cu procese de decizie de tip Markov. Aceste metode presupun
oferirea de recompense întârziate, ceea ce înseamnă că o recompensă substanțială
poate să apară doar la finalul unui șir de acțiuni care nu aduc decât o recompensă
imediată nesemnificativă. Astfel, sistemul va trebui să învețe care dintre acțiuni
sunt dezirabile astfel încât să poată obține o reco mpensă în viitorul apropiat.
Acest tip de metode sunt importanți din punct de vedere teoretic din cauza nec e-
sității e xistenței unui model perfect. [10 ]

23

2.4. Învãțarea nesupervizatã
Învățarea nesupervizată elimină complet necesitatea unor instanțe de antre nament, deci
și problemele legate de acestea. Scopul învățării nesupervizate nu este definit anterior ca un co n-
cept țintă, algoritmul fiind lăsat singur să identifice concepte posibile.
În general, învățarea nesupervizată presupune existența unor instanțe neclasificate, un
set de reguli euristice pentru crearea de noi instanțe și evaluarea unor concepte deduse, eventual
un model general al spațiului de cunoștințe în care se găsesc aceste instanțe. Un algoritm de
învățare nesupervizată construiește concepte pentru a clasifica instanțele, le evaluează și le de z-
voltă pe cele considerate “interesante” de regulile euristice. În general, concepte interesante sunt
considerate cele care acoperă o parte d in instanțe, dar nu pe toate. [10 ]
Învățarea nesupervizată perm ite identificarea unor concepte complet noi plecând de la
date cunoscute. Încercări de a aplica acest tip de învățare în cercetarea științifică au dus la r e-
zultate semnificative. Totuși, principalul factor ce limitează numărul și relevanța conceptelor
învățate de acest gen de algoritmi este faptul că ele nu pot învăța noi metode de a crea și evalua
concepte. Pentru a obține rezultate mai relevante, ar trebui întâi descris un set mult mai complex
de operații pentru crearea de noi concepte, precum și niște re guli euristice mai flexibile pentru
evalua aceste concepte.[11 ]
2.5. Arbori de decizie
Un arbore de decizie este una din cele mai utilizate structuri de reprezentare utilizate în
învățarea automată. Pentru o instanță specificată de un set de proprietăți, a rborele verifică an u-
mite proprietăți pentru a naviga în interiorul său și ajunge la o frunză care va fi eticheta acelei
instanțe. Fiecare nod intern al arborelui reprezintă un test făcut asupra uneia sau mai multor pr o-
prietăți ale instanței, iar ramurile d escendente din acel nod sunt identificate de posibilele r ezultate
ale acelui test. Astfel, un arbore de decizie construiește pentru o instanță o conjuncție logică ce se
verifică pentru proprietățile instanței și formează un fel de demonstrație a clasificăr ii făcute pe
baza acelor proprietăți. [12 ]
Ca și avantaje ale algoritmului, amintim faptul că, din punct de vedere computational, arborele
de deci zie este foarte eficient. De asemenea, un arbore de deci zie poate lucra cu caracteristici

24
irelevante. Unul dintre dezavantajele algoritmului este faptul ca este predispus la fenomenul de
“overfitting”.
Conceptul de “overfitting” se referă la un model care modelează prea bine datele de antrenament.
De asemenea, întâlnim fenomenul de “overfitting” atunci câ nd un model învață detaliile din dat e-
le de antrenament în măsura în care influențează negativ performanța modelului pe date noi.
Problema este că aceste concepte nu se aplică noilor date și influențează negativ capacitatea
modelelor de a generaliza. Conceptul de “underfitting” se referă la un model care nu poate mo d-
ela datele de antrenament (training set -ul) și nici nu generalizează date noi.
Construc ția unui arbore de decizie este un proces inductiv(decision tree induction). Flexibilitatea
acestei tehnici o fa ce deosebit de atractivă, mai ales datorită faptului că prezintă și avantajul unei
vizualizări sugestive ( arborele ce sintetizează clasificarea obținută ). [13]
În continuare vom prezenta un exemplu care are ca și scop înțelegerea unui arbore de decizie.
Scopul problemei este identifica rea personaje lor de film "bune" sau "rele" du pa modul î n care
arată .

Exemplu de set de date. [14]

Folosind datele de mai sus, vom construi arborele de decizie af erent problemei noastre.

25

Arborele de decizie corespun zator problemei noastre [14]

2.6. Algoritmul K -Nearest Neighbors

Acest algoritm este un algoritm de învățare supervizată bazat pe asocieri care nu necesită
o etapă de antrenare propriu -zisă. Se bazează pe învățarea prin analogie și stabilește clasa
cores punzătoare unui exemplu de testare pe baza similarității acestuia cu k exemple, cele mai
similare, din setul de date de antrenament. Cele k exemple luate în considerare vor stabili clasa
exemplului de test pe baza votului majoritar. Fiecare exemplu de antr enament este un vector în
spațiul de reprezentare al datelor și are asignat o singură etichetă (clasa, target,..). Etapa de a n-
trenare pentru algoritmul KNN constă doar în memorarea vectorilor de trăsături și a etichetelor
corespunzătoare claselor pentru ex emplele de antrenament. În faza de clasificare propriu -zisă (în
etapa de testare), la un element din setul de testare îi atribuim clasa corespunzătoare ca fiind cea
mai frecventă clasă dintre clasele celor k exemple de antrenament, cele mai apropiate de ex em-
plul de testare. Parametrul k este o constată specificată de utilizator și de obicei are o valoare
mică. Cea mai bună alegere a lui k depinde de date; în general, o valoare mare pentru k va reduce
influența zgomotului asupra clasificării, dar va face ca zonele de separare dintre clase să fie mai
puțin distincte. Clasificatorul k – Nearest Neighbors poate fi văzut ca un algoritm care atribuie la
cei mai apropiați k vecini o pondere egală cu 1/k și la restul o pondere egală cu 0. [15] [16]

Pașii algorit mului KNN :

26
1. Se stabilește valoarea lui k în raport cu numărul de exemple de antrenament pe
care le avem la dispoziție.
2. Pentru fiecare exemplu din setul de testare se stabilește clasa acestuia astfel:
3. Se calculează similaritatea dintre exemplul de testare și toate exemplele avute în
setul de antrenare. Pentru calculul similarității se pot folosi oricare dintre me t-
ricile de similaritate descrise mai jos.
4. Se iau primele k exemple dintre cele de antrenare care sunt cele mai similare cu
exemplul curent de tes tare și pe baza lor se stabilește clasa exemplului de testare
folosind votul majoritar.
5. Se verifică dacă clasificarea este sau nu corectă pe baza informaților deținute în
fișierul de testare.
6. Atâta timp cât mai sunt exemple de te stare se reia de la pasul 3.
7. Se evaluează calitatea clasificării pentru valoarea lui k curenta, folosind metricile
externe de evaluare a algoritmilor de învățare cum ar fi acuratețea de clasificare,
precizia, recall, true negative rate etc…). [16]

Clasificatorul KNN. [15]

Metod e de calcul a similarității.

27
Există mai multe metode de calcul a similarității între doi vectori. Fiecare metodă se alege în
funcție de domeniu aplicabilității metodei respective. Printre cele mai cunoscute și folosite
metode sunt calculul distanței Euclid iene sau a cosinusului unghiului dintre doi vectori.

În aceasta lucrare de dizertație voi prezenta trei metode:

1. Calculul similarității folosind distanta Euclidiană:

unde n reprezintă nr. de trăsături caracteristice iar x și x' reprezintă cei doi vectori pentru care se
calculează distanța .

2. Calculul similarității folosind distanta Manhattan:

3. Calculul similarității folosind cosinusul unghiului între 2 vectori (atenție pentru ca această
metrică să întoarcă rezultate corecte vectori trebuie n ormalizați):

2.7. Mașinile cu suport vectorial (SVM)

Mașinile cu vectori suport (engl. “Support Vector Machines”, SVM) reprezintă o metodă de
învățare de nouă generație (Shawe -Taylor & Cristianini, 2000), cu o fundamentare matematică
riguroasă, bazată pe conceptul de maximizare a „marginii” care separă instanțele din două clase
diferite, iar maximizarea este rezolvată analitic, nu empiric. Datorită acestei fundamentări,
mașinile cu vectori suport au demonstrat performanțe foarte bune pentru probleme rea le cum ar fi
clasificarea textelor, recunoașterea caracterelor scrise de mână, clasificarea imaginilor etc. În
general, sunt considerate unele dintre cele mai bune metode de clasi ficare cunoscute la ora act u-
ală. [17]
Să considerăm mai întâi o problemă de c lasificare binară cu clase separabile linear.

28

Figura 2.1 – Clasificare binar ă [17]
Un perceptron cu un singur strat poate împărți planul cu o dreaptă în două suprafețe și prin u r-
mare poate rezolva corect această problemă. În procesul de antrenare al perc eptronului se
pornește însă de la o configurație aleatorie a ponderilor și pragului. În funcție de valorile rezultate
prin antrenare, dreapta separatoare poate avea parametri diferiț i, după cum se arată în figura 2 .2.
Toate aceste drepte rezolvă problema d e clasificare considerată.

Figura 2.2 – Drepte separatoare [17]

29
Având mai multe opțiuni la dispoziție, se pune problema care dintre acestea este cea mai bună,
criteriul luat în calcul fiind capacitatea de generalizare a modelului, adică posibilitatea ace stuia de
a clasifica în mod corect instanțe noi. Odată găsită o dreaptă de separare între instanțele de a n-
trenare, putem spune că este destul de probabil ca o nouă instanță (1, 2) să aparțină clasei
pătratelor iar una (7, 7) să aparțină clasei cercurilor. Probleme vor apărea în zona de demarcație
dintre cele două clase. Pentru o instanță (3, 4), folosind două modele diferite, vom avea rezultate
diferite, dup ă cum se poate vedea în figura 2 .3: o dreaptă o clasifică drept cerc iar cealaltă dreaptă
– drept păt rat.

Figura 2.3 – Rezultate diferite [17]
Una din ideile de bază ale mașinilor cu vectori suport este că modelul care generalizează cel mai
bine este acela care desparte cel mai mult clasele, adică cel care asigură marginea cea mai mare
de demarcație în tre clase. Marginea este distanța dintre dreptele paralele cu dreapta de separare
care ating cel puțin una din instanțele fiecărei clase. Pent ru cele două modele din figura 2 .3, ma r-
ginea dată de dreapta 1 este cea din figura 2 .4a iar marginea dată de dreap ta 2 este cea din figura
2.4b.

30

Figura 2.4a – Margine 1 [17]

Figura 2.4b – Margine 2 [17]
Se vede că marginea determinată de primul model este mai mare, prin urmare acesta este mai bun
decât celălalt. În cazul de față, problema de clasificare are 2 atr ibute și suprafața de separare este
o dreaptă care împarte planul în 2 semiplane. Dacă problema ar fi avut 3 atribute, suprafața de
separare ar fi fost un plan care împarte în două spațiul tridimensional. În general, hiperspațiul nD
corespunzător unei prob leme cu n atribute este împărțit în două de către un hiperplan (n – 1)D.

31
Există multe situații în care datele nu sunt separabile linear, așa cum este și in cazul nostru: clas-
ificarea electrocardiogramelor folosind mai mul ți coeficienți Mel , acești coeficie nți fiind cele
n atribute care corespund unui hiperplan (n -1)D.
O idee ingenioasă, pentru a putea aplica totuși separarea liniară, este transformarea datelor din
spațiul inițial al problemei, numit spațiul atributelor, într -un spațiu cu (mult) mai multe di mens i-
uni, numit spațiul trăsăturilor, în care clasele devin separabile liniar. Transformarea se face cu
ajutorul unei funcții care realizează transformarea în trăsături (engl. “feature mapping”), dup ă
cum se poate vedea în figura 2.5 . Aceasta tehnica poart a numele si de “kernel trick” care r e-
prezintă o metodă care utilizează un clasificator liniar pentru a rezolva o problemă non -liniară.
Există mai multe clase de funcții care pot servi drept nuclee pentru transformarea datelor. N u-
cleele folosite în mod uzua l pentru mașinile cu vectori suport sunt:
 Nucleul liniar
 Nucleul polinomial
 Nucleul Gaussian sau cu funcții de bază radial (RBF)
 Nucleul sigmoid

Figura 2.5 – Feature Mapping [17]

32

Printre cele mai importante avantaje ale folosirii mașinilor cu suport vec torial(SVM) enumerăm
următoarele:
 SVM -urile sunt foarte bune atunci când nu avem nici o idee despre date.
 Funcționează bine chiar și cu date nestructurate și semi structurate precum textul, imagi n-
ile.
 Funcțiile Kernel este o forță reală a SVM. Cu o funcți e corespunzătoare a kernelului,
putem rezolva orice problemă complexă. [18]
Unul din dezavantajele folosirii mașinilor cu suport vectorial constă în alegerea unei funcții Ke r-
nel potrivite. De asemenea, pentru seturile mari de date timpul de antrenament poa te fi costisitor.
[13]
2.8. Rețele neuronale
Domeniul rețelelor neuronale este unul foarte activ la ora actuală, lucru oarecum surprinzător,
ținând cont că unele idei au peste 60 de ani. Doar în ultimii ani, acest domeniu a devenit cu
adevărat atractiv, da torită plăcilor GPU care au permis o viteză de antrenare mult mai mare. Reț e-
lele neuronale fac parte din spectrul larg al inteligenței artificiale, dar după cum veți vedea, o
bună parte din conceptele prezentate aici se regăsesc și la alte clase de algorit mi.
În biologie, neuronul este o celulă adaptată la recepționarea și transmiterea informației. Un număr
suficient de mare de astfel de celule pot crea structuri de o complexitate deosebită, exemplul pe r-
tinent fiind creierul nostru. De aici a pornit ideea r ețelelor neuronale artificiale(ANN). Deși sunt
mult mai simple, ele oferă o serie de rezultate remarcabile, comparabile în unele cazuri cu cele
obținute de oameni. [19]

Figura 2.6 – Modelul McCulloch & Pits [19]

33
Warren McCulloch și Walter Pits au creat în anii ’40 prima abstractizare al acestui mecanism
complex. La început, ei au privit acest neuron ca o funcție matematică. Deși este o abordare
foarte simplistă, măcar oferă o primă abstractizare matematică a neuronului. Astfel:
 Sinapsele pe care un neur on le făcea prin dendrite cu alți neuroni au devenit INTRĂRI
 Corpul neuronului a devenit un SUMATOR + o FUNCȚIE DE ACTIVARE
 Axonul a devenit IEȘIREA
Caracteristicile unei re țele neuronale împrumutate de la creierul uman sunt : capacitatea de a
învăța(învăța rea din exemple, antrenare cu seturi mari de date), capacitatea de a generaliza(pot da
răspunsuri corecte pentru intrări ușor diferite de cele care au fost antrenate), capacitatea de a sin-
tetiza(pot da răspunsuri corecte pentru intrăr i afectate de zgomot/i mprecise / parțiale)
Structural, atunci când avem o serie neuroni interconectați putem vorbi de o rețea neuronală. Este
o definiție inspirată din biologie, din analogia cu creierul uman unde neuronii, deși pot avea
funcții foarte specifice, aparent formeaz ă un tot unitar.
Funcțional, am putea defini o rețea neuronală, ca acel sistem format dintr -un număr variabil
(adesea mare) de elemente interconectate (modelul matematic al neuronului) ce conlucrează
pentru rezolvarea unei probleme. Poate cea mai important ă trăsătură a acestor rețele este că pot fi
îmbunătățite prin învățare. Mai formal, rețeaua poate să își modifice o ipoteză inițială într -o ma-
nieră care să îi permită să explice mai bine caracterul unor date. Nu vreau să intru încă în detalii,
dar ca și în viața reală, dacă o ipoteză explică foarte bine un fenomen nu înseamnă neapărat că ea
este și adevărată. Modelul heliocentric explica multe, dar acum știm ce departe era de adevă r.
[19]
La prima vedere, uitându -ne la structura simplă a neuronului lui McCu lloch, am putea să credem
că aplicațiile ce pot fi tratate cu aceste rețele ori nu sunt multe, ori sunt foarte simple, dar ne -am
înșela în ambele situații. Printre cele mai importante aplicații, se numără:
 Recunoașterea scrisului de mână;
 Google folosește un algoritm bazat pe rețele neuronale pentru returnarea unor imagini pe
baza unor cuvinte date ca intrare la căutare;

34
 Microsoft a dezvoltat un sistem de rețele neuronale care ajută la convertitrea limbii en g-
leze în chineză;
 Largă aplicabilitate în medicină , afaceri, matematică, știință, business etc;
 O rețea neuronală poate fi învățată pe baza unui volum mare de date și îmbunătățită iter a-
tiv pentru realizarea altor funcții. (Folosirea algoritmilor bazați pe rețele neuronale în d o-
meniul BigData) [19]
Arhitec tura rețelelor neuro nale poate fi vizualizată î n urmatoarea diagram ă:

Figura 2.7 – Arhitectura re țelelor neuronale [19]
Plecând de la ideea că un neuron poate fi reprezentat de un sumator și o funcție, atunci o rețea
neuronală va deveni o mulțime de func ții interconectate. Este important totuși să definim tipul de
funcții folosite.
Aceste funcții reprezintă filtrele prin care va trece informația. Vrem totuși un set de funcții cu
proprietăți specifice, fiindcă de ele depinde cum trebuie să modificăm ponder ile, modificarea
acestora reprezentând învățarea rețelei neuronale.

35

Figura 2.8 – Func ții de activare [19]
Algoritmul Backpropagation învață (găsește) valorile optime ale ponderilor interconexiunilor di n-
tre unitățile de învățare dintr -o rețea pe mai mult e nivele, cu un număr fixă de unități de învățare.
Folosește panta gradientului pentru a încerca să minimizeze eroarea dintre valoarea ieșirii rețelei
și valoarea care se dorește a fi obținută pentru intrarea respectivă. Problema învățării în această
rețea este de a căuta valorile optime ale ponderilor în spațiul mare al ipotezelor dat de toate
unitățile de învățare din rețea. [20]

36
Algoritmul Backpropagation :
Fiecare exemplu de antrenament este o pereche de forma (X, Y) unde X este un vector de valori
de in trare și Y este un vector de valori Target (valori dorite) ale ieșirii rețelei.
1. Se creează o rețea feed -forward cu “n_in” intrări (în funcție de dimensiunea vectorilor
de intrare), “n_hidden ” unități ascunse și un număr de “n_out” ieșiri (în funcție de di-
mensiunea vectorului Target). Numărul de unități de pe stratul ascuns se alege în funcție
de complexitatea datelor care trebuie învățate.
2. Se inițializează toate ponderile rețelei cu valori aleatoare mici.
3. Luăm pe rând câte un exemplu de antrenam ent.
4. Se propagă semnalul „Forward” prin rețea. Se calculează pe rând ieșirile unităților de
pe fiecare strat. Ieșirile unităților de pe primul strat (stratul de intrare) sunt egale cu i n-
trările acestora.
5. Se calculează eroarea produsă de rețea pe st ratul de ieșire .
6. Se propagă semnalul „Backward” prin rețea. Se propagă înapoi eroarea prin rețea astfel
încât rețeaua să minimizeze eroarea pentru acel exemplu de antrenament. Astfel pentru
fiecare pondere a rețelei se calculează valoarea cu care trebui e modificată ponderea r e-
spectivă astfel încât eroarea să fie minimă. Se calculează ponderile pentru unitățile de pe
stratul de ieșire apoi de pe stratul ascuns și la final cele de pe stratul de intrare (daca e c a-
zul).
7. Se actualizează ponderile corespun zător modului de î nvățare.
8. Dacă mai sunt exemple de antrenament se trece la următorul exemplu și se sare la pasul
patru.
9. Pe parcursul unei epoci (parcurgerea tuturor exemplelor de antrenament) se însumează
erorile obținute de rețea pentru fiecare ex emplu de antrenament.
10. Dacă eroarea de pe nivelul de ieșire, după parcurgerea tuturor exemplelor, este mai
mică decât un prag prestabilit (aproape de 0) sau dacă numărul maxim de iterații a fost
atins se termină algoritmul dacă nu se reia algoritmul po rnind de la pasul 3. [20]

37
Principalele avantajele folosirii re țelelor neuronale const au în faptul ca pot rezolva sarcini sau
problema complexe(pot modela funcții liniare/neliniare) și sunt capabile de generalizare. Unul
dintre dezavantajele unei rețele neu ronale este reprezentat de problema scalabilității deoarece
numărul mare de conexiuni reduce viteza de procesare .

2.9. Rețele neuronale recurente

Rețeaua neuronală de tip Perceptron Multi -Strat (eng. Multi -Layer Perceptron sau MLP)
este una dintre cele mai importante realizări în domeniul calculului neuronal, fiind aplicată cu
succes pentru o gamă largă de probleme. Rețeaua de tip MLP este formată din unul sau mai multe
straturi legate în serie, sub forma unei cascade. Fiecare strat conține unul sau mai multe elemente
de prelucrare a informației numite perceptroni. Rețeaua neuronală de tip MLP se spune că reali z-
ează o transformare statică a semnalelor aplicate la intrarea sa dacă transformarea nu este d e-
pendentă de timp. În acest caz rețeaua se numește re țea neuronală de tip MLP statică. Există și
rețele ne uronale de tip MLP cu structură dinamică, acestea având incluse în structura lor elemente
de me morare sau conexiuni recursive. Cea mai importantă caracteristică a rețelelor neuronale cu
structură dinamic ă este aceea că aceste rețele au memorie. În felul acesta ele devin receptive la
mărimi de intrare variabile în timp. Rețelele neuronale cu structură dinamică au fost dezvoltate
din dorința de a realiza o aproximare cât mai bună a unor funcții variabile în timp sau de a mo d-
ela cât mai bine sisteme dinamice neliniare. O categorie largă de rețele care folosesc conceptele
MLP sunt rețelele neuronale recurente.

Rețelele neuronale recurente (RNN) sunt special proiectate pentru clasificarea de date
care formeaz ă secvențe. Diferența esențială dintre rețelele de acest tip și rețelele neuronale clasice
o constituie straturile recurente, unde legăturile dintre neuroni sunt ciclice. RNN se utilizează în
special pentru prelucrarea de secvențe de text și imagini, unde fiecare element al secvenței de c u-
vinte/caractere/imagini poate depinde de contextul creat de elementele anterioare ale secvenței.
RNN primesc la intrare o serie de elemente ce aparțin unei secvențe și generează următorul el e-
ment din secvență, funcție de a rhitectura rețelei, de datele de antrenare și de valorile parametrilor
rezultate în urma antrenării.

38
O rețea neuronală recurentă este orice rețea ai cărei neuroni își trimit semnale de fee d-
back. Deoarece feedback -ul este omniprezent in creier, această sar cină ar putea fi principalul co n-
tributor la cea mai mare parte din dinamica lui. Caracteristica fundamentală a unei rețele ne u-
ronale recurente este aceea că are cel puțin o subrețea MLP dinamică în componența ei, astfel
încât activarea nu conduce doar în c ascadă fluxul de informație, de la stratul de intrare până la
stratul de ieșire, ci poate forma anumite bucle în interiorul său. Aceasta permite rețelor să pr o-
ceseze relații temporale si chiar să invețe secvente – deci, teoretic, reprezintă un candidat bun
pentru a învăța structuri muzicale. Însă performanța ei depinde de modul în care se poate face
training -ul.

Figura 2.9 – O ilustrare simplă a unei rețele neuronale recurente, cu două legături de feed-back . [21]

Propagarea înapoi a erorii (eng. ba ckpropagation) este o metodă comună de training
pentru învățarea supervizată în rețelele neuronale artificiale. Rețeaua învață de la mai multe e x-
emple, formate din perechi de date de intrare și datele de ieșire dorite, analog modului în care un
copil învaț ă să identifice un câine arătându -i-se exemple de câini.

Algoritmul propagării înapoi a erorii se poate împărți în două etape: propagarea și modif i-
carea greutăților. Prima implică următorii pași: propagare înainte a input -urilor prin rețeaua ne u-
ronală, cu scopul de a genera date de ieșire, și propagarea înapoi a erorilor în rețea, folosind dat e-
le de ieșire țintă pentru calculul lor. În funcție de acestea, se efectuează modificări ale greutăților
în rețea. Se repetă cei doi pași căutând să se minimizeze ero area totală.

Propagarea înapoi folosește un algoritm de optimizare numit gradient descent. Ceea ce
căutăm în perioada de antrenare, de fapt, este o configurație optimă a greutăților prin care eroarea
totală obținută să fie minimă – mai exact, căutăm minim ul global al unei funcții. Pentru a găsi un

39
minim local al funcției cu gradient descent, facem un număr de pași în rețea proporționali cu
valoarea negativului gradientului funcției în punctul curent. În cazul nostru, gradientul poate fi
considerat sinonim cu derivata sau rata de schimbare a funcției, arătând direcția în care crește cel
mai rapid. Orice pas într -o direcție descendentă ne va duce mai aproape de minimul global. S u-
prafețele de eroare sunt însă de obicei complexe, iar în cazul în care există num eroase minime
locale, algoritmul se poate bloca în unul dintre acestea. Progresul, în acest caz, este posibil numai
prin a urca mai sus înainte de a coborî la minimul global. O modalitate de a scăpa de un minim
local este învățarea on -line, pentru care gre utățile sunt modificate imediat după vizitarea nodului
adiacent. O altă tehnică ce poate ajuta rețeaua să nu se blocheze în minime locale este utilizarea
termenului momentum. Când gradientul schimbă des direcția, momentum va netezi variațiile.
Acesta adaug ă pur și simplu o fracțiune din valoarea ultimei actualizări a greutatății la cea
curentă. Când gradientul păstrează aceeași direcție, acesta va crește dimens iunea pașilor făcuți
spre minimul global. Este de multe ori este necesar să se reducă parametrul d e training pentru rata
de învățare atunci când valoarea momentum -ului este mare (aproape 1), altfel pașii vor deveni
mult prea mari și se poate trece ușor peste minimul global.

O problemă, însă, care apare în cazul aplicării pe rețele recurente simple met ode de a n-
trenare bazate pe gradienți este problema ”gradientului dispărut”: în astfel de rețele, fluxul de
erori fie scade rapid fie crește exponențial, făcându -le incapabile să stăpânească dependențe pe
termen lung. În mod clar, aceasta le face imposibil de antrenat pentru a improviza, deoarece d e-
pendențele pe termen lung sunt absolut definitorii pentru muzică [8]. Există, însă, un model r e-
cursiv care rezolvă problema gradientului dispărut: rețelele Long -Short Term Memory .

2.10. Rețele LSTM(Long -Short Ter m Memory)

Rețele LSTM sunt formate din mai multe celule LSTM, conectate între ele. Fiecare celulă are
următoarea arhitectură: la baza ei stă o unitate liniară, sau neuron, care în fiecare moment î n-
sumează toate informațiile pe care le primește de la alți neuroni cu care este conectată. Pentru a
putea păstra o informație un timp mai îndelungat, este necesară implementarea unui circuit care
să simuleze o celulă de memorie. Astfel, unitatea de bază este legată de alte unități: unitatea fo r-
get gate (atunci câ nd are valoarea 0 celula de bază își menține starea), unitatea write gate (atunci

40
când are valoarea 1, restul rețelei poate modifica valoarea din celula de bază) și unitatea read gate
(atunci când are valoarea 1, restul rețelei poate accesa informația stoc ată în celula de bază). [22]

Figura 2.10 – O ilustrare a circuitului imp lementat pentru celulele LSTM [ 23]

Într-o astfel de rețea, neuronii pot reține pasiv o valoare, fără a afecta restul rețelei, și de as e-
menea își pot proteja informația de activitatea externă atunci când este cazul. În acest fel, o rețea
LSTM poate procesa dependențe, lucru imposibil pentru o simplă rețea recurentă.

2.11. Extragerea coeficienților MEL

Proiectul urmarește realizarea unui sistem inteligent care să ajute c ardiologii la determinarea e x-
acta a tipului de boală cardiacă pe baza analizei electrocardiogramelor (ECG). Acestea fiind
spuse, se urmărește catalogarea pacientului într -una din cele treisprezece categorii: Atrial Fibril a-
tion, Atrial flutter, Atrial prema ture beats, Bigeminy, Heart left bundle branch block, Heart right
bundle branch block, Normal sinus rhythm, Premature ventricular contractions, Supraventricular
Tachyarrhythmias, Trigeminy, Ventricular flutter, Ventricular tachycardia, Wolff Parkinson
Whit e Syndrome.

Pentru real izarea obiectivului se folosesc algoritmi i de clasificare prezentați mai sus : Support
Vector Machines (SVM), Decision Tree, Reccurent Neural Networks, KNN în combinație cu a l-

41
goritmi avansați de procesare a semnalului utilizând coefi cienții MEL , mai exact MFCC – Mel
frequency Cepstral Coefficient . Coeficienții MEL sunt obținuți cu ajutorul transformărilor Four i-
er. Avantajul constă în faptul că toată informația unei electrocardiograme(ECG) este păstrată într-
un număr prestabilit de coe ficienți .

Obținerea coeficienților presupune următoarele procesări :
 Transformata Fourier : se aplică transformata Fourier rapidă (FFT) pentru a obține 𝑁/2
valori spectrale complexe egal distanțate de la 0 la 𝐹𝑠/2 . Se ignoră informația despre fază
deoa rece aceasta diferă foarte mult de la cadru la cadru și se păstrează doar amplitudinea
spectrului. [24]
 Filtrarea prin bancul de filtre : cele 𝑁/2 amplitudini obținute sunt convertite printr -un
banc de filtre de ordin 𝐾 pentru a reduce dimensiunea și pentr u a reprezenta mai eficient
coeficienții, de asemenea filtrarea se poate face logaritmic în loc de linear din motive pe r-
ceptuale. [24] Bancul de filtre este astfel proiectat încât să diferențieze mai bine
frecvențele joase și să grupeze cât mai multe frecve nțe înalte, centrele filtrelor triunghi u-
lare sunt distanțate conform formulei:

ieșirea fiecărui filtru este notată cu 𝑆𝑘, 𝑘 = 1, 2, … , 𝐾 , iar datorită faptului că sistemul
auditiv are caracter logaritmic se logaritmează această ieșire, în plus logar itmarea are și
rolul de a transforma distorsiunile multiplicative, provocate de filtrarea în frecvență, în
efecte aditive ce pot fi compensate mai ușor.
 Analiza cepstrală – pasul final este de a converti cele 𝐾 valori spectrale de la ieșirea fi l-
trului înt r-un numar predefinit L de coeficienți cepstrali folosind transformata cosinus
discret ă (DCT) .[24]

În această secțiune am prezentat modul de extragere a coeficienților Mel cepstrali cu ajutorul
cărora se proceseaza semnalele ECG în vederea utilizării alg oritmilor de învățare automată.
Extragerea coeficienților MEL are aplicații în domeniul procesării semnalelor audio și vocale,

42
însă in această lucrare de dizertație am incercat să aplic acest mod de extragere al coeficienților
MEL și în contextul electroca rdiogramelor(ECG).

43
3. Detalii de implementare

3.1. Arhitectura aplica ției

Arhitectura aplicației constă în dezvoltarea unei soluții , numită „DeepHeart ”, divizată în trei mari
proiecte. Proiectul central(nucleul), dezvoltat cu ajutor ul tehnologiilor Python , se ocupă cu
procesarea setului de date, crearea de noi analize, crearea algoritmilor și a tehnicilor de învățare
automată în cadrul unei analize, execuția algoritmului pe un set nou de date pentru a obține
predicțiile aferente, cre area de grafice și ploturi.

Al doilea proiect este reprezentat de un server Node.js care eprezintă o platformă de programare
la baza căreia se află limbajul JavaScript (ECMA Script) . JavaScript este popular datorită
aplicării acestuia în crearea frontend -ului. Această platformă este realizată în baza
motorului Chrome V8 , care permite compilarea codului JavaScript în cod mașina, în timp
real (JIT) . Această oferă posibilitatea de a largi domeniul de aplicare a JavaScript de la crearea
frontend -ului pentru we b la domeniu de uz general. Nodejs permite interacționarea la nivel de jos
cu diferite dispozitive datorită interfeței de programare (API) scrisă în C++. De asemeni
nucleul Nodejs perm ite conectarea diferitor alte module create în multe alte limbaje de
programare gen Python , cum este în cazul nostru.

Proiectul server expune niște Endpoint -uri sau API -uri în ve derea procesării datelor sau rulării
algoritmilor. În altă ordine a ideilor, cele mai multe metode ale serverului execută scrip turi
Python prin creare de procese utilizând pachetul “child_process”.

Cel de -al treilea proiect este reprezentat de o aplica ție Angular, prin intermediul căreia se
realizează cereri HTTP către metodele ENDPOINT ale serverului Nodejs . Aplicația expune un
meniu în cadru căruia putem crea o analiză utilizând un număr N de coeficienți MEL. Odată
creată o analiză, putem rula diferiți a lgoritmi de învățare automată pentru a realiza o comparație
privind acuratețea obținută. De asemenea, aplicația pune la dispoziție un control cu ajutorul
căruia putem face predicție pe mai multe fișiere folosind cei mai buni algoritmi(SVM și rețelele
neuro nale recurente).

44
3.2. Procesarea datelor

Setul de date este compus din treisprezece directoare, reprezentând cele treisprezece categorii de
boli cardiace, fiecare director conținând fișiere binare MATLAB care conțin informații despre
semnale ale electroca rdiogramelor.

Pasul de procesarea datelor și a formării unei noi analize implică următoarele operații : pentru
fiecare categorie de boala se extrag datele din fisierele binare apoi se aplica un filtru cepstral
MEL în vederea obținerii unui nu măr de coefi cienți prestabiliți pentru fiecare electrocardiograma;
coeficienții aferenți fiecărei electrocardiograme sunt extrași cu ajutorul librăriei “librosa” și sunt
stocați într -un arra y numpy; odat ă procesate d atele, acestea sunt normalizate și salvate într -un
„dataframe ” apoi într-un fișier CSV numit „ecg_data.csv”. De asemenea, este creat un nou
director corespunzător noii analize create.
Procesarea datelor, respectiv crearea unei noi analize pot fi vizualizate în urmatorul script.

class DataProcessor ():
def __init__ (self):
self.db_context = DbContext()

def create_standard_scaler (self):
return StandardScaler()

def extract_data (self, dataset_folder , number_of_coefficients ):
# function to load files and extract features
disease_type_folders = [disease[ 0] for disease in
os.walk(dataset_folder)][ 1:]
data = []

45

labels = []
for index, disease in enumerate (disease_type_folders):
file_names = glob.glob(os.path.join(disease, '*.mat'))
print(disease + ', class: ' +
AppConstants.Heart_Diseases[ str(index)])
for filename in tqdm(file_names):

#read matlab file
mat = scipy.io.loadmat(filename)[ 'val'].tolist()[ 0]

#apply Mel -frequency cepstrum
mfcc = np.mean(librosa.feature.mfcc( y = np.array(mat,
dtype=float), n_mfcc = number_of_coeffic ients).T, axis = 0)
data.append(mfcc)
labels.append(index)
return data, labels

def processing_data (self, dataset_folder , number_of_coeffs ):

#create scaler
scaler = self.create_standard_scaler()

#get input_data and output_data
input_data, output_data = self.extract_data(dataset_folder,
number_of_coeffs)

input_data = np.array(input_data)
output_data = np.array(output_data )

#feature scaling
input_data = scaler.fit_transform(input_data)

return input_data, output_data, scaler

def run_processing (self, insert_id , analysis_name , coeffs):
#read data
input_data, output_data, scaler =
self.processing_data( "../../ecg/dataset/training/" , coeffs)
data_proce ssed = np.concatenate((input_data, output_data[:, None]), axis
= 1)
data_frame = pd.DataFrame(data_processed, columns = ['coef_' + str(coef)
for coef in range(coeffs)] + [ 'disease' ])
data_frame[[ 'disease' ]] = data_frame[[ 'disease' ]].astype( int)
folder_to_save = os.path.join( '../../ecg/analysis' , analysis_name)

46

if not os.path.exists(folder_to_save):
os.makedirs(folder_to_save)

os.makedirs(os.path.join(folder_to_save, 'graphics' ))
os.makedirs(os.path.join(folder_to_save, 'saved_model' ))

destination = os.path.join(folder_to_save, 'ecg_data.csv' )
data_frame.to_csv(destination, index=False)

#save scaler
folder_to_save = os.path.join( '../../ecg/analysis' , analysis_name, 'scaler.save' )
joblib.dump(scaler, folder_to_save)

3.3. Algoritmi de clasificare

În cadrul unei analize putem folosi diferiți algoritmi de clasificare pentru a procesa datele din
fisierul “ecg_ data.csv”. Cu alte cuvinte , fiecare algoritm de clasificare va “importa” fisierul
“ecg_data.csv” unde se g ăsesc datele normalizate și procesate utiliând modul de extragere al
coeficienților MEL. Pentru dezvoltarea algoritmilor de învățare automată am folos it librăria
Skicit -learn împreună cu Keras și Tensorflow în cazul rețelelor neuronale recurente. Pentru
fiecare algoritm din cadrul aplicației am folosit tehnica „cross -validation ”. “Cross -validation”
este procesul de instruire a clasificatorilor utilizând un set de date și testarea acestuia folosind un
set diferit. Această metodă este folosită pentru a estima abilitățile modelelor de învățare
automată. Această procedură implica “împărțirea ” setului de date în K grupuri sau subseturi unde
se folosesc K-1 grupuri pentru antrenarea algoritmului iar un set se foloseste pentru validare sau
testare. Acest proces se repetă de K ori.

Abordarea algoritmului de “cross -validation” este urm ătoarea :
1. Se aplică tehnica de “shuffle” asupra setului de date într-un mod a leatoriu.
2. Se “ împarte ” setul de date în K grupuri.
3. Pentru fiecare grup unic:
1. Grupul este considerat ca și set de test, iar grupurile rămase ca și set de antrenament.
2. Seturile de antrenament și de test sunt folosite pentru antrenarea algoritmu lui.
3. Se reține scorul obținut
4.Se sumarizează performanțele algoritmului utilizând scorurile obținute.

47

Figura 2.11 – Cross Validation [25]

Pentru a realiza tehnica de “cross -validation” se importă clasa GridSearchCV . În continuare sunt
prezentați a lgoritmii folosiți în aplicație .

Decision Tree
Pentru dezvoltarea clasificatorului am folosit clasa DecisionTreeClassifier (Sklearn) ca estimator
iar proprietatea param_grid este reprezentat de un dicționar care conține valorile pentru hiper
parametrul (hyperparameter) max_depth .
class Decision_Tree_Classifier (AbstractClassifier ):

def __init__ (self):
self.classifier = GridSearchCV(DecisionTreeClassifier(),
param_grid={'max_depth' : np.arange( 1, 20)},
cv=10,
verbose = 1,
n_jobs=-1)

def run(self, input_data , output_data ):

#run decision tree classifier
self.classifier.fit(input_data, output_data)

def get_score (self):
return self.classifier.best_score_

48
K-Nearest Neighbors (KNN)
Pentru dezvoltarea clasificatorului am folosit clasa KNeighborsClassifier (Sklearn) ca estimator
iar proprietatea param_grid este reprezentat de un dicționar care conți ne valorile pentru hiper
parametrii (hyperparameter) n_neighbors, weights și metric .
class KNN_Classifier (AbstractClassifier ):

def __init__ (self):
self.classif ier = GridSearchCV(KNeighborsClassifier() ,
param_grid ={'n_neighbors' : np.arange( 1,20),
'weights' : ['uniform' , 'distance' ],
'metric' : ['euclidean' , 'manhattan' ]},
cv=10,
verbose = 1,
n_jobs = -1)

def run(self, input_data , output_data ):

#run knn classifier
self.classifier.fit(input_data, output_data)

def get_score (self):
return self.classifier.best_score_

Support Vector Machines (SVM)
Pentru dezvoltarea clasificatorului am folosit clasa SVC(Sklearn) ca estimator iar proprietatea
param_gr id este reprezentat de un dicționar care conține valorile pentru hiper parametrii
(hyperparameter s) C(parametru de penalizare sau cost ) și gamma (coeficient pentru nucleu) .
class SVM_Classifier (AbstractClassifier ):

def __init__ (self):
Cs = [0.001, 0.01, 0.1, 1, 10]
gammas = [ 0.001, 0.01, 0.1, 1]
param_grid = { 'C': Cs, 'gamma' : gammas}
self.classifier = GridSearchCV(
SVC(),
param_grid =param_grid,
cv=10,verbose = 1, n_jobs=-1)

49
Random Forest
Random Forest este una dintre cel e mai bune metode de clasificare “clasice”. Metoda se bazeaz ă
pe votul a M arbori aleatorii apoi se generează M mulțimi de antrenare. In procesul de învățare
se antrenează câte un arbore aleatoriu pentru fiecare mulțime. Pentru o nouă instanță de test,
fiecare arbore dă un vot privind apartenența instanței la o clasă, iar clasa cu cele mai multe
răspunsuri reflectă rezultatul final. Pentru dezvoltarea clasificatorului am folosit clasa Rando m-
ForestClassifier (Sklearn) ca estimator iar proprietatea param_grid este reprezentat de un
dicționar care conține valorile pentru hiper parametr ul (hyperparameter) max_depth .
class Random_Forest_Classifier (AbstractClassifier ):

def __init__ (self):
self.classifier = GridSearchCV(RandomForestClassifier(),
param_grid ={
'max_depth' : np.arange( 1, 30)
}, cv=10,verbose = 1, n_jobs=10)

def run(self, input_data , output_data ):

#using random forest classifier
self.classifier.fit(input_data, output_data)

def get_score (self):
return self.classifier.best_score_

În continuare voi prezenta arhitectura rețelei neuronale recurente folosită în cadrul aplicației.
class RNN_Classifier (AbstractClassifier ):

def __init__ (self):
self.classifier = NN_Classifier()

def run(self, X_train, X_test, y_train, y_test):
#using rnn classifier
history = self.classifier.run_classifier(X_train, X_test, y_train,
y_test, X_train.shape[ 1])
return history

def run_cross_validation (self, input_data , output_data ):
scores = self.classifier.run_ cross_validation(input_data, output_data)
return np.mean(scores)

50

def get_score (self, X_test, y_test):
return self.classifier.classifier.evaluate(X_test, y_test)

class NN_Classifier (object):

def __init__ (self):
self.classifier = None

def __deepcopy__ (self, args):
return NN_Classifier()

def build_classifier (self, input_shape ):

#Initalizing the ANN + RNN
classifier = Sequential()
classifier.add(LSTM(
input_shape =(input_shape, 1),
units = 64,
return_sequences =True))
classifier.add(Dropout( 0.2))
classifier.add(LSTM(
units = 64,
return_sequences = False))

#Adding the input layer and the first hidden layer
classifier.add(Dense( units = 64, activation = 'relu'))

#Adding hidden layers
classifier.add(Dense( units = 64, activation = 'relu'))
classifier.add(Dropout( 0.2))
classifier.add(Dense( units = 128, activation = 'relu'))
classifier.add(Dense( units = 128, activation = 'relu'))
classifier.add(Dense( units = 128, activation = 'relu'))
classifier.add(Dense( units = 128, activation = 'relu'))
#Adding the output layer
classifier.add(Dense( units = 13, activation = 'softmax'))

#Compile the ANN
classifier.compile( optimizer = Adam(), loss = 'categorical_crossentropy' ,
metrics = ['accuracy' ])
return classifier

51

def run_classifier (self, X_train, X_test, y_train, y_test, input_shape ):

#run classifier
self.classifier = self.build_classifier(input_shape)
history = self.classifier.fit(X_train, y_train,
validation_data =(X_test, y_test), batch_size = 64, epochs = 200)
return history

def run_cross_validation (self, input_data , output_data ):
classifier = KerasClassifier(
build_fn = self.build_classifier,
input_shape = input_data.shape[ 1],
batch_size = 64,
epochs = 200)
kFold = StratifiedKFold( n_splits = 10, shuffle=True)
cv_accuracies = cross_val_score(
estimator = classifier,
X = input_data,
y = output_data,
cv = kFold,
scoring="accuracy" )
return cv_accuracies

def save_model (self, json_filename , h5_filename ):
model_json = self.classifier.to_json()
with open(json_filename, "w") as json_file:
json_file.write(model_json)
self.classifier.save_weights(h5_filename)

def load_model (self, json_filename , h5_filename ):
json_file = open(json_filename, "r")
loaded_model_json = json_file.read()
json_file.close()
self.classifier = model_from_json(loaded_model_json)
self.classifier.load_weights(h5_filename)
self.classifier.compile(
optimizer = 'adam',
loss = 'categorical_crossentropy' ,
metrics = ['accuracy' ])

Rețeaua neuronală recurentă folosește f uncția softmax ca și funcție de activare pentru stratul final .
Functia softmax generalizează expresia regresiei logistice la situația cu mai multe clase iar
rezultatul funcției reprezintă probabilitățile ca o instanță să aparțină claselor.

52
Ca și funcție de optimizare a rețelei neuronale recurente am folosit algoritmul Adam , bazat pe
metoda gradientului descendent. Algoritmul este folosit pentru a modifica parametrii rețelei
neuronale în timpul antrenării .Rețelele neuronale recurente învață prin intermediul unei funcții
“loss”. Este o metoda de evaluare a modului în care algoritmii modelează datele. Treptat cu
ajutorul unei funcții de optimizare, funcția “loss” învață să reducă eroarea în predicție. În
algoritmul construit am folosit funcția “loss” denumit ă categorial_crossentropy . Clasificatorul
descries expune și doua metode denumite “save_model” și “load_model” cu ajutorul c ărora avem
posibilitatea de a salva un model antrenat cu scopul de a -l importa pentru a fa ce o predicție
pentru o nouă instanță.
3.4. Utilizarea algoritmilor

După procesul de antrenare al algoritmilor, avem posi bilitatea de a salva modelul
utilizând diferite librării. În această aplicație am folosit librăria pickle pentru a salva modelul
antrenat în cazul algoritmului SVM, iar pentru rețelele neuronale recurente am folosit funcții
built-in oferite de Keras . Odată ce modelele sunt salvate avem posibilitatea de a le importa cand
avem nevoie de execuția unei predicții pe un nou semnal oferit de electrocardiogramă.

Dacă dorim să aflăm predicția algoritmului pentru o nouă electrocardiogramă primul pas este să
extragem coeficienții MEL caracteristici acestei electrocardiograme. Următorul pas este să
importăm algoritmul de normalizare pentru a aduce datele în acelasi format ca și cel folosit în
timpul antrenamentului. Ultimul pas constă în folosirea algoritmului pentru c oeficienții extrași.

class ECGPrediction (object):

def __init__ (self):
self.scaler = None
self.rnn_classifier = NN_Classifier()
self.svm_classifier = SVM_Classifier()

def process(self, analysis_name , predict_file , melCoeffsNumber , algorithmId ):
#load scaler
self.scaler = joblib.load(os.path.join( '../../ecg/analysis' ,
analysis_name, 'scaler.save' ))

53

#read data from file
mat = scipy.io.loadmat( '../../ecg/dataset/validation/' +
predict_file)[ 'val'].tolist()[ 0]
mfcc = np.mean(librosa.feature.mfcc( y = np.array(mat, dtype=float),
n_mfcc = int(melCoeffsNumber)).T, axis = 0)

#feature scaling
feature = self.scaler.transform([np.array(mfcc)])
if algorithmId == AppConstants.AppPredictionAlgorithms.RNN:
#import classifier model saved – RNN
self.rnn_classifier.load_model(
os.path.join( '../../ecg/analysis' ,
analysis_name,
'saved_model' , 'model_lstm.json' ),
os.path.join( '../../ecg/analysis' ,
analysis_name,
'saved_model ', 'model_lstm.h5' ))
new_prediction = self.rnn_classifier.classifier.predict_classes(
feature.reshape( 1,int(melCoeffsNumber), 1)
)
print(new_prediction[ 0])
elif algorithmId == AppConstants.AppPredictionAlgorithms.SVM:
#import classifier model saved – SVM
self.svm_classifier.load_model(
os.path.join( '../../ecg/analysis' ,
analysis_name,
'saved_model/model_svm.sav' ))
new_predic tion = self.svm_classifier.classifier.predict(feature)
print(new_prediction[ 0])

54
4. Prezentarea aplica ției
Aplicația este concepută cu scopul de a realiza o analiză comp arativă între diferiți
algoritmi de clasificare , în vederea observ ării de diferențe între rezultatele și performanțele
generale obținute de fiecare algoritm în parte. Aceasta dorește să surprindă motivațiile care stau
la baza apariției noilor tendințe din Inteligența Artificială în general și la unii algoritmi de
clasifi care în particular.

4.1. Crearea unei noi analize

Aplicația oferă posibilitatea de a crea o nouă analiză asupra setului de date care con ține
electrocardiograme din cele treisprezece categorii de boli. Pentru a crea o nouă analiză este n e-
voie să specific ăm numele analizei și numărul de coeficienți MEL pe care îl dorim.

După specificarea parametrilor obligatorii și apăsarea butonului denumit Add Analysis se trimite
o cerere HTTP către server -ul dezvoltat cu ajutorul tehnologiei NodeJs care, prin interme diul u n-
ui proces, execute un script Python care prelucreaza setul de date.
După ce o analiză este create se salveaza următoarele detalii în cadrul fiecărei analize:

În directorul denumit saved_model vor fi salvate fișierele aferente algoritmilor care vor rula în
cadrul respectivei analize. În directorul saved_model vor fi regăsite rezultatele antrenamentului
pentru rețelele neuronale recurente . Fișierul denumit ecg_data conține datele procesate și
normalizate în cadrul analizei. Cu alte cuvinte, în acest fișier se regasesc coeficienții extrași din
fiecare electrocardiograme din cadrul setului complet de date. De asemenea, pentru fiecare
electrocardiogramă se reține contextul bolii cardiace din care face parte. În fișierul scaler se

55
salveaza informațiile al goritmului de normalizare folosit pentru procesarea datelor pentru a folosi
aceste informații în cadrul predicțiilor.
Analizele create pot fi vizualizate într -un tabel unde sunt specificate următoarele detalii : numele
analizei, numărul de coeficienți folos iți, durata procesării, status -ul procesării și data la care a fost
creată analiza.

4.2. Execuția algoritmilor

După ce se creează o analiza, aplicația permite rularea algoritmilor de invățare automată în cadrul
analizei respective. Pentru a rula un alg oritm este nevoie de specificarea a doi parametri : analiza
și algoritmul folosit pentru analiza respectivă.

În cazul în care se alege algoritmul Deep Learning – Reccurent Neural Networks Cross Valid a-
tion exista posibilitatea de a aplica un alt algorit m de învățare automată nusupervizată denumit
Analiza Componentelor Principala(PCA) . Am folosit acest algoritm din motive de performanță
deoarece rularea algoritmului Deep Learning – Reccurent Neural Networks Cross Validation du-

56
rează până la 10 -15 ore. O as tfel de transformare este necesară deoarece poate co nserva o mare
parte din informație, iar algoritmul poate rula într -un timp mult mai eficient.

Acțiunea de selectare a unei analize implic ă popularea unui tabel care conține toate execuțiile
algoritmi lor din acea analiză. Pentru fiecare execuție de algoritm se înregistreaza algoritmul
folosit, acuratețea obținută, durata execuției, data la care s -a inițiat execuția și status -ul ei.

4.3. Predicția rezultatului pentru un ECG

Aplicația permite un me niu prin care sunt importate câteva electrocardiograme cu scopul de a
folosi algoritmii gata antrenați pentru a clasifica acea electrocardiograma, privind apartenența ei
la o clasa. În această aplicație sunt folosite mașinile cu vectori support și rețelele neuronale r e-
curente deoarece acești algoritmi au prezentat cele mai bune rezultate(SVM au o acuratețe de
95% iar rețelele neuronale recurente au o acuratețe de 94%).

57

4.4. Rezultate experimentale

Aplicația oferă o secțiune de statistici unde pot fi vi zualizate diferite rezultate.În primul grafic se
poate observa o privire de ansamblu asupra algoritmilor executați.

În cel de -al doilea grafic poate fi vizualizată durata medie de execuție a fiecărui algoritm în parte.
Dupa cum se poate observa cel ma i eficient algoritm din punct de vedere al execuției este Ran-
dom Forest dar are o acuratețe de doar 91%. Cel mai puțin eficient din punct de vedere al ti m-
pului de execuție este algoritmul Deep Learning – Reccurent Neural Networks Cross -Validation
iar acura tețea obținută este de 92%.

58

În cel de -al treilea grafic poate fi vizualizată o statistică asupra performanței obținute de fiecare
algoritm folosit în aplicație.

Rezultatele obținute sunt (în ordinea descrescătoare a acurateței obținute):
 SVM – 95,3%
 Deep Learning RNN – 94,8%
 KNN – 94,3%
 Random Forest – 91,7%
 Decision Tree – 86,4%

4.5. Concluzii

Inteligența artificială începe să lucreze cot la cot cu medicii din întreaga lume, iar impactul ut i-
lizării acesteia în sistemul medical este unul uriaș. În primul rând, Inteligența Artificială se fol o-
sește azi în termeni restrânși, nu avem Inteligență Artificială generalizată, avem numai aplicații
care beneficiază de un aspect restrâns al acesteia. Acest aspect se referă la rețele neurale, cu mu l-
te niveluri, ceea ce se numește deep learning, iar prin aceste rețele algoritmii pot învăța să ex e-

59
cute anumite sarcini de care beneficiază medicul sau pacientul. Beneficiile Inteligenței Artif iciale
în medicină sunt împărțite pe trei dimensiuni: creșterea eficienței ș i productivității, prin autom a-
tizarea și optimizarea proceselor clinice, în așa fel încât medicul să se poată concentra pe pacient;
îmbunătățirea experienței pacientului, prin evitarea procedurilor inutile și prin prioritizarea cazu r-
ilor complexe și dezvol tarea medicinei de precizie, bazată pe diagnosticare de precizie și trat a-
ment optimizat pentru pacient.
Așadar, principalul obiectiv pe care l -am urmărit a fost de a realiza un proiect destinat
medicilor cu scopul de a facilita act ivitatea de zi cu zi a a cestora prin folosirea unui sistem de i n-
teligen ță artificiala care ajuta la diagnosticarea bolilor cardiace prin analiza și procesarea
semnalelor ECG.
La baza acestei aplicații stau mai multe tehnologii moderne, printre care amintim cele mai
importante: Python, Pandas, Numpy, Sklearn, Scipy, Node.js, Angular 6 , Javascript, Matplotlib ,
HTML, CSS, My SQL.
Performanța algoritmilor folosiți poate fi îmbunătățită prin adaugarea a mai multor
electrocardiograma în cadrul setului de date folosit pentru antrenarea algoritmilor. Ca și
performanță a timpului de execuție acesta poate fi îmbunătățit prin simplificarea numărului de
coeficienți extrași, dar totodata, păstrând informația originală.

60
Bibliografie

[1]. Conf. Dr. Doina DRĂGĂNESCU, Dr. Lavinia TIM ARU, Dr. Ion -Bogdan DUMITRESCU ,
Tehnologia informației aplicată în domeniul farmaceutic , 2011.

[2]. Eucomed Brochure, Medical Technology , Contributing to Europe's Health, Innovation and
Economy , 2013.

[3]. Dr. Virgil Barbaiu, Spectroscopia de Rezonanta M agnetica Nucleara: fundamente generale
si aplicatii la polimeri , 2015 .

[4]. LTH Tan and KL Ong , The impact of medical technology on healthcare today, 2002.

[5]. Bianca Doroban țu, Cum arată medicina viitorului și care sunt avantajele folosirii Inteligențe i
Artificiale în sistemul de sănătate? , 2018

[6]. Michael A. De Miranda, A. Mark Doggett, Jane T. Evans , Contexts and Content in Science
and Technology , 2005.

[7]. Wikipedia, Cardiopulmonary resuscitation , 2002.

[8]. Oana -Maria Banu, Aplica ții web -based: avantaje si dezavantaje , 2014.

[9]. Mitchell, Tom. Machine Learning , 1997.
`
[10]. MacKay, David J. C . Information Theory, Inf erence and Learning Algorithms , 2003.

[11]. Nilsson, Nils J . Introduction to Machine Learning: an early draft of a propo sed textbook,
1998.

[12]. Russel, Stuart J. și Norvig, Peter. Artificiall Inteligence A Modern Approach , 1995.

[13]. Peter Harrington, Machine Learning in Action , 2012.

[14]. Adina Magda Florea , https://aimas.cs.pub.ro/lemas -2016/_media/adinaflorea –
arboridedecizie.pdf , 2016 .

[15]. Avinash Navlani, https://www.data camp.com/community/tutorials/k -nearest -neighbor –
classification -scikit -learn , 2018

[16]. Daniel Morariu, http://webspace.ulbsibiu.ro/daniel.morariu/html/StudentDoc/D M/
Lab4_KNN.pdf

[17]. Florin Leon, Inteligență artificială, mașini cu vectori suport , 2014

[18]. https://statinfer.com/204 -6-8-svm-advantages -disadvantages -applicati ons/, 2019

61
[19]. https://www.code -it.ro/introducere -in-retele -neuronale -teorie -si-aplicatii/ , 2018

[20]. Daniel Morariu, http://webspace.ulbsibiu.ro/daniel.morariu/html/StudentDoc/ML/IA –
laborator4.pdf

[21]. L.R. Medsker, L.C. Jain, Recurrent Neural Networks. Design and Applications (CRC Press)

[22]. Cristopher Olah, Understanding LSTM Networks – Article, 2015

[23]. Geoffrey Hinton, Machine Learning. Lecture 7e. Long term short term memory

[24]. Roberto Togneri, Daniel Pullella, An Overview of Speaker Identification: Accuracy and R o-
bustness Issues , 2011

[25]. https://scikit -learn.org/stable/modules/cross_validation.html

Similar Posts