61
UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ SPECIALIZAREA INFORMATICĂ LUCRARE DE DIPLOMǍ Conducător ştiinţific Prof. univ. dr. Czibula Gabriela Absolvent Morariu Alina Bianca 2013

LUCRARE DE DIPLOMǍ - cs.ubbcluj.rogabis/DocDiplome/InstanceBasedL/Morariu Alina... · LUCRARE DE DIPLOM Ǎ Tehnici de ... Figura 1. Diagrama unei probleme de învăţare. Sursa:

Embed Size (px)

Citation preview

UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA

FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

SPECIALIZAREA INFORMATICĂ

LUCRARE DE DIPLOMǍ

Conducător ştiinţific

Prof. univ. dr. Czibula Gabriela

Absolvent

Morariu Alina Bianca

2013

UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA

FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

SPECIALIZAREA INFORMATICĂ

LUCRARE DE DIPLOMǍ

Tehnici de clasificare în diagnosticarea

medicală

Conducător ştiinţific

Prof. univ. dr. Czibula Gabriela

Absolvent

Morariu Alina Bianca

2013

CUPRINS

INTRODUCERE ………….........……………………………………..1

1. Învăţare automată .................…………………………………………3

1.1 Aspecte generale ....……………………………………………3

1.2 Taxonomia învăţării automate ...................……………………8

1.3 Voting feature interval .........…………………………………12

2. Învăţare bazată pe instanţe ..............…………………………………13

2.1 Reprezentarea învăţării bazate pe instanţe .......................……13

2.2 K-Nearest Neighbors .........…………………………………18

2.3 Weighted Nearest Neighbor ..................……………………21

3. Tehnici de clasificare în diagnosticarea medicală ..........……………24

3.1 Importanţa sistemelor inteligente în diagnosticarea medicală..24

3.2 Modelul unui sistem inteligent ........…………………………26

3.3 Exemple reprezentative ..........,………………………………28

4. Aplicaţia practică ............................................................……………31

4.1 Descrierea problemei şi abordări existente în literatură ..........31

4.2 Aplicaţia ...................................................................................35

4.2.1 Analiza şi proiectare ....................................................35

4.2.2 Implementare ...............................................................45

4.2.3 Manual de utilizare ......................................................51

4.3 Rezultate comparative .................……………………………52

4.4 Extinderi posibile ....................………………………………54

CONCLUZII .........................................................................................56

BIBLIOGRAFIE ...................................................................................57

1

INTRODUCERE

Diagnosticarea este o etapă a actului medical care permite identificarea naturii şi cauzei afecţiunii

de care suferă un pacient. În unele situaţii, precum şi cazul bolilor de piele, acest proces este

îngreunat de similitudinea simptomelor şi de caracteristici specifice altor boli în diferite momente

ale afecţiunii.

Scopul proiectului este de a demonstra necesitatea asistării doctorilor de către sistemele

inteligente. Din cauza numărului mare de informaţii, a erorii umane şi a dificulaţii ridicate a

procesului de diagnosticare în anumite situtatii, aceste sisteme pot fi mai precise şi mai rapide

decât cadrele medicale.

Studiul de caz urmăreşte realizarea unui sistem inteligent, sub forma unui instrument vizual, care

să ajute dermatologii la determinare exactă a tipului de boală erythemato-squamous. Se urmăreşte

catalogarea pacientului într-una din cele şase categorii: psoriasis, seboreic dermatitis, lichen

planus, pityriasis rosea, cronic dermatitis şi pityriasis rubra pilaris.

Pentru realizarea obiectivului se folosesc trei algoritim de clasificare K-Nearest Neighbor (cel

mai apropiat vecin de distanta K), Distance Weighted Nearest Neighbor şi Voting Feature

Intervals. Pe baza unui set de date existent, aplicaţia permite catalogarea unui nou pacient oferind

un diagnostic şi o explicaţie a deciziei luate. Lucrare conţine şi o comparaţie şi o analiză a

rezultatelor obţinute.

Setul de date este preluat din baza de date de pe site-ul UCI Machine Learning

