Compararea algoritmilor de clasificare în contextul diagnosticării medicale propusă de Cre ț u Andra-Elena Sesiunea: Iulie, 2018 Coordonator ș tiin [611035]

UNIVERSITATEA “ALEXANDRU IOAN CUZA” DIN IA
Ș
I

FACULTATEA DE INFORMATICĂ

LUCRARE DE LICEN
Ț
Ă

Compararea algoritmilor de clasificare în contextul

diagnosticării medicale

propusă de

Cre
ț
u Andra-Elena

Sesiunea: Iulie, 2018

Coordonator
ș
tiin
ț
ific

Lect. Dr. Arusoaie Andrei

UNIVERSITATEA “ALEXANDRU IOAN CUZA” DIN IA
Ș
I

FACULTATEA DE INFORMATICĂ

Compararea algoritmilor de clasificare

în contextul diagnosticării medicale

Cre
ț
u Andra-Elena

Sesiunea:

Iulie, 2018

Coordonator
ș
tiin
ț
ific

Lect. Dr. Arusoaie Andrei

1

DECLARA
Ț
IE DE CONSIM
Ț
ĂMÂNT

Prin prezenta declar că sunt de acord ca Lucrarea de licen
ț
ă cu titlul

„Compararea algoritmilor de clasificare în contextul diagnosticării medicale”, codul

sursă al programelor
ș
i celelalte con
ț
inuturi (grafice, m ultimedia, date de test etc.) care

înso
ț
esc aceast ă lucrare să fie utilizate în cadrul Facultă
ț
ii de Informatică.

De asemenea, sunt de acord ca Facultatea de Informatică de la Universitatea

„Alexandru Ioan Cuza” din Ia
ș
i, să utilizeze, modifice, reproducă
ș
i să distribuie în

scopuri necomerciale programele-calculator, format executabil
ș
i sursă, realizate de

mine în cadrul prezentei lucrări de licen
ț
ă.

Ia
ș
i,

Absolvent: [anonimizat]

_______________________

(semnătura în original)

2

Cuprins

I.Introducere
5

1.1 Context
5

1.2 Motiva
ț
ia
6

1.3 Contribu
ț
ii
7

4. Structura Lucrării
8

II. Diagnosticarea medicală privită ca problema de clasificare
9

2.1 Diagnosticarea medicală
9

2.2 Solu
ț
ii
10

III.Cercetarea ca punct de reper în diagnosticarea medicală
11

1 Contribu
ț
ii
11

1.1 Construc
ț
ia unui set de date potrivit
11

1.2 Alegerea algoritmi potrivi
ț
i pentru rezolvarea problemei
11

1.3 Implementarea algoritmilor
ș
i antrenarea acestora
12

1.4 Interpretarea rezultatelor
12

2.Diagnosticarea folosind algoritmi de învă
ț
are automată.
13

2.1 Construc
ț
ia unui set de date format din analize medicale specifice diagnosticării

unei boli cronice la rinichi
13

2.2 Utilizarea algoritmilor de clasificare în diagnosticare
13

IV. Experimente
20

4.1 Timpul de răspuns
20

4.2 Rata de eroare ca factor decisiv în luarea unei decizii asupra găsirii solu
ț
iei
22

4.3 Inteligenta umana vs inteligenta artificiala
24

4.4 Interpretarea rezultatelor
25

V. Concluzii
26

Bibliografie
27

Apendix
29

Tehnologiile utilizate
29

Setul de date
30

Eficienta
31

3

I.Introducere

1.1 Context

Diagnosticarea
este
o
etapă
a
actului
medical
care
permite
identificarea
naturii
ș
i

cauzei
afec
ț
iunii
de
care
suferă
un
pacient.
Numărului
mare
de
informa
ț
ii,
posibilitatea

apari
ț
iei
erorile
umane
ș
i

dificultă
ț
ile
ridicate
ale
procesului
de
diagnosticare,
reprezintă
una

dintre
problemele
cu
care
se
confruntă
domeniul
medical
în
prezent.
Apari
ț
ia
ș
i
evolu
ț
ia

rapidă
a
tehnicilor
de
învă
ț
are
automată
a
oferit
posibilitatea
dezvoltării
unor
sisteme

inteligente
care
pot
asista
medicii
în
determinarea
unui
diagnostic
pe
baza
unor
simptome

sau a unui set de analize medicale.

Pentru
a
dezvolta
astfel
de
sisteme
inteligente
care
pot
oferi
un
diagnostic
pe
baza

unor analize medicale pot fi utiliza
ț
i o serie de algoritmi de învă
ț
are automată.

Multitudinea
ș
i
diversitatea
algoritmilor
de
învă
ț
are
automată
constituie
un
important

subiect de cercetare care constă în compararea eficien
ț
ei algoritmilor.

Ca
în
toate
domeniile
în
care
sunt
utiliza
ț
i
algoritmii
de
învă
ț
are
automată,
ș
i
în

domeniul
medical
este
nevoie
de
utilizarea
unor
algoritmi
eficien
ț
i,
atât
din
punct
de
vedere

al timpului de execu
ț
ie cât
ș
i al preciziei cu care clasifica anu mite date de intrare.

1.2 Motiva
ț
ia

În
prezent,
interpretarea
rezultatelor
unui
set
de
analize
medicale
se
poate
realiza

doar
cu
ajutorul
unui
medic
specialist.
În
cadrul
interpretării
unor
analize
medicale
pot
apărea

nenumăra
ț
i
factori
care
pot
duce
la
o
interpretare
eronată
printre
care
se
număra:

numărului

mare de informa
ț
ii sau posibilitatea apari
ț
iei erorile umane.

Posibilitatea
apari
ț
iei
unor
astfel
de
erori
aduce
după
sine
dorin
ț
a
perfec
ț
ionării

sistemului
medical
prin
dezvoltarea
de
sisteme
inteligente
care
pot
veni
în
ajutorul
medicilor

4

prin
oferirea
de
diagnostice
pentru
diferite
seturi
de
analize
medicale.
Posibilitatea
de
a

antrena
un
algoritm
de
învă
ț
are
automată
cu
ajutorul
unor
seturi
de
date
clasificate
anterior

face posibilă dezvoltarea de astfel de sisteme inteligente.

Oferirea
unui
diagnostic
corect
face
ca
alegerea
algoritmilor
de
învă
ț
are
automată,

utiliza
ț
i
în
clasificarea
analizelor
medicale,

fie
foarte
importantă.
Acest
lucru
constituie

motivul
pentru
care
cercetarea
eficien
ț
ei
ș
i
compararea
algoritmilor

reprezinte
una
din
cele

mai
importante
etape
din
dezvoltarea
unui
astfel
de
sistem
capabil

ofere
un
diagnostic
cât

se poate de exact.

1.3 Contribu
ț
ii

Pornind
de
la
motiva
ț
ia
prezentată
mai
sus,
lucrarea
de
fa
ț
ă
urmăre
ș
te
compararea

unor
algoritmilor
de
învă
ț
are
automată
în
contextul
clasificării
unor
seturi
de
date
ș
i
totodată

se dore
ș
te prezentarea diferen
ț
elor din punct de vedere al eficie n
ț
ei
ș
i al preciziei acestora.

Realizarea
lucrării
de
fa
ț
ă
a
constat
în
cercetarea,implementarea,
antrenarea
ș
i

compararea,
prin
execu
ț
ia
de
experimente,
a
trei
tipuri
de
algoritmi
de
învă
ț
are
automată,

atât

între
ei
cât
ș
i
relativ
la
diagnosticul
prezis

.
Algoritmii
utiliza
ț
i
au
fost:
ID3,
AddaBoost

utilizând
ca
algoritm
de
clasificare
slab
Decision
Stump
ș
i
s-a
antrenat
ș
i
o
re
ț
ea
neuronală.
În

cadrul
experimentelor
realizate
s-a
avut
în
vedere
strângerea
de
informa
ț
ii
referitoare
la

timpul
de
execu
ț
ie
necesar
algoritmilor
pentru
învă
ț
are
ș
i
la
rata
de
eroare
rezultată
în
urma

testării
modelelor
învă
ț
ate
de
către
algoritmi.
Pe
lângă
testarea
algoritmilor
în
diferite
situa
ț
ii

s-a
încercat
verificarea
corectitudinii
diagnosticelor
oferite
de
ace
ș
tia
prin
compararea

acestora
cu
diagnosticele
oferite
de
un
medicspecialist
pe
acela
ș
i
set
de
date
format
din
10

instan
ț
e
de
test.
În
urma
experimentelor,
au
fost
colectate
o
serie
de
observa
ț
ii
cu
ajutorul

cărora s-a oferit o solu
ț
ie pentru problema diagnosticării medicale.

1.4. Structura Lucrării

Studiul
de
caz
urmăre
ș
te
oferirea
unei
priviri
de
ansamblu
asupra
modului
în
care