(http://archive.ics.uci.edu/ml). O înregistrare are 34 de caracteristici, fiecare pacient fiind evaluat

cu 12 atribute clinice şi 22 atribute histopatologice (valoarea acestora este obţinută prin analiza

microscopică a ţesutului).

Pe baza acestui set de date cei trei algoritmi şi-au dezvoltat propria schemă de clasificare. Aşadar,

pentru diagnosticarea unui pacient, fiecare clasificator dă un diagnostic şi rezultatele sunt

prezentate utilizatorului, împreună cu explicaţiile corespunzatoare.

2

Partea practică a lucrării este o aplicaţie având o interfata grafică care permite doctorilor

gestiunea pacienţilor şi a fişelor lor medicale, un istoric al consultaţiilor şi posibilitatea

diagnosticării cu ajutorul celor trei clasificatori. Aplicaţia conţine şi o bază de date pentru

salvarea tututor datelor.

Primul capitol al lucrării oferă o perspectivă de ansamblu asupra învăţării automate, iar al doilea

se axează pe o categorie particulară, învăţarea bazată pe instanţe. Aici sunt prezentaţi şi algoritmii

KNN şi DWNN. Capitolul trei urmăreşte evoluţia diagnosticării în medicină accentuând

importanţa sistemelor inteligente în acest domeniu, arată modelul unui sistem inteligent, iar

partea finală a acestui capitol descris cele mai reprezentative exemple de aplicaţii. Ultimul capitol

este un studiu de caz asupra diagnosticarii bolilor de piele, prezentând rezultatele utilizării

algoritmilor de clasificare K-Nearest Neighbor (cel mai apropiat vecin de distanta K), Weighted

Distance Nearest Neighbor şi VFI în aplicaţia practică. Secţiunea finală reprezintă concluziile

desprinse din lucrare.

3

CAPITOLUL 1

Învăţare automată

1.1 Aspecte generale

Capacitatea de a învăţa reprezintă o caracteristică centrală a inteligenţei, motiv pentru care devine

o preocupere importantă atât pentru psihologia cognitivă cât şi pentru inteligenţa artificială.

Domeniul învăţării automate, care întrepătrunde aceste disciplini, studiază procesul

computaţional care marchează învăţarea umană, cât şi automată.

Deşi au o identitate separată, există două aspecte principale pentru care învăţarea automată este o

parte integrală a acestor domenii mari. În primul rând, cercetatorii nu pot ignora problemele

legate de reprezentarea cunoştinţelor, organizarea memoriei şi performanţa, acestea fiind

preocupări majore pentru ambele domenii. În al doilea rând, învăţarea are loc în orice domeniu

care necesiţă inteligenţă, fie că sarcinile de bază implică diagnosticarea, planificarea, limbajul

natural sau altceva. Astfel, învăţarea automată poate fi privită mai puţin ca un subdomeniu al

Inteligenţei Artificiale şi al ştiinţelor cognitive, şi mai mult ca o paradigma pentru cercetare şi

dezvoltare.

Interesul pentru abordarea inteligenţei din punct de vedere computaţional apare o data cu

începuturile inteligenţei artificiale, la mijlocul anilor 1950. Diversitatea problemelor atinge

subiecte precum rezolvarea jocurilor, recunoaşterea literelor, concepte abstracte şi memoria

verbală. Învăţarea era privită ca o trăsătură definitorie a sistemelor inteligente, iar îmbunătăţirea

acesteia era în strânsă legătură cu dezvoltarea mecanismelor generale pentru cunoaştere,

percepţie şi acţiune.

Puncte istorice

În anii 1960, cercetătorii IA au realizat importanţa cunoaşterii specializate a unui domeniu,

apărând astfel primele sisteme intensive în cunoştinţe. Totuşi, oamenii de ştiinţă şi-au concentrat

atenţia în continuare pe metode generale, independente de vre-un domeniu şi cu aplicaţii pe cele

4

perceptibile. În final, recunoaşterea şabloanelor şi inteligenţa artificială s-au dezvoltat în două

branşe separate. Diferenţele s-au accentuat şi mai mult, pe măsură ce cercetătorii în recunoaşterea

tiparelor au subliniat importanţa algoritmilor şi a metodelor numerice care erau în contrast cu

euristicile şi metodele simbolice asociate paradigmelor de IA.

În această perioadă, cercetătorii IA evitau discuţiile legate de învăţare, în timp ce încercau să

înţeleagă rolul cunoştinţelor în comportamentul inteligent. Această eră era dominată de studii

asupra reprezentării cunoştinţelor, a limbajului natural şi a sistemelor expert. Cu toate acestea, pe

fundal au continuat şi studiile având la bază inteligenţa, manifestate prin reprezentări şi metode

euristice care au devenit punctul central al inteligenţei artificiale.

Anii 1970 aduc un interes crescut în domeniul învăţării automate, având ca motivaţie atât

frustrarea datorată accentului pus pe sistemele expert, orientate pe domenii specifice, în ciuda

faptului că învăţarea însemna întoarcerea la principiile generale, cât şi entuziasmul automatizării

acestor cunoştinţe legate de un anumit câmp, precum şi speranţa modelării gândirii umane. Se

propun multe metode noi şi se reînoieşte interesul asupra reţelelor neuronale, aducând din nou în

atenţie tehnici care au fost abandonate în anii anteriori.

Învăţarea automată se extinde în anii 1980 pe domeniile de planificare, diagnosticare, control şi

modelare. Oamenii de ştiinţă devin mai serioşi în ce priveşte potenţialul algoritmilor de învăţare

în rezolvarea problemelor din lumea reală, iar numarul aplicaţiilor de succes demonstrează că

aceste tehnologii pot avea impact asupra industriei. De asemenea, meotodologia îşi formează o

bază din ce în ce mai solidă, experimentele sistematice pe baze de date şi analizele teoretice

precise devenind o normă şi nu o excepţie.

Primul workshop despre învăţarea automată a avut loc la Universitatea Carnegie Mellon în anul

1980 şi a avut doar 30 de participanţi. Domeniul a cunoscut o creştere rapidă, apărând cărţi pe

subiecte generale şi specializate, jurnale, articole şi conferinţe anuale cu un număr mai mare de

participanţi de la an la an.

5

Învaţarea

O definiţie clară, neambiguuă pentru învăţare nu se poate formula astfel încât să surprindă toată

complexitatea conceptului. Conform dicţionarului, învăţarea poate fi definită ca procesul de

dobândire a cunoştinţelor prin studiu, experienţă sau educare; dobândirea conştiinţei prin

informaţie sau observaţie; angajamentul memoriei. Aceste definiţii au mai multe neajunsuri, fiind

imposibil de testat dacă învăţarea a fost dobândită.

Totuşi, o definiţie practică, cu ajutorul căreia să pastrăm subiectul sub studiu, este următoarea:

“Învăţarea este îmbunătăţirea performanţei într-un mediu prin achiziţionarea cunoştinţelor

rezultate din experienţa obţinută în acel domeniu”. Astfel, obiectele învaţă când sunt capabile să-

şi schimbe comportamentul astfel încât să aibă o execuţie mai performantă în viitor.1

Scopul învăţării automate

Deşi învăţarea automată are la bază preocuparea pentru învăţare, literatura de specialitatea

prezintă patru scopuri explicite, de bază, fiecare cu propriile metodologii, abordări de evaluare şi

poveşti de succes.

Un prim scop implică modelarea mecanismului care stă la baza învăţării umane. În acest cadru

psihologic, cercetătorii dezvoltă algoritmi de învăţare care sunt consistenţi cu cunoştinţele

arhitecturii cognitive umane şi care sunt proiectaţi să explice anumite comportamente de învăţare

observate. Această abordare produce o varietate largă de modele computaţionale, unele dintre ele

explicând comportamentul la un nivel calitativ, pe când altele ajustează rata erorilor şi timpurile

de răspuns a subiecţilor umani. O problemă tipică de învăţare poate fi definită de diagrama

următoare:

1 Ian W. & Eibe F,- “Data Mining- Practical machine learning tools and techniques”, 2005, pg-12

6

Figura 1. Diagrama unei probleme de învăţare.

Sursa: Rob Schapire – “Foundations of machine learning”, 2003

Un al doilea grup de interes se referă la abordările empirice ale studiului învăţării automate.

Scopul, în acest caz, este de a descoperi principii generale care corelează caracteristicile

algoritmilor de învăţare şi a domeniului în care acţionează, cu comportamentul de învăţare.

Abordarea standard este de a face experimente în care variază fie algoritmul, fie domeniul şi

observarea impuctului rezultatelor asupra învăţării. Unele studii se bazează pe comparaţii între

diferite clase de algoritmi, pe când altele examinează variaţiuni ale unuia singur; unele

experimente consideră comportamentul în medii naturale, pe când altele variază caracteristicile

mediilor sintetice. Studiile experimentale au ca rezultat o serie de generalizări empirice

referitoare la metode alternative care sugerează zonele de slăbiciune, idei de îmbunătăţire a

algoritmilor şi surse de dificultate în realizarea sarcinilor.

O a treia categorie de preocupare are în vedere principiile generale, tratând învăţarea automată ca

un domeniu aparţinând studiului matematic, cu scopul de a formula şi demonstra teoreme.

Abordarea tipică presupune definirea unei probleme de învăţare, presupunând că poate sau nu

poate fi rezolvat cu un număr rezonabil de cazuri de antrenament şi demonstrând această ipoteză

pe caz general. Dacă abordarea empirică împrumută tehnici experimentale din fizică şi

psihologie, abordarea matematică foloseşte instrumente şi concepte din informatică şi statistică.

O ultima abordare este cea aplicativă, având ca scop principal utilizarea învăţării automate în

problemele din lumea reală. Majoritatea aplicaţiilor de acest fel se bazează pe sisteme expert care

necesită ani pentru dezvoltarea şi depanarea cunoştinţelor extensive specifice domeniului.

Datorită faptului ca prin utilizarea învăţării automate se pot transforma datele de antrenament în

7

cunoştinţe, aceasta deţine potenţialul de a automatiza procesul de dobândire a cunoştinţelor. Paşii

tipici de dezvoltare presupun forumlarea unei probleme interesante, proiectarea unei reprezentări

pentru cazurile de antrenament şi dobândirea cunoştinţelor, colectarea datelor de antrenament şi

utilizarea învăţării automate pentru generarea bazei de cunoştinţe.

Un punct central al acestor abordări este preocuparea pentru dezvoltarea, înţelegerea şi evaluarea

algoritmilor de învăţare. Dacă învăţarea automată este o ştiinţă, este, în mod cert, o ştiinţă a

algoritmilor.2

Un avantaj al învăţării automate este faptul că presupune căutarea într-un spaţiu mare de posibile

ipoteze pentru a determina cea mai buna dintre cele care se potriveşte datelor observate pe baza

cunoştinţelor deţinute a-priori.

Domenii de aplicare

O măsură a progresului realizat în învăţarea automată este numărul aplicaţiilor dezvoltate pentru

lumea reală. Câteva din aplicaţiile de succes, din diferite domenii, sunt următoarele:

Recunoaşterea vocală: aceasta are ca motivaţie faptul că recunoaşterea vocii are o mai

mare acurateţe dacă este învăţată şi nu programată manual. În general există două faze de

învăţare: prima, înainte ca produsul soft să fie livrat şi presupune învăţarea sistemului

independent de utilizator şi a doua, dependentă de utilizator.

Computer vision: Aceste sistemele vizuale includ aplicaţii precum recunoaşterea feţei (de

exemplu, identificarea feţelor în imagini), sisteme care clasifică automat imaginile

microscopice a celulelor şi recunoaşterea caracterelor optice. Ultimul tip de aplicaţie este

utilizată la un nivel foarte mare de Oficiul Poştal US, pentru sortarea automată a

scrisorilor cu adresele scrise de mână, peste 85% din corespondenţa din Statele Unite este

sortată utilizând software de acest fel.

Bio-supraveghere: multe eforturi guvernamentale sunt făcute pentru a identifica şi urmări

apariţia focarelor de boli. Un exemplu de aplicaţie de succes este proiectul RODS care

colectează în timp real fişele de internare în sălile de urgenţe a spitalelor din Pennsylvania

pentru a determina şabloane de simptome care prezintă anomalii.

2 Langley P. – „Elements of Machine Learning”, 1998, England, p. 1-7

8

Controlul robortic: învăţarea automată a fost folosită cu succes în sistemele robotice.

Ştiinţele empirice: ştiinţele intensive în date utilizează invăţarea automată pentru a uşura

procesul descoperirilor ştiinţifice (de exemplu, modelarea expresiei genelor din celule,

descoperirea obiectelor astronomice suspecte, caracterizarea tiparelor de activitate a

creierului uman).3

Filtarea spam-urilor: identificarea mailurilor ca fiind spam-uri sau nu.

Înţelegerea limbii vorbite: în contextul unui domeniu limitat, algoritmul determină sensul

cuvintelor utilizatorului.

Diagnosticarea medicală: diagnostichează un pacient ca suferind sau nu de o boală.

Segmentarea clienţilor: utilizat, spre exemplu, pentru a prezice reacţia unui pacient la o

campanie promoţională.

Detectarea fraudei: un exemplu de acest fel este identificarea tranzacţiilor de o natură

frauduloasa.

Predicţia vremii.4

1.2 Taxonomia învăţării automate

În funcţie de rezultatul dorit al algoritmului sau de datele de intrare disponibile se propune

următoarea taxonomie pentru învăţarea automată: supervizată, nesupervizată, semi-supervizată,

de întărire, învăţare prin învăţare.

Învăţarea supervizată

Acest tip de învăţare presupune că algoritmul generează o funcţie de mapare a datelor de intrare

la rezultatul dorit. O formulare standard a sarcinilor de învăţare supervizată sunt problemele de

clasificare: algoritmul trebuie să înveţe (să aproximeze comportamentul) o funcţie care clasifică o

instanţă într-una dintre clasele disponibile observând mai multe exemple de input-output ale

funcţiei.

3 Tom M. Mitchell- “The discipline of machine learning”, 2006

4 Rob Schapire – “Foundations of machine learning”, 2003

9

Primul pas în aplicarea învăţării supervizate este colectarea datelor. În cazul diponibilităţii unui

expert, acesta ar trebui să sugereze atributele relevante. Altfel, cea mai simplă metodă este

aplicarea „forţei brute”, adică măsurarea tuturor datelor disponibile în speranţa că atributele

corecte (informative, relevante) pot fi izolate. Totuşi, această metodă are dezavantajul de a

introduce zgomot şi atribute cu valori lipsă, necesitând un grad mare de preprocesare. Pregătirea

datelor şi preporcesarea este al doilea pas aplicat, în scopul detectării zgomotului. O tehnică de

reducere a acestuia este selectarea instanţelor. Selectarea instanţelor este o problemă de

optimizare care încearcă să menţină calitatea datelor interesante extrase dintr-o bază de date, în

timp ce reduce dimensiunea înregistrărilor. O altă tehnică presupune identificarea şi eliminarea

atributelor irelevante care, prin reducerea cantităţii de date, ajută la îmbunătăţirea performanţei

algoritmilor. Totuşi, multe atribute depind unele de altele şi combinaţia lor influenţează

acurateţea modelelor de învăţare supervizată. O soluţie pentru această problemă este

transformarea atributelor, prin contruirea unor atribute noi din setul de date iniţial. Atributele

generate pot duce la crearea unor clasificiatori cu o precizie şi acurateţe mai ridicată. În plus,

descoperirea atributelor seminficative ajută la o mai bună întelegere a procesului de clasificare şi

a conceptului învăţat.

Algoritmii specifici învăţării supervizate sunt grupaţi în mai multe categorii: clasificatori liniari

(regresie logică, clasificatorul bayesian naiv, perceptron, maşinile cu suport vectorial),

clasificatoriul quadratic, k-Means Clustering, arborii de decizie, reţele neuronale şi reţele

bayesiane.

Procesul învăţarii supervizate este descris în următoarea figură:

10

Figura 2: Procesul învăţării automate supervizare

Sursa: Taiwo Oladipupo Ayodele –“Types of Machine Learning Algorithms”, 2010

Învaţarea nesupervizată

În acest tip de învăţare, instanţele pe care se face învăţarea nu sunt catalogate, urmărindu-se

modelarea datelor de intrare. La prima vedere, această învăţare pare mai dificilă, calculatorul

fiind nevoit să înveţe ceva fără să ştie cum. Există două abordări pentru învăţarea nesupervizată.

Prima este învăţarea agentului fără a da categorizările explicite, ci folosind un sistem de

recompensare pentru a indica succesul. Acest tip de antrenament intră în categoria problemelor

de decizie, scopul fiind de a lua decizii care maximizează recompensa şi nu de de clasificare.

Abordarea este o generalizare a lumii reale, agenţii fiind recompensaţi pentru anumite acţiuni şi

pedepsiţi pentru altele.

De multe ori, învăţarea nesupervizată foloseşte o formă de învăţare prin întărire, agenţii bazându-

şi acţiunile pe recompensele şi pedepsele anterioare, fără a învăţa informaţii despre felul în care

11

acţiunilor lor afectează mediul. Într-un fel, aceste informaţii nu sunt necesare deoarece prin

învăţarea funcţiei de recompensare, agentul ştie ce trebuie să facă fară procesări ulterioare,

deoarece ştie ce recompensă se aşteaptă să primească pentru fiecare acţiune pe care poate să o

facă. Această abordare este avantajoasă în cazul în care calcularea fiecărei posibilităţi durează

mult (chiar dacă sunt cunoscute toate posibilităţile de tranziţie între stări). Totuşi, la fel de mult

poate dura şi acest tip de învăţare, bazat pe încercări şi eşecuri, însă puterea acestui tip de învăţare

constă în presupunerea că nu există clasificări ale exemplelor pre-descoperite.

A doua abordare a învăţării nesupervizate se numeşte clustering, prin care nu se urmăreşte

maximizarea funcţiei de utilitate, ci descoperirea similitudinilor în cadrul setului de date. Se

presupune că grupurile (clustere) descoperite pot fi folosite pentru clasificările intuitve. De

exemplu, aplicarea metodei pe seturi de date demografice pot grupa indivizii în grupuri în funcţie

de bunăstare, bogaţi şi săraci. Deşi algoritmul nu oferă nume pentru clusterele descoperite, prin

găsirea lor, sunt utilizate la clasificarea noile instanţe într-unul sau în altul. Această abordare este

bazată pe date şi poate fi aplicată dacă există un număr suficient de mare de date.

Algoritmii de învăţare nesupervitată sunt proiectaţi să extragă structuri din datele de antrenament.

Calitatea structurilor este măsurată cu ajutorul funcţiilor de cost care este minimizată prin

deducerea parametrilor optimi care caracterizeaza structurile ascunse din date.

Învăţarea semi-supervizată

Acest tip de învăţare combină instanţele clasificate cu cele neclasificate cu scopul construirii unei

funcţii sau a unui clasificator corespunzător. Un sub-tip din această categorie este “transducţia”,

sau inferenţa transductivă, care încearcă să prezică rezultate noi bazându-se pe nişte cazuri de

testare specifice şi fixate, deduse din observarea datelor de antremanet.

Învăţarea prin întărie

Algoritmii din această categorie învaţă un comportament bazat pe observarea mediului

înconjurător. Fiecare acţiune a agentului are o consecinţă asupra mediului, iar mediul oferă un

răspuns care ghidează algorimul de învăţare.

12

Învăţarea prin învăţare

Acest algoritm face un set de presupuneri pe care le utilizează în predicţia clasificărilor

instanţelor necunoscute. În funcţie de rezultatele obţinute, algoritmul obţine o anumită experienţă

care formează baza porcesului de învăţare.5

1.3 Voting feature interval

În continuare este prezentat algoritmul Voting feature interval, cum se realizează învaţarea şi cum

se face clasificarea unui obiect nou. VFI este asemănător clasificatorului bayesian naiv deoarece

fiecare trasătură a unui obiect este prelucrată individual. Astfel, unitatea de lucru a acestui

algoritm este “intervalul caracteristic”: pentru fiecare atribut al unui obiect se calculează

intervalele sale caracteristice. Fiecare interval conţine instanţe ale mai multor clase, rezultând că

fiecare atribut are o pondere în acestea. Pe baza acestor ponderi se acordă voturi iar scorul final

este calculat ca suma a voturilor individuale raportate la fiecare atribut. În clasa cu scorul cel mai

mare este clasificată noua instanţă.

Etapa de învăţare

VFI este un algoritm de clasificare non-incremental. Fiecare exemplar este reprezentat ca un

vector de valori ale caracteristicilor sale şi o etichetă care precizează clasa din care obiectul face

parte. Prima etapa a algoritmului presupune construirea intervalelor caracteristice pentru fiecare

caracteristică. Un interval caracteristic apare sub forma unui set de valori pentru o anumită

trăsătură, valori pentru care se observă aceleaşi subset de date dintr-o clasă.

Găsirea intervalelor specifice unui atribut presupune determinarea punctelor minime şi maxime

pentru fiecară clasă, pentru acel atribut (în cazul celor liniare). Lista punctelor găsite este

ordoantă crescător, fiecare pereche de puncte consecutive considerându-se un interval. Pentru

atributele nominale, se consideră fiecare valoare un punct diferit, respectiv un interval cuprinzând

o sigura valoare.6

5 Taiwo Oladipupo Ayodele –“Types of Machine Learning Algorithms”, 2010

6 Narin Emeksiz Havelsan, Ankara Turke, Application of Machine Learning Techniques to Differential Diagnosis of

Erythemato-Squamous Diseases

13

Reprezentarea fiecărui interval se face sub forma unui vector cu valorile: <atribut,

limitaInferioară, numărClasa1, numărClasa2, …, numărClasak>, unde atribut este caracteristica

pentru care este definit intervalul, limitaInferioară este limita inferioară a acelui interval, k este

numarul de clase şi numărClasai este egal cu numărul de instanţe ale clasei care aparţin

intervalului. Astfel, un interval poate reprezenta mai multe clase. Se utilizează doar limita

inferioară deoarece, în cazul caracteristicilor liniare, limiat superioară a unui interval este limita

superioară a intervalului următor, iar în cazul trăsăturilor nominale limitele superioare şi

inferioare a unui interval sunt egale. Un caz special apare când o instanţă a unei clase are ca

valoare punctul limită al unui interval. În această situaţie, se consideră că obiectul respectiv face

parte din ambele intervale care au ca limită punctul respectiv şi se adauga 0.5 la numărul

instanţelor din acea clasă (pentru fiecare interval). Se poate observa că nu este necesară o

normalizare a datelor deoarece fiecare caracteristică este procesată individual.7

Etapa de clasificare

Apartenenţa unei noi instanţe la o clasă se face pe baza voturilor acordate de fiecare

caracteristică, pentru fiecare clasă. Se calculează voturile primite de fiecare clasă, ca şi suma

voturilor acordate de fiecare atribut pentru acea clasă. Obiectul nou este clasificat în clasa cu cel

mai mare punctaj.

Pentru acordarea voturilor, pentru fiecare atribut se caută intervalul în care este cuprinsă valoarea

atributului corespunzator a obiectului care trebuie clasificat. Fie <atribut1, limitaInferioară,

numărClasa1, numărClasa2, …, numărClasak> intervalul găsit pentru atributul atribut1. Se

calculează pentru fiecare clasă votul acordat de acest atribut ca raportul dintre numărul de

instanţe ale clasei din acel interval şi numărul total de instanţe din acea clasă. Un caz special

apare atunci când obiectul de catalogat are valori lipsă pentru unele atribute. În această situaţie,

votul atributelor respective este 0 pentru fiecare clasă. O altă situaţie deosebită este în cazul în

care valoarea atributului obiectului nou reprezintă limita unui interval. Valoarea votului este

egală cu media voturilor celor două intervale corespunzătoare. Următorul pas din această etapa

7 Narin Emeksiz Havelsan, Ankara Turke, Application of Machine Learning Techniques to Differential Diagnosis of

Erythemato-Squamous Diseases

14

are în vedere normalizarea acestor rezultate astfel încât suma voturilor acordate de un atribut

fiecarei clase sa fie egală cu unu.

Se calculează voturile totale obţinute de fiecare clasă prin însumarea voturilor individuale

obţinute din partea fiecărei caracteristici. Clasa cu cel mai mare vot este clasa în care obiectul

necunoscut este catalogat.8

8 Narin Emeksiz Havelsan, Ankara Turke, Application of Machine Learning Techniques to Differential Diagnosis of

Erythemato-Squamous Diseases

15

CAPITOLUL 2

Învăţare bazată pe instanţe

2.1 Reprezentarea învăţării bazate pe instanţe

În contrast cu alte metode de învăţare, care construiesc o funcţie de evaluare generală şi explicită

pentru antrenarea datelor, metodele învăţării bazate pe instanţe pur şi simplu memorează aceste

date. Generalizarea dincolo de aceste exemple este amânată până în momentul în care trebuie

clasificată o nouă instanţă. De fiecare dată când se găseşte o instanţă necunoscută, se examinează

relaţia sa cu celelalte exemplare memorate, cu scopul de a ataşa acesteia o nouă valoare pentru

funcţia de evaluare.

O dată ce datele de antrenament au fost memorate, pentru realizarea unei noi clasificări se caută

între aceste instanţe cea care se aseamană cel mai mult cu cea studiată. Problema care apare este

cum se interpretează aceste “asemanări”, comparând instanţele noi, a căror clasificare este

necunoscută cu cele a căror clasă se cunoaşte. Într-un fel, şi celelate metode de învăţare sunt

bazate pe instanţe deoarece toate au ca punct de pornire un set de date care reprezintă baza

iniţială de obţinere a informaţie. Însă, în contrast cu aceasta, reprezentarea cunoştinţelor bazată pe

instanţe foloseşte instanţele în sine pentru a reprezenta ce se învaţă, şi nu se deduce o regulă care

să se memoreze.

Învăţarea bazată pe instanţe include metoda celui mai apropiat vecin şi metoda regresiei

ponderate locale, care presupun că instanţele pot fi memorate ca puncte în spaţiul Euclidian. De

asemenea, include şi metode de case-based reasoning care presupun reprezentări simbolice mult

mai complexe. Într-un fel diferenţa dintre învăţarea bazată pe instanţe şi celelate este momentul

în care are loc procesul de învăţare. Toate aceste metode sunt catalogate ca fiind “lazy” deoarece

amână procesul de învăţare panâ când o nouă instanţă trebuie clasificată. Un avantaj pentru

această abordare este faptul că în loc să se estimeze o funcţie de evaluare de la început, pentru tot

spaţiul de instanţe, metodele estimează funcţia local şi diferit pentru fiecare dată nouă care

trebuie clasificată.

16

Calcularea distanţei dintre două exemplare este trivială când acestea au un singur atribut numeric:

se calculează diferenţa dintre valorile celor două atribute. La fel de uşor este tratat şi cazul mai

multor atribute numerice: în general, se utilizează distanţa Euclidiană. Totuşi, trebuie ţinut cont

de normalizarea atributelor şi de importanţa lor diferită.9

În cazul atributelor nominale, este necesară gasirea unei “distanţe” între valorile diferite ale

atributelor. De exemplu, cum se poate calcula distanţa dintre valorile roşu, galben şi verde? De

obicei, se consideră distanţa zero pentru valori identice şi unu în caz contrar, astfel că distanţa

dintre roşu şi roşu este zero, pe când distanţa dintre roşu şi verde este unu. Totuşi, este de dorit o

reprezentare mai sofisticată a acestor atribute, spre exemplu, având mai multe culori se poate

utiliza o măsură metrică a nuanţelor din spaţiul culorilor, punând galbenul mai apropiat de

portocaliu decât verde. Unele atribute au o importanţă diferită care este reflectată în distanţa

metrică cu ajutorul anumitor ponderi. Derivarea ponderilor pentru fiecare atribut din setul de

antrenament este o problemă importantă în învăţarea bazată pe instanţe.

Nu este necesar sau indicat să fie reţinute toate datele de antrenament, o primă motivaţie fiind

încetinirea procesului de calculm, iar a doua spaţiul enorm ocupat. În general, există regiuni ale

spaţiului atributelor sunt mai stabile decât altele, raportate la clasă, astfel că sunt necesare câteva

exemple din interiorul regiunilor stabile. Spre exemplu, se cere o densitate mai mică a

exemplarelor din interiorul regiunilor stabile decât densitatea necesară în jurul limitelor claselor.

Decizia de a renunţa saun nu la anumite instanţe este un alt punct cheie în învăţarea bazată pe

instanţe.

Un inconvenient al reprezentărilor din acest model este că nu fac explicite structurile care se

învaţă, violând asftel noţiunea de “învăţare”, prin faptul că nu descriu şabloanele datelor. Totuşi,

instanţele împreună cu distanţele metrice consturiesc anumite bariere care diferenţiază o clasa de

alta şi astfel reuşesc să reprezinte explicit cunoştinţele obţinute. Spre exemplu, avand două clase,

fiecare cu o singură instanţă, regula celui mai apropiat vecin împarte spaţiul de-a lungul

bisectoarei perpendiculare a liniei care uneşte cele două instanţe. Având un număr mai mare de

instanţe, spaţiul este împărţit de o mulţime de linii care reprezintă bisectoarele perpendiculare ale

liniilor selectate care unesc instanţele dintr-o clasă cu cele din cealalată.

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

17

Figura de mai jos ilustrează un poligon cu nouă laturi care separă clasa cercurilor umplute de

clasa cercurilor goale. Renunţând la o parte din datele de antrenament, se păstrează instanţele

care sunt de fapt folosite în luarea deciziei conform celui mai apropiat vecin. Figura . (b) prezintă

cercurile colorate cu gri ca fiind instanţele la care se poate renunţa fară a afecta rezultatul final.

De asemenea, exemplele prototipice servesc ca o reprezentare explicită a cunoştinţelor.10

Figura 3 . Partiţionarea spaţiului instanţelor şi reprezentarea cunoştinţelor (pg 79)

Sursa: Ian W. & Eibe F, “Data Mining- Practical machine learning tools and techniques”, 2005, pg.79

Un dezavantaj al abordărilor bazate pe instanţe este costul ridicat pentru fiecare nouă clasificare,

datorită faptului că majoritatea calculelor se fac în momentul clasificării şi nu atunci când sunt

memorate iniţial datele de test. Ca o consecinţă, se caută tehnici eficiente de indexare a datelor de

antrenament cu scopul reducerii calculelor necesare la fiecare nouă interogare. Un alt dezavantaj

are în vedere faptul că iau în considerare toate atributele instanţelor, chiar dacă numai câteva sunt

relevante pentru o corectă clasificare.11

Alte puncte slabe sunt faptul că acurateţea algorimului

scade pe măsura apariţiei zgomotului, precum şi faptul că funcţiile pentru calcularea distanţelor

sunt neadecvate pentru aplicaţii cu atribute liniare şi nominale, cât şi din lipsa abilităţii de a

modifica barierele de decizie o dată ce datele au fost salvate.

Principalele avantaja ale acestor tehnici sunt învăţarea rapidă, faptul că nu pierd informaţii şi

capacitatea de a învăţa funcţi de evaluare complexe.

10

Ian W. & Eibe F,- “Data Mining- Practical machine learning tools and techniques”, 2005, 76-79

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

18

2.2 K-Nearest Neighbors

În acest capitol este prezentat algoritmul k-nearest neighbor, utilizat pentru clasificări sau pentru

predicţii (în cazul rezultatelor numerice). Pentru a clasifica sau prezice o noua dată, metoda se

bazează pe găsirea altor înregistrări similare în datele de antrenament. Aceşti “vecini” sunt apoi

folosiţi pentru a deriva o clasificare/ predicţie pentru noul obiect prin votare (pentru clasificare)

sau printr-o medie (pentru predicţie).12

Pe parcursul capitolului se arată cum se determină

similitudinile, modalitatea prin care se alege numărul de vecini şi cum se realizează clasificarea.

Ultima parte a capitolului prezintă avantajele şi dezavantajele algoritmului din perspectiva

performanţei şi a altor considerente de ordin practic, de exemplu timpul computaţional.

În recunoaşterea modelelor, algoritmul KNN este o metodă de clasificare a obiectelor folosindu-

se de cele mai apropiate k obiecte din setul de antrenament. KNN foloseşte învăţarea bazată pe

instanţe (sau învaţarea întârziată), unde funcţia este aproximată local iar calculele efective sunt

amânate până la clasificare. KNN este unul dintre cei mai simpli algoritmi de învaţare automată:

un obiect este clasificat în funcţie de votul majoritar al vecinilor săi, de cele mai multe ori fiind

clasat în categorie din care fac parte cei mai multi dintre cei k vecini. K este un număr întreg,

pozitiv, în general mic. Dacă k este 1, obiectul este adăugat în clasa din care face parte cel mai

apropiat vecin.13

Se consideră reprezentare noului obiect ca fiind (x1,x2,..xp), unde x1,x2..xp

reprezintă valorile atributelor obiectului. Căutam date în setul de antrenament care sunt similare

sau apropiate înregistrării care urmează să fie clasificată (datele care au valori apropiate lui x1,

x2,.. xp). Apoi, pe baza claselor din care fac parte datele găsite, atribuim o clasă obiectului

necatalogat.14

Determinarea vecinilor

Algoritmul K-NN este o metodă de clasificare care nu ţine cont de relaţiile dintre membrii

claselor şi a atributelor (X1..Xp), ci se foloseşte de informaţiile extrase din similitudinile dintre

12

Bruce P. et all (2010), Data Mining for Business Intelligence: Concepts, Techniques, and Applications in

Microsoft Office Excel with XLMiner, ed John Wiley & Sons Inc, Hoboken, New Jersey 137-145 13

Zheming L. et all (2010)- Three-Dimensional Model Analysis and Processing, ed. Zhejiang University Press,

Hangzhou, p. 277- 279 14

Bruce P. et all (2010), Data Mining for Business Intelligence: Concepts, Techniques, and Applications in

Microsoft Office Excel with XLMiner, ed John Wiley & Sons Inc, Hoboken, New Jersey 137-145

19

valorile atributelor înregistrărilor. Vecinii sunt aleşi dintr-un set de obiecte pentru care se

cunoaşte clasificarea corectă. Ei pot fi consideraţi ca fiind echivalentul datelor de învăţare, deşi

nu există o etapă specifică de antrenare. Se poate considera, totuşi, că etapa de antrenament a

algortimului constă numai în memorarea vectorilor caracteristici şi a etichetelor claselor pentru

datele de antrenament.15

Dupa cum este menţionat mai sus, pentru identificarea vecinilor, obiectele sunt reprezentate ca

vectori de poziţie într-un spaţiu multi-dimensional caracteristic. În momentul actual de

clasificare, datele de test (a caror clasă e necunoscută) sunt reprezentate şi ele ca un vector în

spaţiul caracteristic. Se calculează distanţa de la noul vector la cei existenţi şi se selectează primii

k cu cea mai mică distanţă. Problema care apare în acest moment este modalitatea de determinare

a distanţei dintre obiecte pe baza atributelor lor. Cea mai utilizată metoda de calcul a distanţei

este distanţa Euclidiană. Astfel, distanţa Euclidiană dintre două obiecte, unul din setul de date de

antrenament (x1,..,xp) şi unul nou care trebuie catalogat (u1,..,up) este:

.

Reguli de clasificare

După calcularea distanţei dintre obiectul care trebuie clasificat şi celelate înregistrări, este

necesară o regulă de asociere a acestuia la una din clasele primilor k vecini cu cea mai mică

distanţă. Spaţiul este împărţit în regiuni de locaţie şi etichete pentru datele de antrenament. Un

punct în spaţiu este atribuit unei clase c, dacă c este cea mai frecvetă etichetă a claselor celor mai

apropiate k date de antrenament. 16

Există mai multe tehnici de clasificare a noului vector la o clasă particulară, cea mai utilizată

fiind adăugarea acestuia la clasa predominantă a celor k vecini. Principala problemă este faptul că

clasele cu exemplare numeroase influenţează catalogarea noului vector deoarece apar mai des

15

Zheming L. et all (2010)- Three-Dimensional Model Analysis and Processing, ed. Zhejiang University Press,

Hangzhou, p. 280- 283 16

Bruce P. et all (2010), Data Mining for Business Intelligence: Concepts, Techniques, and Applications in

Microsoft Office Excel with XLMiner, ed John Wiley & Sons Inc, Hoboken, New Jersey 137-145

20

printre cei k vecini selectaţi. O soluţie posibilă este predicţia în funcţie de distanţa dintre fiecare k

vecin şi noul vector.17

Alegerea corectă a valorii lui k se face în funcţie de date. De obicei, pentru un k mare se reduce

“zgomotul” în procesul de clasificare, însă trasează bariere clare între clasele asemănătoare.

Pentru alegerea unui k potrivit se pot utiliza diferite metode euristice (de exemplu, cross-

validation- validarea încrucişatş). Cazul special în care un obiect este atribuit clasei cu cel mai

similar exemplar (pentru k=1) este numit algoritmul “nearest neighbor“ (cel mai apropiat

vecin).18

Avantaje şi dezavantaje ale algoritmului

Principalul avantaj al K-NN este simplitatea şi lipsa presupunerilor parametrizate. De asemenea,

în cazul unui set de date de antrenament mare, algoritmul are rezultate foarte bune. Un alt factor

care influenţează performanţa algoritmului este caracterizarea unei clase prin multilple

combinaţii de atribute. Spre exemplu, având o bază de date de imobiliare, există o probabilitate

mai mare ca multiple combinaţii între {tipul locuinţei, numărul de camere, cartier, preţ} să

caracterizeze locuinţele care se vând repede versus cele care rămân pe piaţă o perioada mai mare

de timp.

Dificultăţile observate au în vedere faptul că precizia algoritmului KNN este afectată de existenţa

zgomotului sau a caracteristicilor irelevante, precum şi dacă pondera acestora nu este în

consistenţa cu importanţa. O alta problemă sesizată se referă la durata găsirii celui mai apropiat

vecin, care este destul de mare, mai ales în cazul unui set de date de antrenament voluminos.19

Ultimul dezavantaj observat se referă la “blestemul dimensionalităţii”, făcând referire la numărul

mare de atribute. Pentru un segment de dreapta de coordonate (0,1), lungimea sa este 0, pentru un

pătrat, lungimea între vârfurile opuse, de coordonate (0,0) şi (1,1) este , pentru un cub,

17

Zheming L. et all (2010)- Three-Dimensional Model Analysis and Processing, ed. Zhejiang University Press,

Hangzhou, p. 280- 287 18

Zheming L. et all (2010)- Three-Dimensional Model Analysis and Processing, ed. Zhejiang University Press,

Hangzhou, p. 270- 283 19

Bruce P. et all (2010), Data Mining for Business Intelligence: Concepts, Techniques, and Applications in

Microsoft Office Excel with XLMiner, ed John Wiley & Sons Inc, Hoboken, New Jersey 137-145

21

lungimea diagonalei este dar pentru un hipercub cu 100 de dimensiuni, lungimea e egala cu

100. Cu cât numărul de atribute este mai mare, cu atât datele din acel spatiu sunt mai rare şi este

cu atat mai greu de realizat un model de clasificare precis.20

2.3 Weighted Nearest Neighbor

Un rafinament evident al algoritmului KNN este ponderarea contribuţiei fiecăruia k vecin în

funcţie de distanţa faţă de noua instanţă care trebuie clasificată, acordând o pondere mai mare

vecinilor mai apropiaţi. Dudani introduce pentru prima dată o metodă de ponderare a voturilor,

denumită regula distanţei ponderate a celor mai apropiaţi k-vecini.

Pentru a calcula pondera wi corespunzătoare corespunzătoare celui de-al i-lea vecin al noii

instanţe x’, se aplică următoarea formulă21

:

Pentru a rezolva cazul în care valorile atributelor unui vecin sunt identice cu cele ale noii instanţe

de catalogat, numitorul ponderii devenind zero, se clasifică noua instanţă în aceeaşi clasă cu

prima, renunţându-se la alte calcule. Dacă există mai multe exemplare pentru care se întâmplă

acest lucru, se alege clasa majoritară.

Rezultatul clasificării este dat de majoritatea voturilor ponderate:

Deşi algoritmul KNN consideră doar primii k vecini pentru etapa de clasificare, o dată ce se

introduce ponderarea distanţelor, se reduce riscul unui rezultat greşit, în cazul în care se iau în

considerare toate instanţele, prin faptul că vecinii mai îndepărtaţi vor primi o pondere mai mică.

9 Florin Leon (2012), Inteligenta atificiala: rationament probabilistic, tehnici de clasificare, ed Tehnopress, Iasi

21 Jianping Gou, Lan Du, Yuhong Zhang, Taisong Xiong- A New Distance-weighted k-nearest Neighbor Classier,

2012

22

Singurul dezavantaj în considerarea tututor exemplarelor este încetinirea clasificatorului şi

scăderea performanţei.

Algoritmul care ia în considerare toate exemplarele se numeşte global, iar cel care ia în

considerare doar o parte din vecini, se numeşte local. Dacă se aplică DWNN global, se obţine

algoritmul cunoscut sub numele de “metoda Shepard”.22

Rezultate experimentale comparative

În această secţiune este prezentată performanţa celor doi clasificatori aplicaţei pe douăzeci de

seturi de date preluate din baza de date UCI. În acest experiment, fiecare set de date este împărţit

aleator în date de antreament şi date de test. Proprietăţile generale ale acestor date, precum şi

partiţionarea lor, sunt prezentate în tabelul următor:

Tabel 1. Seturile de date UCI şi partiţionările corespunzătoare

Setul de date Număr

atribute

Număr

instanţe

Număru clase Număr date

antrenament

Număr date

de test

Sticlă 10 214 7 140 74

Vin 13 178 3 100 78

Sonar 60 208 2 120 88

Parkinson 22 195 2 120 75

Ionosferă 34 351 2 200 151

Mosc 166 476 2 276 200

Vehicule 18 846 4 500 346

Segmentarea

imaginii

19 2310 7 1310 1000

Cardiotocografie 21 2126 10 1126 1000

Recunoaşterea

optică a literelor

scrise manual

64 5620 10 3000 2620

Sateliţi 36 6435 7 3435 3000

Recunoaşterea

literelor

16 20000 26 10000 10000

Sursa: Jianping Gou, Lan Du, Yuhong Zhang, Taisong Xiong- A New Distance-weighted k-nearest Neighbor

Classier, 2012

Pentru creşterea confidenţei în performanţa clasificatorilor, se fac experimente de timpul validării

încrucişate cu 20 de sub-seturi şi obţinând o acurateţe de 95%. Valoarea lui k variază de la 1 la

22

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

23

15. Pentru fiecare set de date se alege k care obţine cea mai mare rată de acurateţe. Perfomanţa

finală este evaluată ca media ratelor de acurateţe.

Rezultatele experimentului, din punct de vedere al acurateţii algoritmilor, sunt prezentate în

tabelul de mai jos. Se observă că WKNN obţine o performanţă mai bună ca şi acurateţe, iar

numarul optim k este mai mare pentru al doilea algoritm: 23

Tabel 2. Acurateţea obţinută pentru KNN şi WKNN şi k optim

Setul de date KNN WKNN

Acurateţe K optim Acurateţe K optim

Sticlă 69.86 1 69.86 1

Vin 71.15 1 71.47 4

Sonar 80.62 1 81.59 4

Parkinson 83.00 4 83.53 8

Ionosferă 84.01 1 84.27 7

Mosc 83.98 1 84.77 6

Vehicule 63.76 3 63.96 8

Segmentarea

imaginii

95.19 1 95.19 1

Cardiotocografie 69.884 1 70.12 5

Recunoaşterea

optică a literelor

scrise manual

98.52 4 98.64 7

Sateliţi 90.35 4 90.63 10

Recunoaşterea

literelor

94.38 4 94.89 9

Sursa: Jianping Gou, Lan Du, Yuhong Zhang, Taisong Xiong- A New Distance-weighted k-nearest Neighbor

Classier, 2012

23

Jianping Gou, Lan Du, Yuhong Zhang, Taisong Xiong- A New Distance-weighted k-nearest Neighbor Classier,

2012

24

CAPITOLUL 3

Tehnici de clasificare în diagnosticarea medicală

3.1 Importanţa sistemelor inteligente în diagnosticarea medicală

Simptomele sunt reacţiile fizice sau stările mentale care necesită atenţie medicală. Având un

caracter intrusiv, obstructiv şi indezirabil, precum şi o complexitate dată de felul cum sunt

percepute, interpretate şi tratate, simptomele creează o stare de incertitudine care necestită

explicaţii. Ele trebuie să fie etichetate şi înţelese pentru a se putea găsi o cale de recuperare, de

revenire la “sinele” obişnuit. Toţi oamenii care se îmbolnăvesc vor un diagnostic, fiind prima

speranţă către însănatoşire. Diagnosticul este numele bolii: când se dă un diagnostic, se dă o

boală. De obicei, doctorii sunt cei care diagnostichează şi se luptă cu boala. Aceştia au nevoie de

diagnosticare pentru a afla de ce, pentru a putea discuta şi compara, pentru a găsi soluţii şi pentru

a face presupuneri asupra viitorului. Diagnosticarea transformă starea unei persoane în ceva

tangibil, palpabil, care poate fi biruit, fiind primul şi cel mai crucial pas către vindecare.

Etichetarea este o activitate umană de bază: punând o denumire lucrurilor, omul se orientează în

lume, încearcă să le înţeleagă şi să le stăpânească. Etichetele se referă la modele, la şabloane,

creând categorii în care fiecare fenomen poate fi grupat. Problema care apare este în delimitarea

clara a categoriilor şi catalogarea corectă. La fel şi diagnosticarea, este un proces de etichetare,

fiind rezultatul investigaţiilor care o preced. Aceasta fază poate fi precisă şi rapidă sau poate fi

prelungită şi neorientată către un rezultat. Multe dintre simptomole care fac pacienţii să ceară

ajutor sunt atât de vagi că pot îndrepta diagnosticarea spre direcţii multiple.

În mod traditional, doctorii sunt cei care dau un diagnostic şi prescriu un tratament. În ultima

perioadă se observă o tentinţă de utilizare a programelor soft în medicină pentru a ajuta şi corecta

deciziile cadrelor medicale. O maximă latina spune ca “Errare humanum est”24

, eroarea umană

fiind posibilă şi în acest domeniu, însă cu consecinţe mult mai grave. Diagnosticarea cazurilor

dificile creşte şansele unei greşeli, astfel ca un sistem inteligent care să confirme sau să sugereze

o posibilă boală este indicat şi necesar.

25

Diagnosticarea fără asistenţă computerizată presupune că un clinician să ţină minte sute de boli

cunoscute împreună cu numele, simptomele, cauzele şi mecanismele corespunzatoare. Astfel,

bolile uitate sau cele care nu au fost niciodată învaţate, nu vor fi diagnosticate niciodată. Având

în vedere creşterea explozivă a cunoştinţelor medicale este imposibil de memorat toată

informaţia. O soluţie partială este utilizarea specialiştilor medicali, însă aceasta este o soluţie

imprefectă deoarece cunoştinţele sunt atât de vaste încât nici măcar specialiştii nu pot să reţină

toate informaţiile. De asemenea, accesul la această categorie de medici nu este tot timpul facil.

Adăugând complexitatea procesului de diagnosticare, simptomele similare şi investigaţiile

neconcludente, existenţa programelor de diagnosticare este de o importanţă imperativă.

Calculatoarele pot oferi o asistenţă excelentă în astfel de situaţii. Cu o capacitate de memorare

foarte mare, pot memora cu uşurinţă multe textele medicale, iar procesoarele pot aduce rapid

informaţiile dorite. Deşi diagnosticarea medicală computerizată este de o importanţă foarte mare,

asistenţa doctorilor de către aceste programe nu este un fenomen răspândit. Dintre motivele care

împiedică dezvoltarea şi utilizarea sistemelor de diagnosticare se observă:

- problema interdisciplinară: programatorii nu au experienţă necesară pentru a observa

nuanţele din practicile medicale, iar medicii nu au abilitaţile matematice şi logice necesare

în domeniul informaticii;

- dificultatea misiunii: medicina are multe aspecte care nu pot fi traduse în algoritmi

matematici;

- algoritmi bazaţi pe premise false;

- credinţa falsă că toate nuanţele practicilor medicale zilnice pot fi reprezentate cu ajutorul

instrumentelor matematice sofisticate;25

- acurateţea deciziilor: deciziile trebuie sa aibă un grad mare de corectitudine, însă foarte

puţine aplicaţii au atins performaţele de acurateţe a experţilor umani,

- existenţa unui flux de lucru continuu: sistemele nu oferă toate informaţiile de care are

nevoie un clinician (spre exemplu, sistemele nu oferă şi un plan de tratament, medicul

fiind nevoit să caute informaţii în altă parte),

- gradul de utilizabilitate: interfeţele primelor sisteme nu erau orientate către utilizator, iar

pentru utilizarea acestora este nevoie de o perioada de învăţare,

24

A greşi e omeneşte (lat) 25

Carlos Feder- “Computerized Medical Diagnosis: A Novel Solution to an Old Problem”, ed. Infinity, SUA, 2006

26

- lipsa explicaţiilor: un număr mare de sisteme nu oferă explicaţii pentru deciziile

sugerate, reducând gradul de încredere în acestea.26

Un sistem de diagnosticare trebuie să îndeplinească următoarele cerinţe:

- Performanţa bună: acurateţea clasificării noului pacient trebuie să fie cât mai mare, în

general aceasta trebuie să fie cel puţin egală cu acurateţea medicilor.

- Tratarea valorilor lipsă: în diagnosticarea medicală, unele date nu sunt disponibile, iar

algoritmii trebuie trateze aceste situaţii.

- Tratarea “zgomotului” datelor: unele date suferă de incertitudine şi erori, iar algoritmii

trebuie să aibă mijloace de a lucra cu acestea.

- Transparenţa diagnosticării: decizia luată de sistem trebuie să fie transparentă pentru

medic pentru ca acesta să poată analiza şi întelege datele generate.

- Abilitatea de a explica decizia luată: în cazul unei situaţii neaşteptate, medicul poate cere

informaţii suplimentare, în caz contrar nu va lua în serios sugestia dată de sistem.

- Diminuarea numărului de teste: colectarea datelor pacienţilor este costisitoare, motiv

pentru care se preferă un sistem care poate da un diagnostic folosind un număr restrâns de

date.27

3.2 Modelul unui sistem inteligent

De la începuturile sistemelor expert la sfârşitul anilor 1960, începutul anilor 1970, diagnosticarea

şi interpretarea au fost zonele de aplicabilitate favorite. Figura 5 prezintă componentele logice ale

procesului de diagnosticare. În general, un sistem este alcătuit din două componente: o

componentă având la bază cunoştinţe medicale (cuprind informaţii despre raporturile simptome-

boli, inter-simptome şi inter-boli) şi o interfaţă (utilizată pentru interpretarea datelor pacientului

pe baza cunoştinţelor medicale).

26

Kavishwar B. Wagholikar, Vijayraghavan Sundararajan, Ashok W. Deshpande- “Modeling Paradigms for Medical

Diagnostic Decision Support: A Survey and Future Directions”, 2011 27

Józef Karbicz - Fault Diagnosis.: Models, Artificial Intelligence, Applications, ed Springer, Berlin, 2004

27

Figura 4. Componentele logice ale procesului de diagnosticare medicală

Sursa: Kavishwar B. Wagholikar et All- “Modeling Paradigms for Medical Diagnostic Decision Support:

A Survey and Future Directions”, 2011

Complexitatea problemei de diagnosticare depinde de domeniu, numărul de instanţe de învăţare,

de numărul şi tipul atributelor şi de numărul categoriilor de clasificat. Domeniile medicale au un

grad variat de complexitate: de exemplu, bolile cardiovasculare, având un număr mare de

simptome prezintă un grad de complexitate redus faţă de diagnosticările pentru cancer, cu un

număr mic de simptome. În plus, o problemă de diagnosticare poate fi mai complexă din cauza

unui număr mic de instanţe de antrenare sau a atributelor. De asemenea, diagosticările binare,

care presupun afirmarea sau infiramarea prezenţei unei boli, sunt mai puţin complexe decât cele

cu un grad mai mare decât cele cu mai multe diagnosticări posibile.28

În trecut, cele mai multe eforturi de a aplica inteligenţa artificială în diagnosticare utilizau

sitemele bazate pe reguli. Aceste programe erau uşor de creat, deoarece cunoştinţele erau

catalogate sub forma regulilor de tipul “dacă..atunci..”, formând un lanţ de deducţii pentru a

ajunge la o concluzie. În domeniile cu constrângeri bine definite, aceste programe s-au dovedit a

fi foarte exacte. Totuşi, numărul domeniilor era unul mic, iar problemele clinice serioase sunt atât

de complexe încât nu este posibilă crearea unui set de reguli bine format. Problema apare din

faptul că aceste sisteme nu sunt formate pe baza unui model de boala sau pe raţionamente clinice.

În absenţa acestor modele, prin adăugarea unei noi reguli, se ajungea la interacţiuni neanticipate

între reguli, astfel încât performanţa programului avea de suferit.

28

Kavishwar B. Wagholikar, Vijayraghavan Sundararajan, Ashok W. Deshpande- “Modeling Paradigms for Medical

Diagnostic Decision Support: A Survey and Future Directions”, 2011

28

Având în vedere aceste dificultăţi, eforturile recente de a utiliza inteligenţa artificială în

diagnosticare s-au focalizat pe sisteme create în jurul unui model de boală. Astfel, s-au făcut

progrese remarcabile în ce priveşte înţelegerea expertizei clinice şi în translatarea acesteia în

modele cognitive şi apoi, conversia modelelor în programe experimentale.

3.3 Exemple reprezentative

Câteva dintre primele programe de diagnosticare aparute au avut succes şi au devenit “clasice”.

Un exemplu este MYCIN, dezvoltat la începutul anilor 70, sistem utilizat pentru diagnosticarea

infecţiilor bacteriene şi prescrierea antibioticelor. Alte sisteme cunoscute din acest domeniu sunt:

CASNET (pentru diagnosticarea şi tratarea glaucomului), PIP (pentru diagnosticarea bolilor

renale), Internist-I (diagnosticarea bolilor interne). Anii 90 aduc o îmbunătăţire prin combinarea a

două sau mai multe tehnici. Astfel apare ICHT- dezvoltat pentru a reduce mortalitatea copiilor în

special în zonele rurale, HERMES- utilizat în previziunea bolilor de ficat, Neo-Dat- sistem expert

pentru studiile clinice, ISS- folosit pentru diagnosticarea bolilor cu transmitere sexuală. Apar

sistemele de diagnosticare on-line: Experienced Based Medical Diagnostics System şi Case

Based Resoning.

Altă tehnică utilizată în diagnosticare este “data mining”- descoperirea informaţiilor interesante

în bazele de date de dimensiuni mari. Utilizând aceasta tehnică, erau generate diagrame şi noi

reguli pentru îmbunătăţirea sistemelor bazate pe reguli existente. Logica fuzzy şi reţelele

neuronale sunt alte tehnici utilizate frecvent în acest domeniu.29

Diagnosticarea autismului

În Statele Unite, media de vârstă pentru diagnosticarea autismului este de 5 ani jumătate, dar un

sfert din copii rămân nediagnosticaţi până la vârsta de 8 ani. Deşi autismul are o puternică

componentă genetică, diagnosticarea sa se face pe baza comportamentului. Cele mai utilizate

instrumente pentru diagnosticarea autismului sunt ADI-R (Autism Diagnostic Interview

Revised), care constă într-un chestionar de 93 de întrebări şi ADOS (Autism Diagnostic

29

Wan Hussain Wan Ishak, Fadzilah Siraj – “Artificial intelligence in medical applications: an exploration”

29

Observation Schedule), care implică observarea de către un clinician a 27 de atribute de

comportament.

Ambele teste pot dura până la trei ore. Încercările de a diminua durata testelor sunt privite cu

scepticism, experţii considerând că eliminare anumitor întrebări duce la excluderea anumitor

categorii de pacienţi, cum ar fii indivizii cu o funcţionalitate ridicată sau copiii mici. Ultimele

studii dezvoltate de Dennis Wall, directorul Iniţiativei Biologiei Computaţionale de la Şcoala

Medicală Harvard, arată că utilizând inteligenţa artificială şi sistemele expert a identificat un

subset de 7 întrebări din ADI-R şi o serie de comportamente evaluate de ADOS ca fiind cruciale

pentru identificarea autismului. Testând performanţa a 15 algoritmi bazaţi pe învăţare automată

pe cele 93 de întrebări, se observă ca cele mai bune rezultate sunt obţinute de Arborii de Decizie

Alternantă, cu o sesibilitate perfectă de 1 şi o rata de pozitiv fals de 0.013 şi o acurateţe de

ansamblu de 99,9%. Conform acestui clasificator, doar 7 întrebări sunt relevante şi necesare

pentru o diagnosticare corectă, reduând timpul în mod considerabil. Rezultatele celor 15

algoritmi sunt prezentate în tabelul de mai jos.

Table 3. Rezultatele celor 15 algoritmi folosiţi pentru diagnosticarea autismului.

Sursa: Dennis P. Wall et All - “Use of Artificial Intelligence to Shorten the Behavioral Diagnosis

of Autism”

30

Sistemul dezvoltat este aproape în perfectă concordanţă cu diagnosticările specialiştilor în ce

priveşte identificarea autismului. Este mai puţin specific în ce priveşte catalogarea persoanelor

care nu au această boală, şi anume 92%, ceea ce înseamană că 8% din cei care nu suferă de

aceasta afecţiune sunt catalogaţi greşit, ca fiind bolnavi.30

30

Dennis P. Wall, Rebecca Dally, Rhiannon Luyster, Jae-Yoon Jung, Todd F. DeLuca- “

Use of Artificial Intelligence to Shorten the Behavioral Diagnosis of Autism”

31

CAPITOLUL 4

Aplicaţia practică

4.1 Descrierea problemei şi aborări existente în literatură

Descrierea problemei

Dermatologia este o ramură a medicinii care urmăreşte explicarea, diagnosticarea şi tratarea

bolilor de piele, păr şi unghii. O clasă particulară a bolilor dermatologice este denumită

erythemato-squamous, indicând înroşirii pielii (erythemato) cauzată de pierderea celulilor de

piele (squamous). În general, cauza bolii este fie genetică, fie dată de factori de mediu şi se

manifestă în perioade specifice ale vieţii (copilărie, adolescenţă timpurie).

Erythemato-squamous este o categorie generică pentru o varietate de condiţii medicale care

prezintă simptome care coincid. Se practică trei metode principale pentru diagnosticarea

condiţiilor medicale: clinic, hispatologic şi recent, o nouă metodă prin examinare microscopică

specializată. Examinarea clinică se bazează pe un control non-invaziv, vizual al simptomelor

(cum ar fi locaţia, mărimea, prezenţa pustulelor, culoarea). Examinarea hispatologică necesită

prelevarea unei mostre de ţesut (biopsie) şi o analiză de sânge pentru detectarea eventualelor

surse virale. Cea mai recentă metodă de diagnosticare se bazează pe o microscopie confocală

non-invazivă.

Există şase sub-tipuri ale acestei boli (psoriasis, seboreic dermatitis, lichen planus, pityriasis

rosea, cronic dermatitis şi pityriasis rubra pilaris), iar diagnosticarea corectă a uneia dintre ele

este o problemă des întâlnită. Încadrarea într-una dintre cele saşe categorii este o îngreunată din

cauza faptului că au multe simptome similare (de exemplu eritemul - roseata a pielii). O altă

dificultate în diagnosticare apare în cazul în care o boală prezintă caracteristicile alteia în faza

incipientă, crescând astfel şansele unei diagnosticări greşite.31

31

Kenneth Revett, Florin Gorunescu, Abdel-Badeeh Salem & El-Sayed El-Dahshan –„ Evaluation of the Feature

Space of an Erythematosquamous Dataset Using Rough Sets”, 2009

32

În lucrearea de faţă sunt considerate 12 atribute clinice şi 22 de atribute hispatologice. Acestea

sunt ilustrate în tabelul de mai jos:

Tabel 4: Datele (atribute şi clase) folosite în aplicaţie

Sursa: H. Altay Guvenir, Gulsen Demiroz, Nilsel Ilter –”Learning differential diagnosis of erythemato-squamous

diseases using voting feature intervals”, 1988

Setul de date folosi în aplicaţie este preluat din data de baze UCI şi conţine 266 de pacienţi,

diagnosticaţi cu una dintre cele şase subtipuri ale erythemato-squamous, menţionate mai sus.

Fiecare pacient are cele 34 de atribute şi o clasă de decizie, indicând cu ce tip de boală este

diagnosticat pacientul. Valorile atributelor sunt nominale şi, cu excepţia vârstei, sunt cuprinse

între 0 şi 3. Zero indică lipsa atributului, 3 este valoarea maximă posibilă, iar 1 şi 2 sunt valori

intermediare. Atributul de vârstă conţine valorile reale, cuprinse între 17 şi 69, iar pentru acest

atribut există 8 valori lipsă. Distribuţia pacienţilor în fiecare clasă de decizie este prezentată în

tabelul următor:

33

Tabel 5: Distribuţia pacienţilor în fiecare clasa de decizie

Studii existente

Literatura care analizează boala erythemato-squamous este relativ recentă, iar cele mai multe

studii exploatează setul de date oferit de UCI, folosit şi în această lucrare. H. A. Guvenir publică

o serie de studii bazate pe aceste date în care analizeaza noua schemă de clasificare, voting

feature intervals. Rezultatele arată că datele pot fi clasificate corect cu o acurateţe ridicată

(aproximativ 99%). VFI (şi versiunea îmbunătăţită, VFI-5) produce un set de reguli, însă aceste

reguli sunt bazate pe intervale şi descrise valori numerice greu de interpretat pentru neiniţiaţi. Ca

extensie a acestui studiu, cu ajutorul unui algoritm genetic, se găseşte ponderea fiecărui atribut.

Confom acestuia, koebner phenomenon are cea mai mare influenţă în luarea deciziei de

clasificare, primind o pondere de 0.062, fiind urmat de inflammatory mononuclear infiltrare, cu

0.0527. La polul opus, atribute precum acanthosis, follicular horn plug sau vârsta sunt cele mai

puţin relevante.

Tot pe aceste date, Castellano realizează un sistem neuro-fuzzy bazat pe reguli în mai mulţi paşi,

denumit Kernel. Sistemul Kernel are o abordare pe trei etape: în prima fază, un algoritm

supervizat de grupare (cluster) este folosit pentru a găsi informaţii de pe datele iniţiale. Apoi, o

învăţare supervizată de tipul fuzzy- reţele neuronale pentru ajustarea parametrilor din

algormitmul fuzzy. Ultimul pas este procesul de rafinare a regulilor cu scopul de a minimiza setul

de reguli final. Autorii constată că atributul de vârstă reduce acurateţea clasificatorului, de la o

acurateţe de 95% în cazul eliminării acestui atribut, la 71% în cazul prezenţei sale.

Alţi autori au implementat maşini cu suport vectorial (SVM) pentru clasificarea datelor specifice

bolii erythemato-squamous. Într-un raport realizat de Nanni, un ansamblu de clasificatori, fiecare

34

utilizând un subset de date, sunt combinaţi pentru a forma o schema de clasificare holistică

superioară altor SVM-uri pentru acest set particular de date, cu o rată de eroare între 2 şi 3%.

Derya şi Dogdu publică rezultatele unui studiu bazat pe o abordare k-means clustering având ca

rezultat o acurateţe a clasificării de 94%, utilizând datele corespunzătoare pentru 5 clase din 6

(este omisă pityriasis rubra pilaris, cu 20 de instanţe). Czibula şi alţi colaboratori discută

utilizarea unui sistem suport de decizie de tip multi-agent pentru clasificarea acestor date

dermatologice, prezentând un MDSS care dispune de o reţea neuronală antrenată cu

backpropagation, obţinând ca rezultat o acurateţe de peste 99%. Karabatak prezintă un algoritm

hibrid oferind ca date de intrare pentru reţelele neuronale, reguli de asociere. Regulile de asociere

reflectă date interesante conţinute în setul de date şi, prin definiţie, acestea reduc spaţiul

atributelor prin extragerea relaţiilor utile care păstrează esenţa informaţiilor. Noile date obţinute

sunt date apoi reţelei neuronale spre prelucrare. Regulile de asociere reduc spaţiul atributelor de

la 34 la 20, iar algorimul obţine o acurateţe de 99%.

Prezentarea studiilor asupra diagnosticării acestui tip de boală nu este exhaustivă, însă oferă o

indicaţie asupra abordărilor diferite folosite în investigarea conţinutului informaţiilor din acest set

de date. O observaţie imediată este acurateţea ridicată a clasificării pentru mulţi din algoritmii

menţionaţi – peste 99%. Acest procent ridicat este neaşteptat din perspectiva faptului că setul de

date conţine şase clase de decizie şi un număr relativ mic de înregistrări (366). O explicaţie

posibilă este dimensiunea mare a spaţiului atributelor (34). Importanţa fiecăruit atribut constituie

preocuparea cercetătorului Kenneth Revett în studiul referitor la evaluarea atributelor cu ajutorul

datelor neprelucrate. Metoda seturilor de date brute (Rough Sets) are ca filosofie de bază

reducerea elementelor (atributelor) pe baza conţinutului informaţiilor despre fiecare atribut sau

colecţie de atribute (obiecte) astfel încât să existe o mapare între obiectele similare şi clasa de

decizie corespunzătoare. Rezultatele studiului arată că deciziile de clasificare sunt influenţate de

valorile intermediare (1 şi 2) ale atributelor şi nu de cele maximale. Valorile intermediare sunt

mai puţin precise decât cele extreme, generând astfel un număr ridicat de reguli. De asemenea,

utilizând doar atributele clinice, acurateţea este de 50%. Atributele histopatologice produc o

acurateţe a clasificării mai ridicată, de 85%.32

35

4.2 Aplicaţia

4.2.1 Analiză şi proiectare

Document de specificare functională

Cerinţele funcţionale se referă la serviciile pe care un sistem software trebuie să le ofere.

Programul va executa acţiuni precum afişarea, procesarea şi managementul datelor în funcţie de

aceste specificări funcţionale.

Funcţionalitatea aplicaţiei constă în gestionarea pacienţilor, a fişelor medicale, a tratamentelor

precum şi probleme de diagnosticare. Detalierea acestor activităţi este realizată în tabelul

următor:

Nr crt Funcţionalitate

1 Autentificarea medicilor prin userul şi parola personală

2 Doctorii vor putea introduce noi pacienţi şi modifica datele pacienţilor deja existenţi

3 Doctorii au posibilitatea de a consulta fişa medicalş a pacienţilor, de a vedea

istoricul şi date medicale personale.

4 Doctorii vor putea vedea istoricul consultaţiilor şi prescrie noi tratamente

5 Doctorii vor putea folosi algoritmii de diagnosticare pentru boala de piele

„erythemato-squamous”.

Acest sistem este until în multe acţiuni de management al pacienţilor unui spital, ajutând la o mai

bună organizare a datelor şi a muncii.

32

Kenneth Revett, Florin Gorunescu, Abdel-Badeeh Salem & El-Sayed El-Dahshan –„ Evaluation of the Feature

Space of an Erythematosquamous Dataset Using Rough Sets”, 2009

36

Cazuri de utilizare

Caz de utilizare: Autentificare

Actor: Doctor

Descriere: Doctorul doreşte să înceapă o sesiune de lucru în sistem.

Scenariu: CU începe când un doctor doreşte să efectueze diferite acţiuni

1. Terminalul afişează un mesaj prin care cere doctorului userul şi parola.

2. Doctorulul introduce datele cerute.

3. Sistemul verifică credenţialele primite.

4. Sistemul afişează pagina de start a aplicaţiei.

5. CU se incheie.

Scenarii alternative: A1. La pasul 3, autentificarea eşuează, se afisează un mesaj corespunzător

şi acţiunea este reluată de la pasul 1.

Preconditii: Doctorul are credenţiale valide.

Postconditii: Doctorul este autentificat şi poate să acceseze data pacienţilor.

Caz de utilizare: Gestionează pacient

Actor: Doctor

Descriere: Doctorul doreşte să înregistreze/modifice datele unui pacient nou

37

Scenariu: CU începe când un doctor doreşte să gestioneze un pacient

1. Doctorul selectează adăugarea unui nou pacient / un pacient existent

2. Doctorulul introduce datele personale ale pacientului (nume, prenume, CNP, adresa,

telefon)/ modifică date existente

3. Sistemul actualizează datele datele.

4. CU se incheie.

Scenarii alternative: A1. La pasul 3, actualizarea eşuează în cazul în care datele introduse nu

sunt valide, se afişeaza un mesaj corespunzător şi acţiunea este reluată de la pasul 2.

Preconditii: Doctorul este autentificat.

Postconditii: Daca CU se încheie cu succes,un nou pacient este creat/ datele unui vechi pacient

sunt actualizate.

Caz de utilizare: Caută pacient

Actor: Doctor

Descriere: Doctorul doreşte să caute un pacient în BD

Scenariu: CU începe când un doctor doreşte să caute un pacient

1. Doctorul intoduce datele numele sau CNP-ul

2. Doctorul apasă butonul de căutare corespunzator: căutare dupa CNP sau după nume

3. Sistemul afişează datele găsite.

4. CU se incheie.

Scenarii alternative: A1. La pasul 2, cautarea eşuează în cazul în care datele introduse nu sunt

valide, se afisează un mesaj corespunzator şi acţiunea este reluată de la pasul 1.

Preconditii: Doctorul este autentificat, pacientul căutat există în sistem.

Postconditii: Daca CU se încheie cu succes, pacientul căutat este afişat.

Caz de utilizare: Adaugă consultaţie

Actor: Doctor

Descriere: Doctorul doreşte să adauge o nouă consultaţie

Scenariu: CU începe când un doctor doreşte să prescrie un tratament.

1. Doctorul selectează adăugarea unui tratament nou.

2. Doctorul introduce data, diagnosticul şi tratamentul.

3. Sistemul actualizează lista tratamentelor prescrise şi istoricul medical al pacientului.

4. CU se incheie.

38

Preconditii: Doctorul este autentificat şi pacientul există în baza de date.

Postconditii: Daca CU se incheie cu succes,un nou tratament este prescris pacientului şi este

actualizat istoricul său medical.

Caz de utilizare: Gestionează fişa medicală

Actor: Doctor

Descriere: Doctorul doreşte să vizualizeze şi să modifice fişa medicală a pacientului.

Scenariu: CU începe când un doctor doreşte să vizualizeze fişa medicală.

1. Doctorul selectează vizualizarea fişei medicale.

2. Doctorul modifică datele din fişa şi apasă butonul de salvare.

3. Sistemul actualizează fişa medicală.

4. CU se încheie.

Preconditii: Doctorul este autentificat şi pacientul există în baza de date.

Postconditii: Dacă CU se încheie cu succes, fişa medicală a pacientului este actualizată.

Caz de utilizare: Diagnosticare

Actor: Doctor

Descriere: Doctorul doreşte ca pacientul să fie diagnosticat pentru una din cele şase tipuri de boli

de piele erythemato-squamous.

Scenariu: CU începe când un doctor doreşte să diagnosticheze un pacient.

1. Doctorul introduce datele necesare pentru diagnosticare.

2. Doctorul selectează metoda de diagnosticare.

3. Sistemul procesează datele şi execută algoritmul.

4. Sistemul returnează rezultatul diagnosticării.

5. Sistemul salvează datele primite ca noi date de învăţare.

6. CU se încheie.

Preconditii: Doctorul este autentificat, pacientul există în baza de date şi doctorul deţine toate

informaţiile necesare pentru efectuarea diagnosticării.

Postconditii: Daca CU se încheie cu succes, lista datelor de învaţare este actualizată, doctorul

primeşte un rezultat iar istoricul medical al pacientului este actualizat.

39

Diagrama entitate-relaţie

40

Diagrame de secvenţe

a) Pentru cazul de utilizare de diagnosticare