domeniul
informaticii
se
îmbină
cu
cel
medical
pentru
a
ajuta
la
îmbunată
ț
irea
modului
în

care
este
interpretat
un
set
de
analize
medicale.
Se
urmăre
ș
te
monitorizarea
comportamentului

5

a
trei
algoritmi
de
învă
ț
are
automată
ș
i
totodată
se
dore
ș
te
catalogarea
pacien
ț
ilor
ca
suferind

de o boală cronica la rinichi sau nu, pe baza unui set de analize medicale.

Pentru
realizarea
acestor
obiective
s-au
implementat
ș
i
antrenat
trei
algoritmi
diferi
ț
i

de
clasificare
ID3(care
generează
un
arbore
de
decizie
binar),
AddaBoost
utilizând
ca

algoritm
de
clasificare
slab
Decision
Stump(un
arbore
de
decizie
cu
un
nod)
ș
i
s-a
antrenat
ș
i

o
re
ț
ea
neuronală.
Pe
baza
unui
set
de
date,
preluat
din
baza
de
date
de
pe
site-ul
UCI

Machine Learning, s-au antrenat
ș
i testat cei trei algoritmi.

Primul
capitol
oferă
o
perspectivă
de
ansamblu
asupra
modului
în
care
algoritmii
de

învă
ț
are
automată
pot
ajuta
la
rezolvarea
problemei
de
diagnosticare
a
pacien
ț
ilor
cu
o
boală

cronică
la
rinichi.
În
al
doilea
capitol,
vor
fi
prezentate
în
detaliu
componentele
utilizate
în

cadrul
cercetării
asupra
algoritmilor
de
învă
ț
are
automată,
diferen
ț
ele
dintre
acestea
ș
i
cum
au

fost
utiliza
ț
i
ace
ș
tia
în
clasificarea
datelor
primite.
În
cadrul
sec
ț
iunii
destinată
experimentelor

ș
i
evaluării
solu
ț
iilor
se
vor
regăsi
o
serie
de
statistici
legate
de
modul
de
func
ț
ionare
a
celor

trei
algoritmi(rata
de
eroare,
timpul
de
execu
ț
ie)
pe
acela
ș
i
set
de
date,
precum
ș
i
compararea

eficien
ț
ei
acestora
ș
i
a
corectitudinii
diagnosticelor
oferi te.
Urmând
ca
pe
final
sa
fie

prezentat
un
scurt
rezumat
a
celor
prezentare
în
cadrul
lucrării
ș
i
o
serie
de
planurilor
de

îmbunată
ț
ire
ș
i a altor contribu
ț
ii care pot fi aduse lucrării curente.

6

II. Diagnosticarea medicală privită ca problema de

clasificare

2.1 Diagnosticarea medicală

Institutul
de
Medicină
de
la
Academiile
Na
ț
ionale
de
Ș
tiin
ț
ă,
Inginerie
ș
i
Medicină

raportează

erorile
de
diagnostic
contribuie
la
aproximativ
10%
din
decesele
pacien
ț
ilor
ș
i

reprezintă
de
asemenea
6-17%
din
complica
ț
iile
spitalului.
Este
important
de
observat

performan
ț
a
mediculu i
nu
este
de
obicei
cauză
directă
a
erorilor
de
diagnosticare.
De
fapt,

cercetătorii
atribuie
cauza
erorilor
de
diagnostic
unei
varietă
ț
i
de
factori,
printre
care
se

numără:


Colaborarea ineficientă
ș
i integrarea tehnologiilor informa
ț
ionale în domeniul sănătă
ț
ii


Lacune în comunicarea dintre medici, pacien
ț
i
ș
i familiile acestora


Un
sistem
de
lucru
în
domeniul
sănătă
ț
ii
care,
prin
proiectare,
nu
sprijină
în
mod

adecvat procesul de diagnosticare. [18]

Posibilitatea
apari
ț
iei
unui
diagnostic
eronat
a
fost
ș
i
va
rămâne
o
problemă
vitală
în

domeniul
medical.
Odată
cu
evolu
ț
ia
tehnologiei
s-a
încercat
în
permanen
ț
ă

se

îmbunătă
ț
ească
sistem ul
medical
prin
oferirea
de
aparatură
ș
i
sisteme
inteligente
care
pot

veni
în
ajutorul
medicilor.
Însă,
dezvoltarea
unor
sisteme
care
pot
oferi,
cu
o
anumită

preciziei,
un
diagnostic
nu
se
rezumă
doar
la
implementarea
unui
algoritm
capabil

clasifice
un
set

de
date,
fiind
nevoi

e
de
o
cercetare
amănun
ț
ită
în
domeniul
învă
ț
ării
automate

pentru
a
putea
oferi
o
solu
ț
ie
cât
mai
eficientă
ș
i
mai
precisă
pentru
aceasta
problemă
de

clasificare
ș
i anume di agnosticarea medicală.

Principala
problemă
care
apare
în
cadrul
dezvoltării
unui
sistem
capabil

ofere
un

diagnostic
corect
este
aceea
de
a
compara
diferi
ț
i
algoritmi
din
domeniul
învă
ț
ării
automate

7

ș
i
alegerea
algoritmu l
optim.
Compararea
modului
în
care
algoritmi
lucrează
cu
seturi
de

date
specifice
reprezintă
punctul
central
al
dezvoltării
sistemelor
inteligente
care
sunt

capabile să contribuie la evolu
ț
ia sistemului medical.

2.2 Solu
ț
ii

Diagnosticarea
medicală
reprezintă
o
categorie
de
teste
medicale
destinate
detectării

infec
ț
iilor
sau
a
afec
ț
iunilor

de

care
este
probabil
ca
un
pacient
sa
sufere

.
Astăzi,
învă
ț
area

automată joacă un rol

esen
ț
ial

în evolu
ț
ia diagnosticării medicale.

În
prezent,
diagnosticarea
medicală,
de
cele
mai
multe
ori,
se
realizează
printr-o
vizită

la
medicul
specialist
care
pe
baza
unor
analize
medicale
oferă
un
diagnostic.
În
ultimii
ani,
au

apărut
o
serie
de
inova
ț
ii
ș
i
dispozitive
electronice
în
măsura

ajute
medicii
în

diagnosticarea
mai
rapidă
a
diferitelor
afec
ț
iuni.
Odată
cu
introducerea
datelor
unui
pacient
ș
i

a
simptomelor
sale,
aplica
ț
iile
vor
genera
anumite
măsuri
ș
i
decizii

ce
ar
trebui,
în
mod
uzual,

sa
fie
luate
de
către
medic

.
Acestea
pot
oferi
fie
o
lista
de
referin
ț
e
spre
diferite
articole

ș
tiin
ț
ifice în domeniu, fie o serie de posibile diagnostice.

Există,
desigur,
ș
i
o
serie
de
cercetări
în
direc
ț
ia
oferirii
unui
diagnostic
pe
baza
unui

set
de
analize.
Realizarea
unui
asemenea
sistem
se
bazează
pe
o
serie
de
seturi
de
analize

clasificate
în
prealabil
ș
i
verificate
de
către
un
medic
de
specialitate.
Multe
dintre
aplica
ț
iile

de
diagnosticare
medicală
care
au
în
spate
algoritmi
de
învă
ț
are
automată,
se
ghidează
după

acela
ș
i
principiu:
cercetătorii
folosesc
învă
ț
area
automată
pentru
a
antrena
algoritmi
care

recunoască
ț
esuturi
canceroase
sau
bolile
rare
prin
analiza
imaginilor
precum
ș
i

diagnosticarea diferitelor afec
ț
iuni pe baza analizelor de laborator.

De
cele
mai
multe
ori
în
realizarea
unor
sisteme
inteligente
care

ofere
un
diagnostic

medical,
se
folose
ș
te
învă
ț
area
automată
care
se
preocupă
cu
dezvoltarea
de
algoritmi
ș
i

metode
ce
permit
unui
sistem
informatic

înve
ț
e
date,
reguli,
chiar
ș
i
algoritmi.
În
urma

dezvoltării
unor
astfel
de
algoritmi
se
pot
face
diferite
compara
ț
ii
între
ace
ș
tia
ș
i
se
pot

extrage
anumite
informa
ț
ii
care
pot
ajuta
în
procesul
de
alegere
a
celui
mai
potrivit
algoritm

capabil sa ne ajute în rezolvarea unei probleme.

8

Lucrarea
de
fa
ț
ă
dore
ș
te

prezinte
o
serie
de
solu
ț
ii
pentru
rezolvarea
problemei
de

diagnosticare
medicală
care
se
afla
în
strânsa
legătură
cu
problema
găsirii
unui
algoritm
optim

care
poate

clasifice
corect
un
set
de
analize
primit
ca
date
de
intrare.
Astfel
că,
găsirea
de

solu
ț
ii
pentru
aceste
două
probleme
se
rezumă
la
cercetarea
comportamentului
ș
i
compararea

eficien
ț
ei
ș
i
preciziei
unui
set
de
algoritmi
de
învă
ț
are
automată
capabili

clasifice
un
set
de

date.

Modul
principal
de
abordare
al
acestei
probleme
a
fost
acela
de
a
compara
diferi
ț
i

algoritmi
de
învă
ț
are
automată
ș
i
de
a
strânge
cat
mai
multe
informa
ț
ii
despre
modul
în
care

se
comporta
ace
ș
tia
pe
un
set
de
date
comun.
În
acest
mod,
vom
putea
efectua
o
compara
ț
ie
ș
i

vom putea spune cu aproxima
ț
ie care este cel mai potrivit pentru a rezolva problema de fa
ț
ă.

9

III.Cercetarea ca punct de reper în diagnosticarea

medicală

1 Contribu
ț
ii

Pornind
de
la
problema
prezentată
mai
sus,
lucrarea
de
fa
ț
ă
urmăre
ș
te
monitorizarea
ș
i

compararea
unor
algoritmilor
de
învă
ț
are
automată
în
contextul
clasificării
unor
seturi
de
date

ș
i
totodată
se
dore
ș
te
prezentarea
diferen
ț
elor
din
punct
de
vedere
al
eficien
ț
ei
ș
i
al
preciziei

acestora.

Domeniul
medical
depinde,
în
mare
măsură,
de
existen
ț
a
unui
medic
specialist
care

î
ș
i
asume
responsabil itatea
oferirii
unui
diagnostic
pacien
ț
ilor.
Implementarea
unui
sistem

inteligent
care

fie
capabil

ofere
un
diagnostic
poate
aduce
o
contribu
ț
ie
semnificativă
în

medicina
de
astăzi.
Pentru
construirea
unui
astfel
de
sistem
este
necesar
un
studiu
amănun
ț
it

asupra comportamentului algoritmilor de învă
ț
are automată.

Principalul
obiectiv
a
fost
acela
de
a
implementa,
antrena
ș
i
compara
eficien
ț
a
a
trei

tipuri
de
algoritmi
de
învă
ț
are
automată.
Astfel
că,
în
aceasta
direc
ț
ie,
a
fost
efectuată
o
suită

de
teste
pentru
a
determina
durata
de
execu
ț
ie,
precizia
cu
care

se
realizează
clasificarea
unui

set
de
date
precum
ș
i
rata
de
eroare
a

algoritmilor
studia
ț
i

.
Alegerea
algoritmilor
a
fost
făcută

în
urma
studiului
efectuat
asupra
modului
în
care
se
comporta
ace
ș
tia
în
cadrul
rezolvării

unor probleme asemănătoare.

1.1 Construc
ț
ia unui set de date potrivit

Ca
prim
pas
în
realizarea
lucrării,
s-au
efectuat
o
serie
de
cercetări
asupra
problemei
ș
i

a
modului
în
care
aceasta
ar
putea
fi
rezolvată.
Partea
cea
mai
dificila
a
constat
în
găsirea
unei

baze
de
date
suficient
de
consistentă
astfel
încât

poată
fi
folosită
pentru
antrenarea

algoritmilor.

Deoarece
problema
diagnosticării
medicale
cuprinde
o
arie
largă
de
afec
ț
iuni

10

care
pot
fi
extrase
dintr-un
set
de
analize
medicale,
s-a
decis
mic
ș
orarea
ariei
de

diagnosticare
pe
o
singură
ramură
pentru
a
putea
fi
mai
u
ș
or
de
gestionat
eficien
ț
a

algoritmilor.

1.2 Alegerea algoritmi potrivi
ț
i pentru rezolvarea problemei

Următorul
pas
a

presupus
alegerea
unor
algoritmi
de
învă
ț
are
automată
care

poată

oferi
un
diagnostic
pe
baza
unui
set
de
analize
primit
la
intrare.
În
urma
căutărilor
s-au
ales

trei
algoritmi
de
clasificare
destul
de
cunoscu
ț
i
:
ID3,
AdaBoost
ș
i
o
re
ț
ea
neuronală

artificială.
Algoritmii
ID3
ș
i
AdaBoost
func
ț
ionează
după
acelea
ș
i
principii
ș
i
anume

utilizarea
arborilor
de
decizie
pentru
a
înva
ț
ă
praguri
de
decizie
ș
i
a
prezice
cu
o
anumita

precizie
cărei
clase
apar
ț
ine
setul
de
date
primit
la
intrare.
Pe
când,
utilizarea
unei
re
ț
ele

neuronale
necesită
antrenarea
în
mod
repetat
pentru
a
oferi
o
acurate
ț
e
cât
mai
mare

clasificării.

1.3 Implementarea algoritmilor
ș
i antrenarea acestora

Partea
practică
a
lucrării
a
constat
în
implementarea
celor
trei
algoritmi
ș
i
filtrarea

datelor
necesare
antrenării
acestora.
S-a
ales
implementarea
de
la
zero
a
acestor
algoritmi
din

dorin
ț
a
de
a
în
ț
elege
exact
cum
lucrează
algoritmii,
tipul
de
date
necesar
pentru
antrenare,

calculele
efectuate,
modul
de
memorare
al
informa
ț
iilor
în
pasul
de
antrenare
precum
ș
i

modul
în
care
este
clasificat
un
nou
set
de
date
pe
baza
celor
învă
ț
ate
la
pasul
anterior.
Acest

lucru
a
necesitat
un
studiu
aprofundat
al
no
ț
iunilor
teoretice
de
învă
ț
are
automată
esen
ț
iale
în

implementarea celor trei algoritmi.

1.4 Interpretarea rezultatelor

În
urma
antrenării
celor
trei
algoritmi
s-au
strâns
o
serie
de
statistici
legate
de
timpul

de
execu
ț
ie
ș
i
de
precizia
algoritmilor
în
func
ț
ie
de
diferi
ț
i
parametri
(volumul
de
date,

numărul
de
itera
ț
ii).
Experimentele
efectuate
au
stat
la
baza
realizării
acestei
lucrări
care
are

în
prim
plan
compararea
diferitelor
tipuri
de
algoritmi
de
clasificare
pentru
a
rezolva

problema diagnosticării medicale.

11

2.Diagnosticarea folosind algoritmi de învă
ț
are automată.

2.1 Construc
ț
ia unui set de date format din analize medicale specifice

diagnosticării unei boli cronice la rinichi

Setul
de
date
a
fost
preluat
din
baza
de
date
a
site-ul
UCI
Machine
Learning
[6].

Acesta
con
ț
ine
un
număr
de
400
de
instan
ț
e.

Fiecare
instan
ț
ă
con
ț
ine
24
de
atribute
specifice

ș
i
un
atribut
destinat
clasei
din
care
face
parte.
Din
cele
400
de
instan
ț
e
250
sunt
clasificate
cu

o
boală
cronică
la
rinichi
iar
restul
de
150
nu
sunt
clasificate
cu
aceasta
boală.
Pe
baza
acestui

set
de
date
cei
trei
algoritmi
ș
i-au
dezvoltat
propria
schemă
de
clasificare.
O
mostră
din
datele

examinate este ilustrată în Imaginea 1:

Imaginea 1. Exemple de seturi de analize medicale utilizate la antrenarea algoritmilor

Fiecare
intrare
reprezintă
un
set
de
analize
medicale
care
oferă
informa
ț
ii
despre

existen
ț
a
sau
inexisten
ț
a
unei
boli
cronice
la
rinichi.
Cele
24
de
caracteristici
au
fie
valori

numerice, fie valori nominale.

12

2.2 Utilizarea algoritmilor de clasificare în diagnosticare

După
cum
am
specificat
ș
i
în
sec
ț
iunile
anterioare,
pentru
clasificarea
datelor
s-au

folosit
trei
algoritmi
de
învă
ț
are
automată:
ID3,
AdaBoost
ș
i
o
re
ț
ea
neuronală.
Scopul

acestora
fiind
acela
ș
i
ș
i
anume
oferirea
unui
diagnostic
.
În
func
ț
ie
de
fiecare
algoritm,
datele

de
care
am
dispus
au
suferit
mici
modificări
pentru
a
putea
ajuta
la
efectuarea
calculelor

(pentru
re
ț
eaua
neuron ală
a
trebuit

înlocuiesc
valorile
nominale
cu
valori
numerice
de
0
ș
i
1

pentru a putea realiza calculele necesare).

2.2.1 ID3 ca algoritm de clasificare

ID3
este
un
algoritm
de
construire
inductivă
a
unor
arbori
de
decizie
capabil

clasifice un set de date primit ca date de intrare.

Un
arbore
de
decizie
are
la
intrare
o
instan
ț
ă
formată
din
valori
pentru
un
set
de