b) Pentru cazul de utilizare de adaugare consultaţie

41

Diagrama de activităţi

c) Pentru algoritmul VFI

42

Structura bazei de date:

43

Diagrama de componente

44

Interfaţa grafică

Fereastra pentru introducerea valorilor atributelor:

Fereastra pentru vizualizarea rezultatelor

45

4.2.2 Implementare

Programul este scris în limbajul Java şi implementează şablonul “Model-View-Controler”.

Interfaţa este realizată cu ajutorul GWT Designer iar pentru popularea tabelelor cu date este

folosit Beans Binding. Pentru manipularea datelor la nivelul bazei de date se utilizează

Activejdbc.

public class DiagnosisInstance {

int[] instance;

public DiagnosisInstance(int[] instance) {

this.instance = instance;

}

public int[] getInstance() {

return instance;

}

public void setInstance(int[] instance) {

this.instance = instance;

}

}

public class DiagnosisTrainingSet {

int[][] data;

public DiagnosisTrainingSet(int[][] data) {

this.data = data;

}

public int[][] getData() {

return data;

}

public void setData(int[][] data) {

this.data = data;

}

}

public class DiagnosisModel {

private static final int NUMBER_OF_INSTANCES = 366;

private static final int NUMBER_OF_FEATURES = 34;

public DiagnosisTrainingSet readTrainingData() {

int[][] rez = new int[NUMBER_OF_INSTANCES][NUMBER_OF_FEATURES + 1];

try {

BufferedReader br = new BufferedReader(new FileReader(

"trainingData"));

String linie;

int i = 0;

while ((linie = br.readLine()) != null) {

String[] line = linie.split(",");

for (int j = 0; j < line.length; j++) {

rez[i][j] = Integer.parseInt(line[j]);

}

i++;

}

br.close();

} catch (IOException e) {

System.err.println("Eroare" + " " + e);

}

return new DiagnosisTrainingSet(rez);

}

}