atribute
ș
i
produce
la
ie
ș
ire
o
valoare
de
decizie.
Fiecare
nod
intern
din
arbore
reprezintă
un

test
asupra
valorii
unui
atribut,
iar
arcele
din
arbore
corespund
valorilor
posibile
ale

atributului
testat.
Nodurile
frunză
specifică
decizia
la
care
se
ajunge
pentru
calea
care
duce
la

acel
nod
(în
cazul
nostru
“ckd”
-pacientul
suferă
de
o
boala
cronică
la
nivelul
rinichilor,

”notckd” – pacientul nu suferă suferă de o boala cronică la nivelul rinichilor).

Ideea
de
baza
în
ID3
este
de
a
selecta
ini
ț
ial
cel
mai
important
atribut.
Prin
cel
mai

important
în
ț
elegem,
în
acest
caz,
cel
care
diferen
ț
iază
cel
mai
mult
instan
ț
ele
neclasificate
în

momentul
curent.
După
alegerea
unui
atribut
setul
de
date
se
va
împăr
ț
i
în
instan
ț
e
adevărate

sau false în func
ț
ie de condi
ț
ia din nodul de decizie.

În
cadrul
lucrării,
algoritmul
ID3
a
fost
folosit
pentru
a
genera
un
arbore
de
decizie

utilizând
atributele
din
cadrul
seturilor
de
analize
medicale
cu
ajutorul
căruia

se
poată
oferi

un
diagnostic
pentru
un
nou
set
de
date.
Arborele
de
decizie
se
generează
în
urma
antrenării

algoritmului
cu
un
set
de
date
de
intrare,
astfel

s-a
împăr
ț
it
baza
de
date
în
două
păr
ț
i,
una

utilizată
la
antrenare,
iar
cealaltă
la
testare.
În
cadrul
antrenării
s-a
folosit
no
ț
iunea
de
entropie

cu rol în alegerea celui mai bun atribut la un moment dat, care are următoarea formula:

13

(
X
)

(
x
)
l
o
g
p
(
x
)
H
=

n
i
=
1
p
i
b

i

unde,