public class VotingFeatureInterval {

private int NUMBER_OF_INSTANCES;

private static final int NUMBER_OF_FEATURES = 34;

private static final int NUMBER_OF_CLASSES = 6;

46

private static final double MIN_VALUE = -100;

private static final double MAX_VALUE = 100;

public static final Map<Integer, String> diseases = new HashMap<Integer, String>() {

{

put(1, "psoriasis");

put(2, "seboreic dermatitis");

put(3, "lichen planus");

put(4, "pityriasis rosea");

put(5, "cronic dermatitis");

put(6, "pityriasis rubra pilaris");

}

};

public String message = "";

public int votingFeatureInterval(DiagnosisInstance instance,

DiagnosisTrainingSet testData) {

int[] unknown = instance.getInstance();

NUMBER_OF_INSTANCES = testData.getData().length;

LinkedList<double[][]> intervals = train(testData.getData());

double[][] vote = new double[NUMBER_OF_FEATURES][NUMBER_OF_CLASSES];

for (int i = 0; i < intervals.size(); i++) {

LinkedList<Integer> intervalNumber = findIntervalForFeature(

intervals.get(i), unknown[i]);

for (int iclass = 0; iclass < NUMBER_OF_CLASSES; iclass++) {

double classVote = 0;

if (intervalNumber.size() == 1) {

classVote = intervals.get(i)[intervalNumber.get(0)][iclass + 1]

/ count(testData.getData(), i, -100.0, 100.0,

iclass + 1);

} else if (intervalNumber.size() == 2) {

double cv1 = intervals.get(i)[intervalNumber.get(0)][iclass + 1];

double cv2 = intervals.get(i)[intervalNumber.get(1)][iclass + 1];

classVote = (cv1 + cv2)

/ (count(testData.getData(), i, -100.0, 100.0,

iclass + 1) * 2);

}

vote[i][iclass] = classVote;

}

}

normalizeVotes(vote);

double[] result = new double[NUMBER_OF_CLASSES];

int found = 0;

for (int ii = 0; ii < NUMBER_OF_FEATURES; ii++) {

for (int j = 0; j < NUMBER_OF_CLASSES; j++) {

result[j] = result[j] + vote[ii][j];

}

}

List<Double> aux = new LinkedList<Double>();

for (int j = 0; j < NUMBER_OF_CLASSES; j++) {

aux.add(result[j]);

}

Collections.sort(aux);

double max = (double) aux.get(NUMBER_OF_CLASSES - 1);

for (int j = 0; j < NUMBER_OF_CLASSES; j++) {

if (result[j] == max) {

found = j;

}

}

found++;

return found;

}

public LinkedList<double[][]> train(int[][] data) {

LinkedList<double[][]> matrix = new LinkedList<>();

for (int j = 0; j < NUMBER_OF_FEATURES; j++) {

double[][] aux = new double[NUMBER_OF_CLASSES][2];

47

matrix.add(aux);

}

// get end point of each feature for each class

for (int j = 0; j < NUMBER_OF_FEATURES; j++) {

for (int i = 1; i <= NUMBER_OF_CLASSES; i++) {

(matrix.get(j))[i - 1][0] = findEndPoints(data, j, i)[0];

(matrix.get(j))[i - 1][1] = findEndPoints(data, j, i)[1];

}

}

// sort end points

LinkedList<double[][]> matrix2 = new LinkedList<>();

for (int j = 0; j < NUMBER_OF_FEATURES; j++) {

ArrayList<Double> val = createInterval(matrix.get(j));

double[][] aux = new double[val.size() + 2][NUMBER_OF_CLASSES + 1];

matrix2.add(aux);

// count(data,j,val.get(0),val.get(1));

// count each instance

for (int ji = 0; ji < val.size() - 1; ji++) {

(matrix2.getLast())[ji + 1][0] = val.get(ji);

for (int cls = 1; cls < NUMBER_OF_CLASSES + 1; cls++) {

(matrix2.getLast())[ji + 1][cls] = count(data, j,

val.get(ji), val.get(ji + 1), cls);

}

}

// set values for (-infinity,x)

(matrix2.getLast())[0][0] = MIN_VALUE;

for (int cls = 1; cls < NUMBER_OF_CLASSES + 1; cls++) {

(matrix2.getLast())[0][cls] = count(data, j, MIN_VALUE,

val.get(0), cls);

}

(matrix2.getLast())[matrix2.getLast().length - 2][0] = val.get(val

.size() - 1);

for (int cls = 1; cls < NUMBER_OF_CLASSES + 1; cls++) {

(matrix2.getLast())[matrix2.getLast().length - 2][cls] = count(

data, j, val.get(val.size() - 1), MAX_VALUE, cls);

}

// set values for (x, infinity)

(matrix2.getLast())[matrix2.getLast().length - 1][0] = MAX_VALUE;

for (int cls = 1; cls < NUMBER_OF_CLASSES + 1; cls++) {

(matrix2.getLast())[matrix2.getLast().length - 1][cls] = 0;

}

}

return matrix2;

}

public LinkedList<Integer> findIntervalForFeature(double[][] interval,

int value) {

LinkedList<Integer> aux = new LinkedList();

for (int i = 0; i < interval.length - 1; i++) {

if ((value >= interval[i][0] && value <= interval[i + 1][0])) {

aux.add(i);

}

}

if (value >= interval[interval.length - 1][0]) {

aux.add(interval.length - 1);

}

return aux;

}

public double[] findEndPoints(int[][] data, int feat, int cls) {

double[] aux = new double[2];

int min = Integer.MAX_VALUE;

int max = Integer.MIN_VALUE;

for (int i = 0; i < data.length; i++) {

if (data[i][NUMBER_OF_FEATURES] == cls) {

if (data[i][feat] > max)

48

max = data[i][feat];

if (data[i][feat] < min)

min = data[i][feat];

}

}

aux[0] = min;

aux[1] = max;

return aux;

}

private double count(int[][] data, int feat, Double min, Double max, int cls) {

double nr = 0;

for (int i = 0; i < NUMBER_OF_INSTANCES; i++) {

if (data[i][NUMBER_OF_FEATURES] == cls && data[i][feat] < max

&& data[i][feat] > min) {

nr++;

} else if (data[i][NUMBER_OF_FEATURES] == cls

&& (data[i][feat] == min || data[i][feat] == max)) {

nr = nr + 0.5;

}

}

return nr;

}

private ArrayList<Double> createInterval(double[][] ds) {

ArrayList<Double> d = new ArrayList<Double>();

for (int i = 0; i < NUMBER_OF_CLASSES; i++) {

if (!d.contains(ds[i][0])) {

d.add(ds[i][0]);

}

if (!d.contains(ds[i][1])) {

d.add(ds[i][1]);

}

}

Collections.sort(d);

return d;

}

private void normalizeVotes(double[][] vote) {

for (int i = 0; i < vote.length; i++) {

double sum = 0;

for (int j = 0; j < vote[i].length; j++) {

sum = vote[i][j] + sum;

}

for (int j = 0; j < vote[i].length; j++) {

vote[i][j] = vote[i][j] / sum;

}

}

}

}