variabila discretă, iar
func
ț
ia de probabilitate.
x
x
,
.
.
,
}
X
=
{
1
,
2
.
x
n

p

Algoritmul
ID3
este
un
algoritm
specializat
pe
atribute
cu
valori
nominale

(adevărat/fals,
0/1,
rosu/galben).
Deoarece,
în
valorile
din
seturile
de
analize
apar
ș
i
valori

continue
s-a
folosit
o
extensie
a
algoritmului
ID3
care,
în
loc

calculeze
entropia
pentru

fiecare
valoare
continuă
a
unui
atribut,
va
caută
praguri
care
separa
două
instan
ț
e
de
clase

diferite
(după
ce
instan
ț
ele
au
fost
sortate
după
atributul
respectiv)
ș
i
va
fi
folosit
ca
nod
de

decizie.

Imaginea 2. Arborele ob
ț
inut în urma antrenării algoritmului ID3.

După
antrenarea
algoritmului
ș
i
ob
ț
inerea
arborelui
de
decizie
se
poate
observa
faptul


în
nodurile
interioare
ale
arborelui
se
află
condi
ț
ii
formate
din
atribute
ș
i
valori
posibile
ale

acestora,
iar
în
nodurile
terminale,
numite
ș
i
frunze,
se
găse
ș
te
diagnosticul
ș
i
numărul
de

instan
ț
e
care
îndeplin esc
condi
ț
iile
din
nodurile
de
decizie
de
la
rădăcina
până
la
o
frunza

(“ckd”,”notckd”).

Astfel,
în
urma
antrenării
algoritmului
clasificarea
unei
noi
instan
ț
e
este
u
ș
or
de

realizat,
deoarece
se
va
porni
din
nodul
rădăcina
ș
i
parcurgând
arborele
în
func
ț
ie
de
valorile

14

condi
ț
iilor
din
noduril e
de
decizie
(“true”
sau
“false”)
se
va
ajunge
la
un
nod
frunză
care
va

oferi un diagnostic.

2.2.2 AdaBoost – algoritm de boosting

Algoritmii
de
boosting
constau
în
metode
bazate
pe
ansambluri
ce
au
ca
scop
crearea

unui
clasificator
puternic
folosind
rezultatele
mai
multor
clasificatori
slabi.
Un
clasificator

slab
generează
rezultate
cu
acurate
ț
e
redusă,
dar,
prin
combinarea
adecvată
a
mai
multor
astfel

de clasificatori, eroarea de clasificare se poate reduce semnificativ.

Ca
ș
i
la
ID3
totul
începe
cu
o
etapă
de
antrenare
în
cadrul
căreia
un
clasificator
slab
se

aplică
în
repetate
rânduri
pe
un
set
de
date
de
antrenare
.
Fiecărei
instan
ț
e
i
se
asociază
o

pondere,
ini
ț
ial,
aceste
ponderi
fiind
egale.
În
cadrul
unei
itera
ț
ii
a
algoritmului
AdaBoost
se

determină
eroarea
clasificatorului
slab
ș
i
se
ajustează
ponderile
astfel
încât
instan
ț
ele

clasificate
gre
ș
it

aibă
ponderi
mai
mari.
Astfel,
la
următoarea
itera
ț
ie,
clasificatorul
slab
va

prioritiza instan
ț
ele cla sificate incorect, tendin
ț
a fiind de a reduce eroarea de clasificare.

Pentru
antrenarea
algoritmului
nostru
s-a
folosit
drept
clasificator
slab
un
arbore
de

decizie
un
un
singur
nivel
numit
Decision
Stump.
Acesta
din
urmă
va
genera
un
arbore
de

decizie
cu
un
singur
nod
în
care
se
va
regăsi
atributul
care
reu
ș
e
ș
te

diferen
ț
ieze
cel
mai

bine
setul
de
date.
Decision
Stump-ul
fiind
tot
un
arbore
de
decizie,
alegerea
atributului
din

nodul
rădăcina
s-a
făcut
în
acela
ș
i
mod
ca
ș
i
la
ID3
prin
alegerea
atributului
cu
entropia
cea

mai mică.

Prin
antrenarea
în
mod
repetat
a
algoritmului
AdaBoost
s-a
ob
ț
inut
o
combina
ț
ie

liniară
a
rezultatelor
individuale
ale
clasificatorilor
slabi
de
la
fiecare
itera
ț
ie,
ponderate
de

erorile
fiecărui
clasificator
slab
(coeficient
al
itera
ț
iei).
Ca
ș
i
în
cazul
algoritmului
ID3,

clasificatorul
slab
a
fost
extins
pentru
a
putea
lucra
ș
i
cu
valori
continue
ale
atributelor
pentru

a se plia cât mai bine pe setul de date utilizat pentru antrenare/testare.

După
antrenarea
algoritmului
în
5
itera
ț
ii
algoritmul
a
ales
următoarele
5
condi
ț
ii
care

se găsesc în rădăcină ca arbori de decizie pentru fiecare itera
ț
ie:

1

Is hemoglobin < 13.25?

15

2

Is specific gravity < 1.0175?,

3

Is packed cell volume < 47.5?

4

Is serum creatinine < 1.25?

5

Is serum creatinine >= 1.25?

Determinarea clasei pentru o instan
ț
ă de test
se realizează astfel:

x

(
x
)
i
g
n
(
h
(
x
)
)
H
=
s

T
t
=
1
α
t
t

unde

,
reprezintă
un
coeficient
al
itera
ț
iei
t,
iar
este
rezultatul
clasificării
instan
ț
ei

α
t

(
x
)
h
t

folosind
clasificatorul
slab
(se
va
verifica
dacă
pentru
itera
ț
ia
t
condi
ț
ia
din
arborele
de

x

decizie este adevărata sau falsa, iar valoarea lui
va fi 1 sau -1).
(
x
)

h
t

2.2.3 Re
ț
ea neuronală artificială

Domeniul
re
ț
elelor
neuronale
este
unul
foarte
activ
la
ora
actuală,
lucru
oarecum

surprinzător,
ț
inând co nt că unele idei legate de acest concept au o vechime de peste 60 de ani.

Re
ț
elele
neuro nale
artificiale
sunt
sisteme
de
procesare
a
informa
ț
iei
inspirate
din

sistemul
nervos
uman
(creierul
uman).
Sunt
compuse
din
unită
ț
i
simple
de
procesare

(neuroni),
interconectate
între
ele
ș
i
care
ac
ț
ionează
în
paralel.
Ponderile
legăturilor
dintre

neuroni
sunt
cele
care
memorează
informa
ț
ia
învă
ț
ată
de
re
ț
ea
.
Re
ț
eaua
înva
ț
ă
diferite

modele prin ajustarea acestor ponderi, conform unui algoritm.

16

Neuronul
biologic
se
activează
numai
dacă
semnalul
de
intrare
este
de
un
anumit
tip.

În

re
ț
ea
neuronală
artificială
acest
efect
este
simulat
aplicând
sumei
ponderate
a
intrărilor

(n)

o func
ț
ie de transfer (a ctivare)

f,

pentru a ob
ț
ine un date de ie
ș
ire.

În
cadrul
experimentelor
s-a
folosit
o
re
ț
ea
neuronală
artificială
formată
dintr-un

singur
nivel
de
neuroni
ce
va
returna
o
singura
valoare
date
de
ie
ș
ire
cu
valori
cuprinse
intre

0
ș
i 1.

Imagine 3. Structura re
ț
elei neuronale artificiale utilizate

Aici
p
este
un
vector,
în
cazul
nostru
date
de
intrare
care
reprezintă
un
set
de
analize

medicale
format
dintr-un
număr
de
24
de
valori
numerice,
iar

W
este
o
matrice
cu
s
linii
ș
i

r

coloane(

r

=24 iar

s

=3).

Pentru
antrenarea
re
ț
elei
s-a
plecat
de
la
două
matrici
(cu
24
de
linii
ș
i
3
de

W
1

coloane)
ș
i
(cu
3
de
linii
ș
i
o
coloana)
formate
din
valori
alese
aleatoriu.
a
fost

W
2

W
1

utilizată
pentru
valorile
date
de
intrare,
iar
pentru
datele
de
ie
ș
ire.
Func
ț
ia
de
activare

W
2

aleasă
a
fost
cea
sigmoid

care
la
intrare
poate
avea
orice
valoare
între
plus
ș
i
minus
infinit,
iar

răspunsul este în domeniul de la 0 la 1.

17

Calculele
necesare
ob
ț
inerii
unui
diagnostic
sunt
calcule
simple
de
apeluri
de
func
ț
ii
ș
i

de înmul
ț
iri de matrici :

z
2
=
p
*
W
1

(
z
)
a
2
=
f
2

z
3
=
a
2
*
W
2

,
(
z
)
y
=
f
3

unde
reprezinta func
ț
ia de activare folosită în cadrul antrenării re
ț
elei neuronale

f

În
cadrul
antrenării
s-a
folosit
tehnica
back-propagationin
în
cadrul
căreia
se

ini
ț
ializează
aleatoriu
toate
ponderile
dintre
neuroni
(
ș
i
)
ș
i
se
realizează
calculele

W
1

W
2

necesare
până
se
ajunge
la
nivelul
date
de
ie
ș
ire
în
care
vom
avea
o
valoare
corespunzătoare

unei
instan
ț
e.
Se
calcu lează
diferen
ț
a
fa
ț
ă
de
valoarea
corectă
care
trebuie
ob
ț
inută
ș
i
aceasta

este
propagată
înapoi
pe
penultimul
strat,
împăr
ț
ind
eroarea
în
mod
propor
ț
ional
fiecărui

neuron,
în
func
ț
ie
de
ponderea
avută.
Această
propagare
înapoi
se
repetă
până
se
ajunge
la

primul
strat
ș
i
apoi
se
calculează
noile
valori
ob
ț
inute.
Acest
ciclu
de
corectare
se
repetă
de

t

de ori pentru a reduce eroarea de clasificare.

Pe
parcursul
antrenării
ș
i
sunt
modificate,
iar
la
final
valorile
rezultate
vor
fi

W
1

W
2

folosite
la
clasificarea
unei
noi
instan
ț
e
prin
realizarea
calculelor
necesare
până
la
ob
ț
inerea

unui date de ie
ș
ire.

2.2.4 Colectarea informa
ț
iilor statistice

Colectarea
informa
ț
iilor

relativ
la
modul
de
func
ț
ionarea
al
algoritmilor
implementa
ț
i

pe
setul
de
date
construit
reprezintă
partea
cea
mai
importantă
din
întreaga
lucrare.
Pentru
a

putea
realiza
o
compara
ț
ie
între
cei
trei
algoritmi
avem
nevoie
de
date
referitoare
la
timpul
de

execu
ț
ie
ș
i
la
rata
de
eroare
a
acestora.
Aceste
informa
ț
ii
vor
oferi
o
privire
de
ansamblu

asupra
eficien
ț
ei
acesto r
algoritmi
ș
i
se
va
putea
realiza
o
ordonare
a
acestora
care
ne
va
spune

care
din
cei
trei
algoritmi
este
mai
potrivit
pentru
rezolvarea
problemei
diagnosticării

medicale.

18

Timpul
de
execu
ț
ie
s-a
calculat
în
func
ț
ie
de
durată
de
timp
în
care
algoritmii
ș
i-au

creat
modelul
de
clasificare
pe
un
set
de
date
de
antrenament
comun.
Aceste
informa
ț
ii
au
fost

colectate
pentru
intrări
cu
diferite
dimensiuni
sau
pentru
un
număr
diferit
de
itera
ț
ii.
Rata
de

eroare
a
algoritmilor
a
fost
calculată
în
func
ț
ie
de
numărul
de
instan
ț
e
clasificate
gre
ș
it
pentru

anumite
seturi
de
date
de
test
precum
ș
i
monotonia
erorii
în
func
ț
ie
de
numărul
de
itera
ț
ii

aplicat asupra unuia dintre algoritmi.

19

IV. Experimente

Ultima
etapă
necesară
rezolvării
problemei
diagnosticării
a
fost
cea
a
testării

proprietă
ț
ilor
algoritm ilor,
ș
i
anume
timpul
de
execu
ț
ie
necesar
învă
ț
ării
unui
model
de

clasificare
precum
ș
i
rata
de
eroare
a
acestuia.
Pentru
a
verifica
corectitudinea
algoritmilor
s-a

recurs
la
o
serie
de
clasificări
realizate
pe
un
set
de
10
instan
ț
e
de
test
care
au
fost
clasificate

de fiecare algoritm în parte, dar
ș
i de un medic specialist.

4.1 Timpul de răspuns

De
multe
ori,
pentru
rezolvarea
unei
probleme,
trebuie
ales
un
algoritm
optim
dintre
o

multitudine
de
al
ț
i
algoritmi,
ca
ș
i
în
cazul
de
fa
ț
ă,
două
criterii
principale
de
alegere
fiind

contradictorii:


algoritmul să fie simplu de în
ț
eles, de codificat
ș
i de depanat;


algoritmul

folosească
eficient
resursele
calculatorului,

aibă
un
timp
de
execu
ț
ie

redus.

Dacă
programul
trebuie
rulat
de
un
număr
mic
de
ori,
prima
cerin
ț
ă
este
mai

importantă;
în
această
situa
ț
ie,
timpul
de
punere
la
punct
a
programului
e
mai
important
decât

timpul lui de rulare, deci trebuie aleasă varianta cea mai simplă a programului.

Dacă
programul
urmează
a
fi
rulat
de
un
număr
mare
de
ori,
având
ș
i
un
număr
mare

de
date
de
prelucrat,
trebuie
ales
algoritmul
care
duce
la
o
execu
ț
ie
mai
rapida.
Chiar
în

aceasta
situa
ț
ie,
ar
trebui
implementat
mai
înainte
algoritmul
mai
simplu
ș
i
calculată

reducerea de timp de execu
ț
ie pe care ar aduce-o implementarea algoritmului complex.

Timpul de rulare al unui program depinde de următorii factori:


datele de intrare


calitatea codului generat de compilator

20


natura
ș
i viteza de execu
ț
ie a instruc
ț
iunilor programului


complexitatea algoritmului care stă la baza programului.

Deci,
timpul
de
rulare
e
influen
ț
at
de
volumul
de
date
primit
ca
date
de
intrare,
de
cele

mai multe ori,

depinzând de numărul de date, nu de valorile de la intrare

.

Având
la
dispozi
ț
ie
trei
algoritmi
complec
ș
i
care
sunt
antrena
ț
i
cu
ajutorul
unui
set
de

date
mare,
înclinăm
spre
alegerea
cel
mai
rapid
algoritm.
Însă
este
posibil
ca
rapid

nu

însemne
neapărat
corect
sau
optim
.
În
tabelul
de
mai
jos
se
găsesc
informa
ț
ii
despre
timpul

necesar
fiecărui
algoritm
utilizat
în
rezolvarea
problemei
pentru
antrenare
precum
ș
i
timpul

necesar clasificării unei instan
ț
e.

Algoritm

ID3

AdaBoost

Re
ț
ea neuronală

Timpul de execu
ț
ie în

secunde la antrenare

1.03597450256

8.48551249

0.6874566078

Timpul de execu
ț
ie în

secunde pentru

clasificarea unei

instan
ț
e

aproximativ 0.0

aproximativ 0.0

aproximativ 0.0

Tabel 1. Timpii de antrenare
ș
i clasificare

După
cum
se
poate
vedea
există
diferen
ț
e
destul
de
sesizabile
referitor
la
timpul
de

antrenare.
Se
poate
observa
faptul
ca
algoritmul
AdaBoost
este
cel
care
necesită
un
timp
de

antenare
mult
mai
mare
comparativ
cu
ceilal
ț
i
doi
algoritmi.
Acest
fapt
se
datorează

numărului
mare
de
reantrenări
ș
i
parti
ț
ionări
ale
setului
de
date
(30
de
itera
ț
ii
efectuate
în

momentul
calculării
timpului
de
execu
ț
ie).
Algoritmul
AdaBoost,
fiind
o
extensie
optimizată
a

algoritmului
ID3,
are
nevoie
de
generarea
a
30
de
arbori
de
decizie
pentru
a
putea
ajunge
la
o

decizie
(acest
lucru
se
realizează
în
func
ț
ie
de
numărul
de
itera
ț
ii
primite
de
algoritm)
pe
când

ID3
se
rulează
doar
o
dată.
Singura
diferen
ț
a
între
ace
ș
tia
este
aceea

ID3
generează
un

arbore
cu
mai
multe
nivele
pe
când
AdaBoostul
generează
de
un
număr
fixat
de
ori
un
arbore

cu un singur nivel.

21

Antrenarea
unei
re
ț
ele
neuronale
este
cea
mai
rapidă
metodă
de
rezolvare
a
problemei

prezentate
în
cadru
lucrării,
însă
acest
lucru
nu
înseamnă

este
ș
i
cea
mai
bună
solu
ț
ie.
Vom

vedea
într-o
sec
ț
iune
ulterioara
care
este
motivul
pentru
care
rapid
nu
înseamnă
neapărat
ș
i

corect.

Timpul
reprezintă
un
factor
important
atât
în
domeniul
IT
cât
ș
i
în
cel
medical.
În

domeniul
medical
este
important
timpul
de
efectuare
al
manevrelor,
însă
într-o
măsura
mai

mică în compara
ț
ie cu precizia cu care sunt realizate acestea.

4.2 Rata de eroare ca factor decisiv în luarea unei decizii asupra

găsirii solu
ț
iei

În
cadrul
comparării
eficientei
algoritmilor
s-a
folosit
no
ț
iunea
de
rata
de
eroare
care

reprezinta
numărul
de
instan
ț
e
clasificate
gre
ș
it.
Rata
de
eroare
a
algoritmilor
de
clasificare
a

fost calculată după următoarea formula:

e
r
r
o
r
n
=
n
r

d
e

t
o
t
a
l

d
e

i
n
s
t
a
n
ț
e
n
r

d
e

i
n
s
t
a
n
ț
e

c
l
a
s
i
f
i
c
a
t
e

g
r
e
s
i
t

Rata
de
eroare
a
fost
folosită
cu
scopul
de
a
verifica
cât
de
corect
clasifica
algoritmii

diferite
seturi
de
date.
Acest
lucru
a
ajutat
la
construirea
unei
imagini
de
ansamblu
asupra

corectitudinii
algoritmilor
ș
i
a
eficien
ț
ei
acestora.
În
următoar ele
tabele
se
poate
observa
cum

oscilează
rata
de
eroare
în
func
ț
ie
de
mediul
de
testare.
În
Tabelul
2,
sunt
prezentate
rezultate

ob
ț
inute
în
urma
calcu lării
erorii
la
antrenare
a
algoritmilor.
Eroare
la
antrenare
se
calculează

după
antrenarea
algoritmului
ș
i
se
verifică
câte
instan
ț
e
dintre
cele
utilizate
la
antrenare
sunt

clasificate gre
ș
it.

Algoritm

ID3

AdaBoost(30 itera
ț
ii)

Re
ț
ea neuronală

Eroare la antrenare

0.0

0.00476190

0.090223

Tabel 2. Rate de eroare la antrenare

22

După
cum
se
poate
observa
eroare
cea
mai
mică
la
antrenare
se
ob
ț
ine
pentru

algoritmul
ID3,
acesta
având
o
eroare
la
antrenare
egală
cu
0.
Acest
lucru
se
datorează

fenomenului
de

overfitting

care
apare
atunci
când
în
urma
antrenării
unui
algoritm
rezultă
un

model
extrem
de
complex,
cu
prea
mul
ț
i
parametri.
Model
suprasolicitat
este
inexact,

deoarece
se
pliază
mult
prea
tare
pe
datele
de
antrenament,
iar
în
cazul
testării
pe
un
alt
set
de

date
eroarea
la
testare
va
fi
mult
mai
mare.
În
cazul
algoritmului
AdaBoost,
se
poate
observa

faptul

este
eliminat
fenomenul
de

overfitting
într-o
oarecare
măsura.
Pentru
re
ț
eaua

neuronală,
chiar
dacă
este
cel
mai
rapid
algoritm,
se
pare
ca
în
urma
antrenării
rezultă
cea
mai

mare
eroare.
La
începerea
experimentelor
am
presupus

re
ț
eaua
neuronală
va
fi
cel
mai

potrivit
algoritm
pentru
rezolvarea
problemei
de
diagnosticare,
însă
după
execu
ț
ia

experimentelor s-a dovedit ca presupunerea ini
ț
ială nu se aplică
ș
i în cazul de fa
ț
ă.

Algoritm

ID3

AdaBoost(30 itera
ț
ii)

Re
ț
ea neuronală

Eroarea la testare

0.042105

0.0210526

0.086491585958

Tabel 3. Rata de eroare la testare

Tabelul
3
con
ț
ine
rata
de
eroare
ob
ț
inută
în
urma
testării
fiecărui
algoritm
cu
un
set
de

date
diferit
de
cel
utilizat
la
antrenare.
În
acest
caz,
algoritmul
cu
rata
de
eroare
cea
mai
mică

este
AdaBoost,
chiar
ș
i
ID3
având
o
rata
de
eroare
mult
mai
mica
decât
cea
a
re
ț
elei

neuronale.
Acest
lucru
se
datorează
setului
de
date
utilizat
atât
la
testare
cât
ș
i
la
antrenare.

Setul
de
date
este
format
atât
din
valori
nominale
cat
ș
i
din
valori
numerice.
Este
posibil
ca

acestă combina
ț
ie de v alori să pună în dificultate antrenarea re
ț
elei.

Folosindu-ne
faptului

atât
algoritmul
Adaboost
cât
ș
i
re
ț
eaua
neuronală
înva
ț
ă
propriul

model
de
clasificare
după
un
număr
fixat
de
itera
ț
ii
s-au
realizat
o
serie
de
grafice
care
descriu

tendin
ț
a erorii la antren are în func
ț
ie de numărul de itera
ț
ii.

23

Imaginea 4. Grafic eroare la antrenare pentru AdaBoost

În
cazul
algoritmului
AdaBoost
se
poate
observa
faptul

un
număr
mic
de
itera
ț
ii

aduce
după
sine
ș
i
o
rata
de
eroare
mai
mare.
Se
cunoa
ș
te
faptul
ca
algoritmul
AdaBoost
poate

selecta
de
mai
multe
ori
aceea
ș
i
ipoteza
“slabă”
(însă,
niciodată
la
itera
ț
ii
consecutive)
acest

lucru
va
întări
încrederea
în
ipoteza
slaba
ș
i
va
duce
la
mic
ș
orarea
erorii.
Descre
ș
terea
erorii

nu
este
una
constantă,
în
grafic
se
pot
observa
mai
multe
por
ț
iuni
în
care
aceasta
scade,
iar

mai
apoi,
la
următoarea
itera
ț
ie,
cre
ș
te.
Acest
fapt
se
datorează
faptului
ca
la
fiecare
itera
ț
ie
se

alege
ipoteza
cu
cea
mai
mică
eroarea
la
acel
moment,
existând
posibilitatea
ca
la
pasul

următor
ipoteza
aleasa
ca
compas
de
decizie
sa
aibă
o
eroare
mai
mică
sau
chiar
mai
mare

decât cea anterioară.

24

Imaginea 5. Grafic eroare la antrenare pentru re
ț
eaua neuronală

Graficul
ob
ț
inut
în
urma
antrenării
re
ț
elei
neuronale
are
o
descre
ș
tere
aproximativ

continuă,
ceea
ce
scoate
în
eviden
ț
ă
faptul

rata
de
eroare
scade
odată
cu
cre
ș
terea

numărului
de
itera
ț
ii
din
cadrul
antrenării
re
ț
elei.
Pentru
un
număr
mai
mare
de
2000
de

itera
ț
ii
se
poate
observ a
faptul

rata
de
eroare
scade
destul
de
pu
ț
in.
Acest
lucru
ne
ajută
în

alegerea
numărului
de
itera
ț
ii
necesare
antrenării
re
ț
elei
neuronale,
astfel
încât

ob
ț
inem
o

combina
ț
ie
cât
mai
bună
între
timpul
de
execu
ț
ie
ș
i
rata
de
eroare.
Vom
putea
utiliza
astfel,
un

algoritm
eficient
atât
din
punct
de
vedere
al
timpului
de
execu
ț
ie
cât
din
punct
de
vedere
al

corectitudinii.

4.3 Inteligen
ț
a umană vs inteligen
ț
a artificială

În
subsec
ț
iunile
anterioare
din
cadrul
capitolului
de
experimente
s-a
urmărit

compararea
algoritmilor
din
punctul
de
vedere
al
timpului
de
execu
ț
ie,
dar
ș
i
al
preciziei
de

clasificare.
Însă,
în
luarea
unei
decizii
asupra
alegerii
celui
mai
potrivit
algoritm
pentru

rezolvarea
problemei
de
diagnosticare
nu
poate
fi
luat
în
calcul
doar
diagnosticul
oferit
de
un

25

algoritm.
În
dezvoltarea
unui
mecanism
de
diagnosticare
un
factor
foarte
important
îl

reprezintă
ș
i
verificar ea
corectitudinii
algoritmilor
prin
compararea
rezultatelor
ob
ț
inute
de

ace
ș
tia cu diagnosticel e oferite de către un medic specialist.

Setul
de
date
utilizat
în
cadrul
acestui
experiment
a
fost
format
din
zece
instan
ț
e
dintre

care
cinci
clasificate
pozitiv(
pacientul
suferă
de
o
boala
cronică
la
nivelul
rinichilor)
ș
i
cinci

clasificate negativ(pacientul nu suferă de o boala cronică la nivelul rinichilor).

S-a
solicitat
ajutorul
unui
medic
specialist,
care
pe
baza
setului
de
date
a
oferit
lista
cu

diagnosticele
corespunzătoare
fiecărei
instan
ț
e.
Acela
ș
i
set
de
date
a
fost
clasificat
ș
i
cu

ajutorul
celor
trei
algoritmi
iar
în
Tabelul
4
se
găsesc
rezultate
ob
ț
inute
în
urma
clasificării
ș
i

numărul de erori care apar.

Metoda de clasificare

Set

1

Set

2

Set

3

Set

4

Set

5

Set

6

Set

7

Set

8

Set

9

Set

10

Nr.

erori

ID3

1

1

1

1

1

0

0

0

0

0

0

AdaBoost

0

1

1

1

1

0

0

0

0

0

1

Re
ț
ea neuronală

1

1

1

0

1

0

0

0

0

0

1

Medic specialist

1

1

1

1

1

0

0

0

0

0

Tabelul 4. Diagnosticarea a zece instan
ț
e comune

Clasificarea
oferită
de
algoritmul
ID3
nu
con
ț
ine
erori
însă
acest
lucru
se
datorează

prezen
ț
ei
fenomenulu i
de

overfitting,

deoarece
ob
ț
inem
un
arbore
complex
care
se
pliază

suficient
de
mult
pe
setul
de
date
utilizat
în
cadrul
experimentului.
În
ceea
ce
prive
ș
te
ceilal
ț
i

doi algoritmi ace
ș
tia cl asifica gre
ș
it o singură instan
ț
ă.

26

4.4 Interpretarea rezultatelor

În
sec
ț
iunea
anterioară
au
fost
prezentate
experimentele
realizate
cu
scopul
rezolvării

problemei
prezentate
în
primul
capitol.
Scopul
experimentelor
a
fost
acela
de
a
compara

algoritmii
ș
i de a-l aleg e pe cel mai bun dintre ei.

Din
primul
experiment
reiese
clar

antrenarea
unei
re
ț
ele
neuronale
este
una
din
cele

mai
bune
solu
ț
ii
pentr u
rezolvarea
problemei
diagnosticării
medicale.
Re
ț
eaua
neuronală
are

un
timp
de
antrenare
relativ
mic,
fa
ț
ă
de
celelalte
însă
rata
de
eroare
la
testare
este
mult
mai

care decât în cazul celorlal
ț
i algoritmi de clasificare.

În
ceea
ce
prive
ș
te
ID3-ul
ș
i
Adaboost-ul,
cel
din
urmă
este
mai
precis
decât
ID3,
dar

timpul
de
antrenare
este
mult
mai
mare.
Astfel,
rapiditatea
oferită
de
ID3
este
înlocuită
cu

precizia oferită de extensia acestuia în cadrul algoritmului AdaBoost.

Concluzia
care
reiese
din
analiza
rezultatelor
experimentelor
este
aceea
ca
algoritmul

AdaBoost
este
cel
mai
potrivit
pentru
dezvoltarea
unui
sistem
de
diagnosticare
medicala,

deoarece
el
se
comporta
cel
mai
bine
pe
setul
de
date
utilizat
în
cadrul
experimentelor.
Chiar

dacă
necesita
un
timp
mai
mare
la
antrenare,
precizia
cu
care
este
oferit
un
diagnostic
este
cel

ma important factor în rezolvarea problemei de diagnosticare.

27

V. Concluzii

Diagnosticarea
medicală
reprezintă
o
categorie
de
teste
medicale
destinate
detectării

infec
ț
iilor
sau
a
afec
ț
iunilor
de
care
suferă
un
pacient.
Învă
ț
area
automată
joacă
un
rol
foarte

important în evolu
ț
ia diagnosticării medicale.

În
prezent
diagnosticarea
medicală
de
cele
mai
multe
ori
se
realizează
printr-o
vizita
la

medicul
specialist
care
pe
baza
unor
analize
medicale
oferă
un
diagnostic.
În
ultimii
ani,
au

apărut
o
serie
de
inova
ț
ii
ș
i
dispozitive
electronice
cu
scopul
de
a
facilita
munca
medicilor
în

diagnosticare mai rapidă a diferitelor afec
ț
iuni.

Necesitatea
permanentă
de
a
îmbunătă
ț
i
sistemul
medical
a
ajutat
la
dezvoltarea
de
noi

sisteme
inteligente
mult
mai
precise
ș
i
mai
sigure.
În
spatele
unor
astfel
de
sisteme
inteligente

capabile

ofere
un
diagnostic
stau
o
serie
de
cercetări
ș
i
experimente
care
au
drept
scop

alegerea
celor
mai
preci
ș
i
algoritmi
de
învă
ț
are
automată.
Precizia
algoritmului
ales
în
cadrul

sistemului de diagnosticare este cea mai importantă parte din cadrul dezvoltării sistemului.

Studiul
realizat
asupra
eficien
ț
ei
algoritmilor
de
clasificare
a
reprezentat
nucleul

lucrării
de
fa
ț
ă.
Pentru
a
oferi
o
solu
ț
ie
pentru
problema
diagn osticării
medicale
m-am
axat
pe

compararea
eficien
ț
ei
a
trei
algoritmi
de
clasificare(ID3,
AdaBoost
ș
i
o
re
ț
ea
neuronală

artificială).

În
urma
experimentelor
făcute
s-a
ajuns
la
concluzia

utilizarea
algoritmului

AdaBoost în cadrul rezolvării problemei reprezintă una cele mai potrivite solu
ț
ii.

În
cadrul
lucrării
s-au
studiat
comportamentul
a
trei
algoritmi
de
învă
ț
are
automată.
Pe

viitor
se
dore
ș
te
imple mentarea
ș
i
realizarea
experimentelor
ș
i
pe
al
ț
i
algoritmi
de
clasificare.

Este
posibil

al
ț
i
algoritmi
sa
fie
mult
mai
eficien
ț
i
decât
algoritmul
AdaBoost.
Continuarea

cercetărilor
vor
duce
la
colectarea
de
noi
informa
ț
ii
despre
modul
în
care
se
comporta
ș
i
al
ț
i

algoritmi de învă
ț
are a utomată pe setul de date de care am dispus.

Ca
o
alta
îmbunătă
ț
ire
se
mai
poate
lua
în
considerare
ș
i
modificarea
algoritmilor

pentru
a
putea
fi
capabili

lucreze
ș
i
cu
alt
tip
de
date.
Pe
lângă,
oferirea
de
diagnostice

28

pentru
o
boală
cronică
la
nivelul
rinichilor,
se
pot
antrena
algoritmii
ș
i
pentru
alte
boli
dacă
se

dispune de un alt set de date suficient de complet
ș
i corect.

Consider

domeniul
medical
are
cea
mai
mare
nevoie
de
implicarea
speciali
ș
tilor
IT

pentru
dezvoltarea
de
sisteme
capabile

ajute
sau

asiste
medicii
în
diferite
situa
ț
ii,
iar

sistemele
pentru
diagnosticare
medicala
reprezintă
următorul
pas
în
evolu
ț
ia
către
un
sistem

medical
în
care
oferirea
de
diagnostice

poată
fi
realizată
de
către
un
sistem
inteligent
care

poate învă
ț
a din experi mente anterioare.

29

Bibliografie

1.
Liviu Ciortuz “Exerci
ț
ii de învă
ț
are automată”,

Editura Universității "Alexandru Ioan

Cuza, 2015

2.
Adrian A. Hopgood (2001), Intelligent system for engineers and scientists, ed.CRP

Press, New York

3.
Tom M. Mitchell- Instance based learning, ed. McGraw-Hill

Science/Engineering/Math, 1997

4.
Florin Leon (2012), Inteligenta atificiala: rationament probabilistic, tehnici de

clasificare, ed Tehnopress, Iasi

5.
Narin Emeksiz Havelsan, Ankara Turke, Application of Machine Learning Techniques

to Differential Diagnosis of Erythemato-Squamous Diseases

6.
Repository :

https://archive.ics.uci.edu/ml/datasets/chronic_kidney_disease

7.
Witten Ian & Frank Eibe- “Data Mining- Practical machine learning tools and

techniques”, editia 2, 2005, ed Elsevier Inc, San Francisco pg-12, 76-79

8.
Tom M. Mitchell- “Machine Learning”,ed. McGraw Hill, 1997

9.
Mitchell, T. M. (2006). The Discipline of Machine Learning. Machine Learning

Department technical report CMU-ML-06-108, Carnegie Mellon University.

10.
Gurney, K.: An introduction to neural networks, UCL Press (1997)

11.
McAllester, D., ”Neural Networks. Backpropagation. General Gradient

Descent”(2007)

12.
Breiman, L. (1984). Classification and Regression Trees. New York: Routledge

30

13.
The Python Tutorial:

https://docs.python.org/3/tutorial/

14.
Numpy Documentation:

https://docs.scipy.org/doc/_static/numpybook.pdf

15.
Matplotlib Documentation:

https://matplotlib.org

16.
GitHub repository:

https://github.com/CretuAndraElena/Medical-Diagnosis

17.
Google Drive folder:

https://drive.google.com/open?id=1m6Ai1TE9cIK7b8nKQga2L_r_BHdCe7tS

18.


A review of classification algorithms for EEG-based brain–computer interfaces

F.Lotte1, M Congedo2, A Lécuyer1, F Lamarche1 and B Arnaldi1Published 31

January 2007 • 2007 IOP Publishing Ltd,

Journal of Neural Engineering

,

Volume 4

,

Number 2

19.


Machine Learning for Medical Diagnostics

“: https://www.techemergence.com

20.
“Principles of Data Mining”

,

Drug Safety, 2007, Volume 30, Number 7, Page 621,

David J. Hand

21.


Artificial intelligence in medical diagnosis.



Department of Electrical Engineering

and Computer Science, Massachusetts Institute of Technology, Cambridge

22.


Machine learning for medical diagnosis: history, state of the art and perspective.

Faculty of Computer and Information Science, University of Ljubljana, Trzaska 25,

1001, Ljubljana, Slovenia

21.“

The future of medical diagnostics: review paper.

” Head and Neck Optical

Diagnostics Society Council, International Society of Minimally Invasive Diagnostics,

University College London, London, UK.

22.”

Medical diagnostic decision support systems–past, present, and future: a threaded

bibliography and brief commentary.

“ University of Pittsburgh, Medical Informatics

Section, PA 15261, USA.

31

Apendix

1.
Tehnologiile utilizate

Limbajul
de
programare
utilizat
în
cadrul
implementării
algoritmilor
a
fost

Python

.

Acesta
este
un
limbaj
de
programare
dinamic
ș
i
multifunc
ț
ional,
care
pune
accentul
pe

cură
ț
enia
ș
i
simplitatea
codului
ș
i
le
permite
utilizatorilor

realizeze
sarcini
complexe
într-o

manieră
clară
ș
i
conci să.
Faptul

este
u
ș
or
de
învă
ț
at
ș
i
utilizat
face
ca
acesta

poată
fi

folosit
de
anali
ș
ti
de
date
din
orice
domeniu
pentru
a-
ș
i
u
ș
ura
munca
ș
i
a
ob
ț
ine
rezultate

remarcabile
într-un
timp
scurt.
Suita
de
bibliotecile
scrise
pentru
el
este
extrem
de
folositoare

în
implementarea
de
la
zero
a
algoritmilor
de
învă
ț
are
automată.
Chiar
dacă
exista
o
serie
de

biblioteci
special
create
pentru
lucrul
cu
algoritmi
de
învă
ț
are
automată
la
implementarea

celor trei algoritmi studia
ț
i s-au folosit doar următoarele biblioteci:


numpy

Numpy
este
biblioteca
de
bază
pentru
computerele
ș
tiin
ț
ifice
din
Python.
Acesta
oferă

un
obiect
multidimensional
de
înaltă
performan
ț
ă
ș
i
instrumente
pentru
lucrul
cu
aceste

tablouri.
Biblioteca
a
fost
utilizata
pentru
a
lucra
cu
tablouri
de
mari
dimensiuni.
Oferă

nenumărate
func
ț
ional ită
ț
i
care
calculează
rapid
înmul
ț
irea
a
doua
tablouri,
transpusa
unei

matrici sau extragerea minimului sau maximului dintr-un tablou.


matplotlib:

Matplotlib
este
probabil
cel
mai
folosit
pachet
Python
pentru
grafica
2D.
Acesta
oferă

o
modalitate
foarte
rapidă
de
a
vizualiza
date
din
Python.
Din
cadrul
bibliotecii
s-a
folosit

modulul
pyplot
cu
ajutorul
căruia
au
fost
realizate
graficele
pentru
vizualizarea
monotoniei

erorii la antrenare a algoritmilor.


csv:

Modulul
CSV
este
util
pentru
lucrul
cu
datele
exportate
din
foi
de
calcul
ș
i
baze
de

date
în
fi
ș
iere
text
form atate
cu
câmpuri
ș
i
înregistrări,
denumite
în
mod
obi
ș
nuit
formatul
de

32

valoare
separată
prin
virgulă
(CSV),
deoarece
deseori
se
utilizează
virgule
pentru
separarea

câmpurilor
într-o
înregistrare.
A
fost
utilizat
pentru
a
lucra
cu
seturile
de
date.
Având
la

dispozi
ț
ie
un
număr
mare
de
instan
ț
e,
pentru
memorarea
acestora
s-au
folosit
fi
ș
iere

.cvs

pentru a putea construi mult mai u
ș
or tablourile cu instan
ț
e de antrenament
ș
i test.

2.
Setul de date

Setul
de
date
a
fost
preluat
din
baza
de
date
a
site-ul
UCI
Machine
Learning
[6].

Acesta
con
ț
ine
un
număr
de
400
de
instan
ț
e.

Fiecare
instan
ț
ă
con
ț
ine
24
de
atribute
specifice

ș
i
un
atribut
destinat
clasei
din
care
face
parte.
O
mostră
din
datele
examinate
este
ilustrată
în

Imaginea 1 din cadrul capitolului III, sec
ț
iunea 2.1.

Nume camp

Tip

Unitatea de masura/Valori

nominale

Age

numeric

ani

Blood Pressure

numeric

mm/Hg

Specific Gravity

nominal

1.005,1.010,1.015,1.020,1.025

Albumin

nominal

0,1,2,3,4,5

Sugar

nominal

0,1,2,3,4,5

Red Blood Cells

nominal

normal,abnormal

Pus Cell

nominal

normal,abnormal

Bacteria

nominal

present,notpresent

Blood Glucose Random

numeric

mgs/dl

Blood Urea

numeric

mgs/dl

Serum Creatinine

numeric

mgs/dl

Sodium

numeric

mEq/L

Potassium

numeric

mEq/L

Hemoglobin

numeric

gms

Packed Cell Volume

numeric

White Blood Cell Count

numeric

cells/cumm

Red Blood Cell Count

numeric

millions/cmm

Hypertension

nominal

yes,no

33

Diabetes Mellitus

nominal

yes,no

Coronary Artery Disease

nominal

yes,no

Appetite

nominal

good,poor

Pedal Edema

nominal

yes,no

Anemia

nominal

yes,no

Class(diagnostic)

nominal

ckd,notckd

Tabel 5: Prezentarea atributelor setului de date

3.
Eficienta

În urma experimentelor am colectionat o serie de date referitoare la eficienta

algoritmilor
ș
i au fost p rezentate în tabelele de la capitolul trei. Mai jos sunt atasate imagini cu

rezultate obtinute de algoritmi la momentul rularii acestora.

Imagine 6: Rularea algoritm AdaBoost

Imagine 7: Rularea algoritm ID3

34

Imagine 8: Rularea algoritm re
ț
ea neuronala

35

Similar Posts