public class KNearestNeighbour {

public int KNearestNeighbour(Integer k, DiagnosisInstance instance,

DiagnosisTrainingSet testData2) {

int[] unknown = instance.getInstance();

NUMBER_OF_INSTANCES = testData2.getData().length;

double[][] testData = normalizare(testData2.getData());

Double[][] distance = getDistance(testData, unknown);

// order distance

bubbleSort(distance);

// take first sorted k-neighbers's classes

List<Integer> foundClass = new LinkedList<Integer>();

for (int i = 0; i < k; i++) {

int index = (int) Math.round(distance[i][0]);

49

foundClass.add((int) testData[index][34]);

}

int clasa = 0;

int max = 0;

for (int i = 1; i <= NUMBER_OF_CLASSES; i++) {

int nr = Collections.frequency(foundClass, i);

if (nr > max) {

max = nr;

clasa = i;

}

}

return clasa;

}

public Double[][] getDistance(double[][] testData, int[] unknown) {

Double[][] distance = new Double[NUMBER_OF_INSTANCES][2];

// 366 instances for testing

for (int i = 0; i < NUMBER_OF_INSTANCES; i++) {

distance[i][0] = (double) i;

// calculate distance

distance[i][1] = 0.0;

for (int j = 0; j < NUMBER_OF_FEATURES; j++) {

distance[i][1] = distance[i][1]

+ Math.pow(testData[i][j] - unknown[j], 2);

}

distance[i][1] = Math.sqrt(distance[i][1]);

}

return distance;

}

public static void bubbleSort(Double[][] distance) {

int n = distance.length;

for (int pass = 1; pass < n; pass++) { // count how many times

for (int i = 0; i < n - pass; i++) {

if (distance[i][1] > distance[i + 1][1]) {

// exchange elements

Double temp = distance[i][0];

distance[i][0] = distance[i + 1][0];

distance[i + 1][0] = temp;

temp = distance[i][1];

distance[i][1] = distance[i + 1][1];

distance[i + 1][1] = temp;

}

}

}

}

public double[][] normalizare(int[][] data) {

double[][] aux = new double[NUMBER_OF_INSTANCES][NUMBER_OF_FEATURES + 1];

int[] min = new int[NUMBER_OF_FEATURES];

int[] max = new int[NUMBER_OF_FEATURES];

for (int i = 0; i < NUMBER_OF_FEATURES; i++) {

min[i] = Integer.MAX_VALUE;

max[i] = Integer.MIN_VALUE;

}

for (int i = 0; i < data.length; i++) {

for (int j = 0; j < data[i].length - 1; j++) {

if (data[i][j] > max[j])

max[j] = data[i][j];

if (data[i][j] < min[j])

min[j] = data[i][j];

}

}

50

for (int i = 0; i < data.length; i++) {

for (int j = 0; j < NUMBER_OF_FEATURES; j++) {

aux[i][j] = ((double) data[i][j] - (double) min[j])

/ ((double) max[j] - (double) min[j]);

}

}

for (int i = 0; i < data.length; i++) {

aux[i][NUMBER_OF_FEATURES] = ((double) data[i][NUMBER_OF_FEATURES]);

}

return aux;

}

}

public class DistanceWeightedNearestNeighbor {

public int distanceWeightedNearestNeighbor(Integer k,

DiagnosisInstance instance, DiagnosisTrainingSet testData2) {

int[] unknown = instance.getInstance();

NUMBER_OF_INSTANCES = testData2.getData().length;

double[][] testData = normalizare(testData2.getData());

Double[][] distance = getDistance(testData, unknown);

// order distance

bubbleSort(distance);

// take first sorted k-neighbers's classes

double[] weight = new double[NUMBER_OF_CLASSES];

for (int i = 0; i < NUMBER_OF_CLASSES; i++) {

weight[i] = 0;

}

int clasa = 0;

for (int i = 0; i < k; i++) {

int index = (int) Math.round(distance[i][0]);

int disease = (int) testData[index][NUMBER_OF_FEATURES];

if ((distance[i][1]) == 0) {

clasa = disease;

return clasa;

}

weight[disease - 1] = weight[disease - 1] + (1 / (distance[i][1]));

}

Double max = MIN_VALUE;

for (int i = 0; i < NUMBER_OF_CLASSES; i++) {

if (weight[i] > 0 && weight[i] > max) {

max = weight[i];

clasa = i;

}

}

return (clasa + 1);

}

public Double[][] getDistance(double[][] testData, int[] unknown) {

Double[][] distance = new Double[NUMBER_OF_INSTANCES][2];

// 366 instances for testing

for (int i = 0; i < NUMBER_OF_INSTANCES; i++) {

distance[i][0] = (double) i;

// calculate distance

distance[i][1] = 0.0;

for (int j = 0; j < NUMBER_OF_FEATURES; j++) {

distance[i][1] = distance[i][1]

+ Math.pow(testData[i][j] - unknown[j], 2);

}

distance[i][1] = Math.sqrt(distance[i][1]);

}

return distance;

}

51

4.2.3 Manual de utilizare

Utilizare aplicaţiei

Pentru a utiliza aplicaţia, dupa rularea programului, este necesarcă o autentificare cu credenţiale

valide.

Cautarea unui pacient

Prima ferestra care se deschide, după autentificare, perminte căutarea pacienţilor în baza de date.

Căutarea se poate face după nume sau prenume, prin introducerea datelor şi apăsarea butonului

„Search by name”. Rezultatul căutării este afişat în tabelul din partea de jos a ferestrei. De

asmenea, pacienţii pot fi cautaţi dupa CNP, prin introducerea datelor şi apasarea butonului

„Search by CNP”. Rezultatul căutării este afişat în tabelul din partea de jos a ferestrei. În lipsa

unui text de căutare, prin apăsarea unuia dintre cele două butoane menţionate, toţi pacienţii sunt

afişaţi în tabel.

Adaugarea unui nou pacient

Prin apăsarea butonului „New Pacient”, se deschide o nouă fereastră care permite introducerea

datelor de identificare a pacientului. Nu este permisă introducerea unui pacient cu un CNP care

exista deja în baza de date, un numar de telefon cu cifre sau o data care nu respecta formatul

„dd/mm/yyyy”. Butonul „Save pacient” salveaza datele în baza de date.

Vizualizarea datelor unui pacient

Selectând din listă un pacient, se deschide o nouă fereastră unde sunt afişate datele personale ale

pacientului. Datele pot fi modificate, iar prin apăsarea butonului „Save changes” se realizează

salvarea în baza de date. Simultan, se pot vizualiza datele mai multor pacienţi.

52

Vizualizarea fişei medicale

Prin apasarea butonului „Medical Chart” din fereastra „Pacient’s personal data” se deschide o

noua fereastra unde sunt afişate datele medicale ale pacientului. Informaţiile medicale ale

pacientului pot fi modificate, salvarea acestora fiind facută prin apăsarea butonului “Save

changes”. Adăugarea unei noi consultaţii în fişa pacientului se face prin apăsarea butonului „New

Exam”, completarea datelor şi salvarea acestora. Consulaţiile pacientului sunt afişate în tabel.

Diagnosticarea bolii de piele

Prin apăsarea butonului de „Skin disease diagnosis” se deschide o fereastră care permite

introducerea datelor specifice diagnosticării bolilior de piele. Apasarea butonului „Diagnosticate”

actualizează datele în baza de date şi deschide o nouă fereastră pentru procesarea datelor. După

introducerea valorii k (numărul de vecini) şi apăsarea butonului “Results”, diagnosticul dat de

fiecare algoritm este afişat în dreptul numelui său. În partea de mijloc a ferestrei sunt afişate

pentru fiecare algoritm, motivaţia alegerii diagnosticului. Partea de jos a ferestrei prezintă

informaţii generale despre algorimti, şi anume, acurateţea fiecăruia, pe baza metodei de validare

cross-validation de tipul “leave-one-out”.

4.3 Rezultate comparative

Utilizând cross-validation cu metoda “leave-one-out”, pe un set de 366 de instanţe, VFI obţine

cele mai bune rezultate, clasificând corect 91,8% dintre ele. Pentru un k =3, DWNN clasifică

corect un procent de 76,5%, fiind mai precis decat KNN, cu doar 72,67% de instanţe clasificate

corect.

53

Figura 5. Rezultatele obţtinute de VFI, KNN, DWNN (numărul de răspunsuri corecte/ greşite din

366 de instanţe)

Se observă variaţii ale datelor pentru algoritmii KNN şi DWNN, în funcţie de numărul de vecini,

k. KNN are cea mai mare acurateţe pentru un k de valoare 2, catalogând corect 270 de instanţe

din 365. DWNN obţine cele mai bune rezultate pentru un k = 3, catalogând corect 280 de

instanţe.

Figura 6. Rezultatele obţinute de KNN şi DWNN în funcţie de numărul k (% de catalogări

corecte)

54

Pentru cei doi algoritmi datele sunt normalizate, însă se obţin rezultate mai bune înainte de

normalizare. Astfel, pentru un k de valoare 1, KNN cataloghează greşit doar 36 de instanţe, iar

pentru k de valoare 5, DWNN cataloghează greşit doar 35. Această anomalie a datelor este pusă

pe faptul ca atributele au ponderi diferite, fapt de care nu se ţine cont în algoritmul curent.

Figura 7. Rezultatele obţinute de KNN şi DWNN în funcţie de numărul k (% de catalogări

corecte) – fără normalizare

4.4 Extinderi posibile

Aplicaţia de faţă poate suferi mai multe îmbunăţări, existând neajunsuri specifice algorimilor cât

şi specifice problemei studiate.

KNN şi WDNN au câteva ingrediente principale care pot influenţa performanţa acestora: distanţa

metrică, numarul de vecini aleşi pentru a face clasificarea, ponderea vecinilor (pentru WDNN) şi

funcţia de predicţie. Distanţa metrică, care determină cele mai apropiate instanţe, poate fi

imbunătăţite prin utilizarea unui calcul mai complex decât distanţa euclidiană. Acest lucru se

aplică şi în cazul funcţiei de predicţie şi a calcului ponderilor, prin complicarea metodelor

actuale. Acurateţea algoritmului este influenţată de numarul k, motiv pentru care se sugerează

55

căutarea unui k optim. De asemnea, trebuie luate în considerare cazurile de conflic, când două

clase de decizie obţin acelaşi rezultat deoarece implementarea curentă alege prima variantă

găsită.

Normalizarea datelor este o altă problemă cu care se confruntă KNN şi WDNN, însă nu şi VFI.

Deşi aplicaţia de faţă ia în considerare normalizarea datelor, după cum s-a arătat, algoritmii obţin

rezultate mai bună evitând acest proces. Cauzele şi eliminarea acestui fenomen necesită o viitoare

analiză.

O problemă menţionată de-a lungul lucrării este tratarea în mod egal a tuturor atributelor. Din

acest punct de vedere, este necesară folosirea unui algoritm care să determine ponderile în care

fiecare atribut influenţează decizia de diagnosticare. Un alt aspect este eliminarea atributelor care

au o influenţă redusă asupra rezultatului final.

O altă imbunătătire este reducerea numărului de instanţe de învăţare pentru o mai bună

performanţă a algoritmilor. Astfel, este necesară identificarea instanţelor care se afla la limita

spaţială a claselor şi eliminarea celorlate, primele fiind cele care influenţează decizia de

clasificare.

În ce priveşte setul de date curent, există o lipsă de proporţionalitate a numărului de instanţe din

fiecare clasă, acesta variind de la 20 la 112, dezavantajând clasa cu un număr redus de atribute. O

altă posibilă extindere ar fi aplicarea algoritmilor pe alte seturi de date, colectate real. De

asemenea, există multe atribute cu valoarea zero, indicând lipsa acestora. Pentru atributul vârstă,

există 8 valori lipsă în baza de date, caz care trebuie tratat corespunzător (VFI rezolvă această

problemă prin acordarea unui vot de valoare zero).

O ultimă îmbunătăţire poate fi făcută prin extinderea comparaţiei cu alte tehnici de învăţare.

56

CONCLUZII

Diagnosticarea are o mare putere de influenţă: filtrează şi sortează, orientează deciziile,

guvernează asupra emoţiilor şi duce la formarea unui lanţ de acţiuni. Diagnosticarea este un

paradox prin faptul că este dorită şi nedorită în acelaşi timp, fiind o confirmare a prezenţei unei

boli în organism, dar şi o promisiune de recuperare a sănătaţii.

Procesul de diagnosticare este unul complex, care necesită un volum mare de informaţii pe care

specialistul uman nu poate să le deţină în totalitate. Astfel, sistemele inteligente sunt necesare şi

de dorit în a oferi suport medicilor.

Datorită numărului de cazuri reprezentative de succes, consider că în viitor, aceste sisteme vor

face parte integrantă din sistemul medical, crescând astfel acurateţea diagnosticărilor şi reducând

erorile umane.

Diagnosticarea bolilor de piele Erytemato-Squamous este un proces dificil, însă algoritmii

prezentaţi au avut rezultate satisfăcătoare. Îmbunătăţirea acestora (de exemplu, prin acordarea

ponderilor diferite atributelor) poate duce la creşterea acurateţii lor şi a încrederii acordate în

deciziile acestora.

57

BIBLIOGRAFIE

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

New York

2. Tom M. Mitchell- Instance based learning, ed. McGraw-Hill Science/Engineering/Math,

1997

3. Zheming Lu, Hao Luo,Faxin Yu, Pinghui Wang (2010)- Three-Dimensional Model

Analysis and Processing, ed. Zhejiang University Press, Hangzhou, p. 277- 287

4. Peter C. Bruce, Galit Shmueli, Nitin R. Patel (2010), Data Mining for Business

Intelligence: Concepts, Techniques, and Applications în Microsoft Office Excel with

XLMiner, ed John Wiley & Sons Inc, Hoboken, New Jersey 137-145

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

ed Tehnopress, Iasi

6. Maarten van Someren,Gerhard Widmer (1997), Machine Learning: ECML'97: 9th

European Conference on Machine Learning, ed. Springer-Verlag, Berlin

7. Józef Karbicz - Fault Diagnosis.: Models, Artificial Intelligence, Applications, ed

Springer, Berlin, 2004

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

Differential Diagnosis of Erythemato-Squamous Diseases

9. Repository http://archive.ics.uci.edu/ml/datasets/Dermatology

10. Carlos Feder- “Computerized Medical Diagnosis: A Novel Solution to an Old Problem”,

ed. Infinity, SUA, 2006

11. Kavishwar B. Wagholikar, Vijayraghavan Sundararajan, Ashok W. Deshpande-

“Modeling Paradigms for Medical Diagnostic Decision Support: A Survey and Future

Directions”, 2011, http://kwagholikar.files.wordpress.com/2012/08/joms2012modeling-

preprint.pdf, accesat la 23.04.2013

12. Fadzilah Siraj – “Artificial intelligence în medical applications: an

exploration”, http://www.hi-europe.info/files/2002/9980.htm, accesat la 23.04.2013

13. Dennis P. Wall, Rebecca Dally, Rhiannon Luyster, Jae-Yoon Jung, Todd F. DeLuca-

“Use of Artificial Intelligence to Shorten the Behavioral Diagnosis of Autism”,

58

http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0043855#pone-

0043855-t002, accesat la 23.04.2013

14. David H. Freedman- “Machine-learning tool offers rapid autism diagnosis”, 2011

https://sfari.org/news-and-opinion/conference-news/2011/machine-learning-tool-offers-

rapid-accurate-autism-diagnosis, accesat la 23.04.2013

15. Langley Pat – “Elements of Machine Learning”, 1998, ed. Cassell Publishers, England,

pg. 1-7

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

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

17. Rob Schapire – “Foundations of machine learning”, 2003

(http://www.cs.princeton.edu/courses/archive/spring03/cs511/scribe_notes/0204.pdf)

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

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

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

20. Taiwo Oladipupo Ayodele –“Types of Machine Learning Algorithms”, New Advances in

Machine Learning, 2010 http://www.intechopen.com/books/new-advances-in-machine-

learning/types-of-machine-learning-algorithms

21. Jianping Gou, Lan Du, Yuhong Zhang, Taisong Xiong- A New Distance-weighted k-

nearest Neighbor Classier, 2012

22. H. Altay Guvenir, Gulsen Demiroz, Nilsel Ilter –”Learning differential diagnosis of

erythemato-squamous diseases using voting feature intervals”, 1988

23. Kenneth Revett, Florin Gorunescu, Abdel-Badeeh Salem & El-Sayed El-Dahshan –„

Evaluation of the Feature Space of an Erythematosquamous Dataset Using Rough Sets”,

2009