Sunteți pe pagina 1din 67

UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA

FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

SPECIALIZAREA INFORMATICĂ

LUCRARE DE LICENȚĂ

ÎNVĂȚAREA BAYESIANĂ

Conducător ştiinţific
Prof. univ. dr. Czibula Gabriela

Absolvent
Bianca Cristina Drăgoescu

2015
CUPRINS

INTRODUCERE........................................................................................................................4

1. TEHNICI DE ÎNVĂȚARE AUTOMATĂ ÎN INTELIGENȚA ARTIFICIALĂ...............5


1.1. Inteligența artificială....................................................................................................5
1.2. Introducere în învățarea automată................................................................................6
1.3. Module generice ale unui sistem care învață...............................................................7
1.4. Tipuri de învățare automată..........................................................................................8
1.5. Probleme care pot apărea în învățarea automată..........................................................9
1.6. Aplicații ale învățării automate..................................................................................10

2. ÎNVĂȚAREA BAYESIANĂ............................................................................................13
2.1. Teorema lui Bayes......................................................................................................14
2.2. Abordări ale ipotezei cu probabilitatea maximă........................................................16
2.3. Clasificatorul optimal Bayes......................................................................................19
2.4. Clasificatorul naiv Bayes...........................................................................................20
2.5. Rețelele Bayesiene.....................................................................................................22
2.5.1. Deducția în rețelele Bayesiene............................................................................24
2.5.2. Învățarea Rețelelor Bayesiene.............................................................................26
2.5.3. Regula Gradientului Ascendent în Rețelele Bayesiene......................................27
2.5.4. Algoritmul Expectation-Maximization...............................................................28

3. DOMENII DE APLICARE ALE ÎNVĂȚĂRII BAYESIENE.........................................31


3.1. Recunoașterea expresiilor faciale și a emoțiilor.........................................................31
3.2. Recunoașterea vizuală a gesturilor.............................................................................32
3.3. Clasificarea plantelor și a animalelor pe baza MicroARN-ului.................................34
3.4. Optimizarea deciziilor pentru tratamente...................................................................34
3.5. Proiectarea produselor alimentare..............................................................................36
3.6. Clasificarea imaginilor satelitare................................................................................37
3.7. Clasificarea solurilor agricole....................................................................................38
3.8. Procesarea limbajului natural.....................................................................................39

4. APLICAȚIA PRACTICĂ.................................................................................................40

2
4.1. Enunț..........................................................................................................................40
4.2. Analiză și proiectare...................................................................................................40
4.3. Implementare..............................................................................................................47
4.4. Manual de utilizare.....................................................................................................54
4.5. Rezultate obținute.......................................................................................................60
4.6. Extinderi posibile.......................................................................................................64

CONCLUZIE............................................................................................................................66

BIBLIOGRAFIE.......................................................................................................................67

3
INTRODUCERE

În ultimul timp, datorită evoluției rapide a tehnologiei, ființa umană a început să


conștientizeze tot mai mult necesitatea unor sisteme inteligente, care să îi poată ușura
alegerile din viața de zi cu zi. În această direcție, au fost descoperite o multitudine de
concepte, de mecanisme capabile să imite într-o oarecare măsură inteligența umană.
În lucrarea de față, se dorește evidențierea conceptului de Învățare Bayesiană, în raport cu
încadrarea sa în domeniul Inteligenței Artificiale, mai exact în domeniul Învățării Automate.
Acest concept reprezintă o metodă de inferență probabilistică, reușind prin simplitatea sa, în
anumite cazuri, să egaleze, sau chiar să surclaseze performanța altor algoritmi de învățare
automată considerați puternici și robuști, precum rețelele neuronale, mașinile cu suport
vectorial sau arborii de decizie.
Vom începe prin prezentarea tehnicilor de învățare automată în Inteligența Artificială.
Acest prim capitol are rolul de a ne obișnui cu elementele esențiale ale acestui domeniu și de a
ne oferi o perspectivă de ansamblu, o introducere în ceea ce înseamnă conceptul de învățare în
termeni informatici.
În cel de-al doilea capitol, vom detalia raționamentul Bayesian, prin prezentarea teoremei
lui Bayes, ilustrarea diverselor abordări ale ipotezei cu probabilitatea maximă, precum și prin
explicarea metodelor de învățare Bayesiană. Ne vom axa în special pe Clasificatorul optimal
Bayes, Clasificatorul naiv Bayes și Rețelele Bayesiene, evidențiind pe lângă aspecte teoretice
concrete și eventuale îmbunătățiri care pot fi aduse, respectiv eventuale aplicații practice ale
acestora.
Învățarea Bayesiană a fost abordată în foarte multe domenii, în special în acelea care fie
erau instabile, fie necesitau un timp de execuție scurt, ori nu aveau posibilitatea de a oferi un
set de informații inițiale consistent, obținând rezultate foarte bune.În vederea ilustrării acestor
caracteristici, vom aborda ca tematică pentru capitolul al treilea mai multe domenii de
aplicare a metodelor de învățare Bayesiană.
În final, în ultimul capitol vom prezenta o aplicație menită să ilustreze capacitățile
clasificatorului naiv Bayes aplicat pentru categorizarea documentelor textuale. Sistemul de
față va oferi utilizatorului un set complet de funcționalități, alături de o interfața grafică
prietenoasă și ușor de utilizat și nu în ultimul rând o performanță ridicată, menită să ofere
siguranța utilizării.

4
1. TEHNICI DE ÎNVĂȚARE AUTOMATĂ ÎN
INTELIGENȚA ARTIFICIALĂ

1.1. Inteligența artificială

Ființa umană, după cum bine știm, are o înclinare aparte către descoperirea diverselor
modalități de înțelegere și perpetuare a conceptului de inteligență. Întrucât capacitățile noastre
psihice sunt cele care ne ajută să relaționăm cu celelalte persoane din cadrul societății în care
trăim, este normal să încercăm în permanență să ne dezvoltăm această latură definitorie pentru
noi.
În această direcție, a apărut și inteligența artificială, având ca scop principal înțelegerea
entităților inteligente. Spre deosebire de psihologie și filozofie, care de asemenea își îndreaptă
studiile către înțelegerea raționamentului uman, inteligența artificială se laudă și cu
posibilitatea de creare a unui astfel de sistem inteligent, care să fie capabil să își soluționeze
singur problemele care i-au fost atribuite într-o manieră inteligentă, fără intervenția directă a
factorului uman.
Desigur, această abordare a fost privită cu reticență de către cercetători înainte de primele
rezultate satisfăcătoare obținute și considerată aproape imposibil de realizat. Era foarte greu
de acceptat ideea că un anumit mecanism, lipsit de stări emoționale va fi vreodată capabil să
perceapă, să înțeleagă și să manipuleze o lume infinit mai mare și mai complexă decât el
insuși.
Totuși, știința a evoluat rapid, într-o ascensiune exemplară și ne-a dezvăluit faptul că
orice este posibil dacă ne străduim suficient de mult. Au fost necesari 2000 de ani de tradiție
în filozofie (pentru înțelegerea diverselor teorii ale gândirii și învățării), 400 de ani de
cercetare matematică (pentru dobândirea conoștințelor corespunzătoare logicii, probabilisticii,
luării deciziilor și calculelor), cunoștințe din domeniul psihologiei (pentru investigarea minții
umane), cunoștințe din domeniul lingvisticii (pentru structurarea și înțelegerea limbajului
natural) și nu în ultimul rând de informatica clasică, pentru ca acest domeniu de studiu să
devină realitate [16].
Inteligența artificială a prins contur, iar acum este un domeniu vast, care își așteaptă noi
descoperitori. Cuprinde o varietate foarte mare de sub-domenii, pornind de la percepție și
raționament logic, până la rezolvarea unor probleme specifice precum jocul de șah,
dezvotarea unor teoreme matematice, sau chiar diagnosticarea pacienților cu o anumită boală.

5
1.2. Introducere în învățarea automată

Învățarea, precum inteligența, acoperă o gamă variată de procese pe care nu le putem


defini concret, luând în cosiderare multiplele păreri subiective ale specialiștilor în domeniu.
Totuși, în limite largi, putem spune că un sistem învață ori de câte ori își modifică structura,
modul de programare, sau informațiile deținute (fie că ne referim la datele de intrare ale
problemei, ori la rezultatul obținut), cu scopul de a obține îmbunătățiri ale performanței pe
viitor.
Cu siguranță că există asemenea modificări pe care nu le-am putea include în categoria
unor sisteme care învață, precum modificarea structurii unei baze de date. Dacă ne referim
însă la îmbunătățirea performanțelor unui sistem care joacă șah după ce a exersat de mai
multe ori cu un alt sistem, sau cu o persoană, oferirea titlului de sistem capabil să învețe este
oarecum justificată.
De cele mai multe ori, problemele asociate învățării automate [14] sunt strâns legate de
domeniul inteligenței artificiale și implică recunoaștere, diagnoză, planificare, controlul
roboților, predicție, șamd. Pentru a exemplifica această conexiune, prezentăm urmatoarea
schemă ce evidențiză arhitectura unui agent inteligent [14]:

Semnal Funcții
e senzori țintă
Perceptie

Planificare și
Sistem
raționament

Comportament

Acțiuni

După cum se poate observa, un agent percepe și modelează mediul înconjurător pentru
determinarea acțiunilor potrivite, prin anticipare efectelor acestora. Modificările făcute

6
oricărei componente din figură determină învățarea sistemului, iar alegerea mecanismului de
învățare care trebuie adoptat într-o anumită situație se face în funcție de subsistemul care
suferă schimbări.
Desigur, pe lângă faptul că această ramură a inteligenței artificiale este foarte interesantă,
captivantă și provocatoare, atât din punct de vedere psihic, cât și tehnologic, există câteva
motive bine puse la punct conform cărora necesitatea studierii ei este clară:
 Uneori, cerințele problemei nu pot fi definite cu exactitate, în sesul că putem preciza
perechi de tipul: intrări/ieșiri, însă nu putem găsi o relație concretă între cele două.
Avem nevoie de sisteme care să își poată ajusta structura internă, în vederea
determinării unor rezultate corecte, pentru un număr consistent de date de intrare și
care să poată determina funcții de aproximare a acestei relații.
 Diverse metode de învățare pot fi folosite pentru a extrage informații importante din
cadrul unor seturi foarte mari de date (data mining [14]).
 Uneori, oamenii produc sisteme care nu se mulează perfect pe arhitectura mediului în
care sunt utilizate, tocmai datorită faptului ca în etapa de producție sunt omise anumite
specificații. Învățarea automată ar putea elimina aceste probleme, prin posibilitatea
îmbunătățirii sistemului în funcție de factorii externi.
 Întrucât cunoștințele unei ființe umane sunt limitate, anumite probleme ar putea depăși
puterea de înțelegere și decizie a acesteia. Un sistem auto-instruibil ar putea însă în
timp, să depășească această limitare a creierului uman și chiar să găsească soluții.
 Tehnologia se află într-o continuă ascensiune, fiind direct proporțională cu numărul de
descoperiri făcute, cantitatea de cunoștințe acumulate și cu schimbările majore care
apar constant atât din punct de vedere al tehnologiei, cât și al mediului în care trăim.
Redesign-ul constant al sistemelor inteligente este astfel impractic. Învățarea automată
ar putea totuși să determine urmărirea continuă a modificărilor care apar și găsirea
unor modalități de a ține pasul cu acestea.

1.3. Module generice ale unui sistem care învață

Pentru caracterizarea conceptului de învățare automată, au fost definite 4 module


generice, care vor fi prezentate succint în cele ce urmează. Totuși, această clasificare nu se
pretează oricărui tip de algoritm de acest fel, fiind menită să ofere o percepție largă asupra
materializării îvățării.
 Modulul de performanță are rolul de a îmbunătăți performanța sistemului pe baza
funcțiilor țintă învățate. Preia o instanță nouă a problemei ca dată de intrare și produce
ca rezultat succesiunea stărilor obținute până la soluționarea problemei [13].
 Modulul critic preia ca date de intrare istoricul stărilor și obține ca rezultat un set de
date de antrenament pentru funcția țintă. Astfel, fiecărei instanțe din cadrul setului de

7
antrenament îi este asociată o anumită stare a sistemului, alături de aproximarea valorii
funcției țintă corespunzătoare [13].
 Modulul de generalizare are rolul de a descoperi o funcție generală de acoperire a
tuturor cazurilor prevăzute în setul de antrenament și care să poată pe cât posibil să
identifice și posibile apariții ale unor situații încă neîntâlnite [13].
 Modulul de generare a unor experimente noi are rolul de a prelua funcția învățată
anterior, în vederea găsirii unei noi probleme care să fie atribuită sistemului de
performanță. Alegerile trebuie făcute astfel încât rata de învățare a sistemului să fie
maximizată constant [13].

1.4. Tipuri de învățare automată

Pentru a reduce această abstractizare și generalizare a mecanismului de învățare


automată, au fost concepute mai multe clasificări, în funcție de caracteristicile luate în
considerare. Astfel că, referindu-ne la modul de inițiere al algoritmului de învățare precum și
la feedback-ul obținut în urma rulării acestuia, mașinile auto-instruibile folosesc 3 mari tipuri
de învățare:
Învățarea supervizată: pornind de la un set de date de antrenament, adică de la o
colecție de exemple de instanțe ale unei anumite probleme, se dorește determinarea unei
funcții șablon, pe baza căreia vor putea fi clasificate ulterior noile instanțe apărute. Sistemul
este deci pregătit pentru procesul de antrenare, prin primirea inițială a unor informații corecte,
exemplificate, care constituie resursele necesare începerii procesului de învățare. Setul de
antrenament este reprezentat sub forma unui dicționar cu elemente de tip (cheie, valoare),
unde cheie reprezintă instanța, iar valoare constituie clasa căreia i-a fost atribuită această
instanță . Un scenariu ideal, ar permite algoritmului astfel creat să generalizeze informațiile
primite spre înțelegere și învățare, fiind astfel capabil să determine soluția problemelor
apărute, chiar dacă acestea nu au fost învățate până în momentul respectiv.
Pentru ca o anumită problemă să poată fi rezolvată prin învățare supervizată, trebuie
respectată o ”rețetă” bine pusă la punct. Avem nevoie de anumite ”ingrediente”, iar pașii vor
fi făcuți în ordine.
Pentru început, trebuie determinat tipul instanțelor folosite pentru antrenament. De
exemplu, în cazul recunoașterii scrisului de mână, o astfel de instanță ar putea fi reprezentată
de un caracter, un cuvânt, o frază, sau chiar de către un document întreg.
Pasul următor este constituit de găsirea unui set de date de antrenament, care să
corespundă cerințelor noastre și ale sistemului. Informațiile obținute pot proveni atât de la
specialiști umani, cât și de la diverse măsurători făcute în mediul real, cu aplicabilitate în
viața de zi cu zi.
Urmează determinarea modului de reprezentare a caracteristicilor unei instanțe, acest pas
având o influență majoră asupra acurateții funcției învățate. De cele mai mlte ori, aceste

8
caracteristici formează un vector, iar numărul lor trebuie să fie cât mai mic, dar să conțină
totuși suficiente informații, în vederea găsirii rezultatului corect.
În acest pas, vor fi alese structura funcției de învățare și algoritmul corespunzător
acesteia. Se poate opta pentru folosirea unor rețele neuronale, a arborilor de decizie, a
mașinilor cu suport vectorial, a metodelor de învățare bayesiană șamd.
Până în momentul de față, a fost creat scheletul aplicației de învățare. Urmează pasul cel
mai important și anume antrenarea sistemului. Pe baza datelor de antrenament primite, mașina
auto-instruibilă va fi capabilă să învețe și să își definească o concepție clară asupra problemei.
Ultimul pas este cel de testare al sistemului. Astfel, este evaluată acuratețea funcției
învățate, cu ajutorul unui set de date nou, diferit de cel oferit pentru antrenare. Se măsoară
numărul de greșeli făcute, cât și numărul de decizii care au fost luate corect. Astfel, va putea
fi trasă o concluzie asupra calității sistemului și vor putea fi luate eventuale decizii de
îmbunătățire a acestuia.
Învățarea nesupervizată încearcă să găsească structura ascunsă a unor date de intrare
neetichetate, spre deosebire de învățarea supervizată, unde se preciza concret valoarea unei
anumite instanțe. Astfel, în evaluarea potențialei soluții nu există erori, greșeli sau modalități
de recompensă (ca în cazul învățării prin întărire), iar scopul algoritmului nu este unul
predefinit, evoluția acestuia fiind una spontană. Acest tip de învățare este asociat problemelor
de estimare a densităților din statistică și cuprinde multe alte tehnici de căutare și preprocesare
a informațiilor (de exemplu data mining), probleme de clasificare, aplicații ale modelelor
Markov ascunse, separarea oarbă a semnalelor folosind tehnici de extragere a caracteristicilor
pentru reducerea dimensionalității.
Învățarea prin întărire este inspirată din psihologia comportamentală, și se preocupă de
modul în care agenții informatici ar trebui să se comporte într-un anumit mediu, astfel încât
noțiunea de recompensă cumulativă să fie maximizată. Acest tip de învățare diferă de
învățarea supervizată, cât și de cea nesupervizată, avand în vedere faptul că datele de intrare
etichetate/neetichetate lipsesc cu desăvârșire. Accentul cade asupra găsirii unei balanțe între
explorarea teritoriului necunoscut și exploatarea cunoștințelor existente. Astfel, un model de
învățare prin întărire este constituit din: un set de stări reprezentative mediului, un set de
acțiuni, reguli de trecere dintr-o stare în alta, reguli de determinare a unui factor de
recompensă în urma unei astfel de tranziții, precum și reguli care descriu percepția agentului
asupra mediului [13].

1.5. Probleme care pot apărea în învățarea automată

De cele mai multe ori, partea de cercetare a învățării automate este oarecum separată de
motivația aplicării practice a acestor algoritmi. Totuși, un astfel de sistem auto-instruibil ar
trebui să fie scalabil la potențialele probleme care pot apărea în timpul dezvoltării unei

9
aplicații din viața reală, care pe cât de interesantă și captivantă ar putea părea, pe atât este de
imprevizibilă și instabilă.
În urma unor studii amănunțite, s-a demostrat că alegerea algoritmilor de învățare (de
exemplu: mașini cu suport vectorial, arbori de decizie, rețele neuronale șamd.) influențează de
cele mai multe ori performanța sistemului într-o măsură foarte mică, iar pentru multe
probleme din viața reală este ușor să găsim soluția optimă în ceea ce privește metoda utilizată
(de exemplu validarea încrucișată).
Totuși, există și cazuri în care niciunul dintre algoritmii de învățare automată nu se ridică
la măsura așteptărilor noastre. În asemenea situații, ar trebui să ne îndreptăm privirea către
setul de date de antrenament folosit, care poate fi de asemenea problematic, din 3 puncte de
vedere diferite [14]:
 Fie setul de date colectat este prea mic pentru ca sistemul să poată învăța o
generalizare a modelului, fie conține informații eronate sau irelevante, care nu reflectă
adevărata situație a problemei propuse spre a fi rezolvată.
 În al doilea rând, este posibil ca datele oferite către antrenament să conțină ”zgomot”.
Fie valorile instanțelor conțin ”zgomot” aleator sau sistematic, fie
caracteristicile/etichetele acestora sunt deficitare.
 În al treilea rând, este posibil ca aceste caracteristici ce descriu instanțele să nu fie
suficiente pentru o deosebire concretă. De exemplu, mărimea pantofului unui pacient,
nu va ajuta la diagnosticarea tipului de afecțiune pulmonară pe care acesta o are.
Compromisul interferență-variație (”dilema”) poate reprezenta de asemenea o problemă a
performanței scăzute, în cazul algoritmilor de învățare supervizată. Ne-am dori cu siguranță să
putem găsi o modalitate prin care să obținem o acuratețe ridicată luând în considerare atât
datele de antrenament care ne sunt oferite inițial, cât și capacitatea sistemului de a generaliza
pe baza unor date încă necunoscute. Așadar, se încearcă minimizarea simultană a două surse
diferite ale erorii, lucru care previne generalizarea unei funcții pe baza setului de antrenament
[19].
Eroarea de interferență se datorează predicțiilor greșite ale algoritmului de învățare. O
valoare ridicată a acesteia poate cauza omiterea unor relații relevante dintre caracteristicile
instanțelor și funcțiile țintă.
Eroarea de variație este dată de fluctuațiile care pot apărea la nivelul predicțiilor
sistemului. O valoare ridicată a acesteia semnalează obținerea unor rezultate aleatoare, care nu
sunt reprezentative pentru caracterizarea performanței.
Întrucât aceste două tipuri de erori se află în balanță, iar dacă dorim minimizarea uneia
dintre ele, implicit cauzăm accentuarea celeilalte, este nevoie de un compromis care să poată
rezolva într-o anumită manieră această ”dilemă” și să crească pe cât posibil performanța
sistemului.

10
1.6. Aplicații ale învățării automate

Încă din momentul în care au apărut calculatoarele iar știința a început sa evolueze tot
mai mult în această direcție, ne-am întrebat dacă vom fi vreodată capabili să concepem un
astfel de sistem care să învețe, care să poată fi îmbunătățit automat, prin intermediul
experienței acumulate.
Impactul reușitei ar fi unul major, gândindu-ne la reducerea semnificativă a intervenței
umane în cazuri care necesită o bază foarte mare de cunoștințe, sau care au nevoie de o
atitudine fermă, lipsită de trăiri emoționale ce ar putea influența în mod negativ un anumit
rezultat, sau chiar periclita vieți umane.
De asemenea, există si varianta opusă, conform căreia tocmai lipsa factorului emoțional
ar putea constitui problema majoră a învățării automate, în sensul în care un astfel de sistem
nu ar putea reproduce naturalețea și spontaneitatea unei ființe umane. Tocmai din această
cauză, încă există o oarecare reticență în aplicarea acestor algoritmi, mai ales în anumite
domenii cu factor de risc ridicat, precum medicina.
Până în prezent, evoluția învățării automate a urmat un drum ascendent, având în vedere
faptul că au fost descoperiți diverși algoritmi aplicabili în domeniul de față cu rezultate foarte
bune, conducând astfel la o fundamentare teoretică solidă.
De exemplu, conturile de mail pe care le folosim au în spate algoritmi ai învățării
automate, care identifică spam-ul. Google folosește de asemenea astfel de algoritmi pentru a
identifica și reduce pe cât posibil apariția spam-ului web. Companii prestigioase de
ecommerce folosesc această tehnologie alături de alte instrumente, pentru a opri folosirea
frauduloasă a cărților de credit.
În continuare, vom prezenta câteva astfel de sisteme autonome, care au fost deja create,
sau care sunt încă în proces de dezvoltare și optimizare, dar care promit efectul garantat al
unei revoluții spectaculoase tehnologice, în momentul în care vor fi pregătite pentru a putea fi
utilizate în viața reală [18]:
 Amazon, unul dintre inițiatorii învățării automate bazată pe conceperea motoarelor de
recomandare și a algoritmilor de categorizare a prețurilor, încearcă să dezvolte un
sistem care să decidă autonom drepturile de acces la diferite resurse care ar trebui
oferite fiecărui angajat în parte. În rezolvarea acestei probleme, este folosită o bază de
date consistentă, ce conține informații relevante despre rolurile angajaților și nivelele
de acces care le-au fost acordate.
 Universitatea Cornell lucrează în prezent la un algoritm de identificare a balenelor din
ocean pe baza unor înregistrări audio, astfel încât navele să le poată evita. De
asemenea, Universitatea de Stat din Oregon încearcă să dezvolte un produs soft care
va fi capabil să determine specia unei păsări pe baza unor înregistrări audio colectate
din mediul natural.

11
 Companiile și organizațiile de asistență medicală folosesc o tehnică numită Simularea
Evenimentelor Discrete, pentru a prezice timpul de așteptare al unui pacientului în
camera de așteptare a departamentului de urgențe. Pentru ca acest lucru să fie posibil,
se folosesc datele pacienților, diagrame ale departamentului de urgență și chiar
structura camerei respective.
 Cercetătorii de la IMB au reușit să găsească o modalitate de a extrage criterii de
diagnosticare a insuficienței cardiace, pe baza unor documente/notițe puse la dispoziția
tuturor de către medicii de specialitate. Aceștia au conceput apoi un sistem inteligent
de regăsire a informației, prin intermediul unei tehnici numită Procesarea Limbajului
Natural. Softul astfel obținut, poate, pe baza unor criterii inițiale preluate de la
pacient, să decidă dacă acesta suferă de insuficiență cardică, sau nu.
 Organizația Healint din Singapore a creat o aplicație numită JustShakeIt, menită să
vină în ajutorul persoanelor care suferă de boli care pot cauza convulsii. Aceasta
permite trimiterea unui mesaj de urgenţă unei liste de contacte prestabilite, prin
agitarea telefonului cu o mână. Învăţarea automată este folosită în cazul de față, pentru
a distinge cazurile de urgenţă reale față de mișcarea firească a telefonului.

12
2. ÎNVĂȚAREA BAYESIANĂ

Învățarea Bayesiană este o metodă de deducție probabilistică, care se bazează pe


conceptul conform căruia elementele cantitative sunt direct influențate de către distribuția
probabilităților, iar pentru luarea unei decizii optime ar trebui să luăm în calcul
comportamentul acestor probabilități, în conformitate cu datele de antrenament observate. În
ceea ce privește învățarea automată, învățarea Bayesiană este importantă, întrucât ne oferă o
abordare numerică a evidenței ipotezelor alternative.
Acest tip de deducție reprezintă temelia algoritmilor care manipulează probabilitățile,
constituind în același timp și o modalitate de înțelegere, aprofundare și dezvoltare a unor
algoritmi din literatură care nu se axează în mod explicit pe acest aspect.
Există două motive concrete care scot în evidență relevanța acestor algoritmi de învățare
Bayesiană [13].
Primul dintre acestea se referă la acei algoritmi care calculează în mod explicit
probabilitatea pentru fiecare ipoteză în parte, spre exemplu Clasificatorul Naiv Bayes. Dacă
ne uităm puțin la abordările anumitor probleme de învățare de până acum din literatură, vom
observa faptul că acești algoritmi se pretează cel mai bine, fiind cei mai practici și ușor de
aplicat. De-a lungul timpului au fost făcute diverse studii comparative menite să evidențieze
diferențele comportamentale dintre clasificatorul naiv Bayes și alți algoritmi puternici de
învățare automată, precum arborii de decizie sau rețelele neuronale. S-a demonstrat astfel că
primul algoritm menționat era competitiv cu celelalte două, reușind în prisma simplității sale
să obțină în anumite cazuri rezultate mai bune, într-un timp de execuție mai scurt.
Al doilea motiv conform căruia metodele de învățare Bayesiană sunt demne de folosit,
este reprezentat de faptul că aceste abordări ne oferă o perspectivă interesantă de înțelegere a
altor algoritmi, care nu se axează pe teoria probabilistică. Astfel, poate fi realizată o analiză
prin care să se poată determina condițiile care ar trebui respectate în vederea obținerii ipotezei
cu probabilitatea cea mai mare, pe baza datelor de antrenament. De asemenea, în cazul
rețelelor neuronale abordarea Bayesiană ar putea fi folosită pntru minimizarea sumei
pătratelor erorii, iar în cazul arborilor de decizie ar putea fi realizată o analiză a interferenței
inductive, în vederea obținerii unor reprezentări cât mai mici a acestora.
În cele ce urmează, voi prezenta câteva caracteristici esențiale ale învățării Bayesiene
[13]:

13
 Probabilitatea estimată a corectitudinii fiecărei ipoteze este direct influențată de setul
de date de antrenament, fiecare instanță nouă putând crește, respectiv micșora această
valoare. Acest lucru oferă flexibilitate algoritmului, comparativ cu alte abordări care
elimină complet acele ipoteze inconsistente cu una sau mai multe instanțe observate.
 În vederea determinării probabilității finale a unei ipoteze, cunoștințele inițiale a
acesteia (aflate sub forma unei probabilități inițiale, căreia îi este atribuită o anumită
distribuție a probabilității) sunt acumulate cu instanțele noi observate.
 Metodele de învățare Bayesiană pot utiliza ipoteze care reprezintă în sinea lor predicții
probabilistice (de exemplu: ”un anumit pacient care suferă de pneumonie are 94%
șanse de a se recuprea complet”).
 Clasificarea instanțelor noi se realizează prin combinarea valorilor probabilistice a mai
multor ipoteze.
 Chiar și în cazurile în care calculele se dovedesc a fi greu de făcut, metodele
Bayesiene sunt capabile să găsească o modalitate de luare a unor decizii optime.
Desigur, ca în orice domeniu existent, odată cu beneficiile aduse de utilizarea anumitor
metode, apar și anumite dificultăți, sau dezavantaje. În cazul de față, o dificultate practică a
învățarii Bayesiene este constituită de necesitatea cunoașterii unor probabilități inițiale. Dacă
acestea lipsesc, atunci este necesară aproximarea acestor valori, în funcție de cunoștințele
existente. De asemenea, costul computațional ridicat pentru determinarea ipotezei optime în
cazul general, poate constitui o dificultate practică, aceasta fiind totuși redusă semnificativ în
anumite cazuri.

2.1. Teorema lui Bayes

Teorema lui Bayes stă la baza teoriei probabilităților, fiind inițial stabilită de către
Reverend Thomas Bayes. În termeni largi, reprezintă înțelegerea modului în care
probabilitatea unei ipoteze considerată ca fiind corectă poate fi influențată de apariția unei
instanțe noi. A fost folosită într-o varietate mare de domenii, de la biologie marină, până la
conceperea unor sisteme de blocare e emailurilor de tip spam, iar în filozofia științelor, a fost
utilizată pentru a clarifica relația dintre terorie și dovadă.
Pentru a putea enunța concret Teorema lui Bayes, vor fi utilizate următoarele notații:
 Pentru o anumită ipoteză h , vom nota cu P(h) probabilitatea inițială a acesteia, înainte
să fie observată vreo dată de antrenament. P(h) este deseori numită probabilitatea
anterioară a lui h și poate evidenția orice informație inițială pe care o avem despre
posibilitatea ca h să fie o ipoteză corectă. În cazul în care nu avem cunoștințe
anterioare, putem atribui fiecărei ipoteze aceeași probabilitate.
 Similar, vom nota cu P( D) probabilitatea inițială/anterioară a datelor de antrenament
D care vor fi observate.

14
 P(D∨h) va reprezenta probabilitatea datelor de antrenament D , în raport cu ipoteza h .
 Ceea ce ne interesează de fapt pe noi, se numește probabilitatea posterioară a ipotezei
h și este calculată după vizulizarea datelor de antrenament D. Se notează cu P(h∨D)
și reflectă influența datelor de antrenament D, în contrast cu probabilitatea anterioară
P(h) care este independentă de D.
Astfel, putem defini teorema lui Bayes care calculează probabilitatea posterioară
P(h∨D), în funcție de: probabilitatea anterioară - P(h), probabilitatea anterioară a datelor de
antrenament - P( D) și probabilitatea datelor de antrenament D în raport cu ipoteza h -
P(D∨h):
P ( D|h )∗P (h)
P ( h|D )=
P( D)
În majoritatea algoritmilor de învățare, dintr-o mulțime de ipoteze H, se dorește găsirea
acelei ipoteze h ∈ H care are probabilitatea cea mai mare de a fi corectă (sau măcar una dintre
ele, în cazul în care sunt mai multe ipoteze care respectă această condiție), luând în
considerare un set de date observate D. O astfel de ipoteză se numește ipoteză MAP
(Maximum A Priori) [13] (notată cu h MAP) și poate fi identificată cu ajutorul formulei lui
Bayes. Practic, se calculează probabilitatea posterioară pentru fiecare ipoteză candidat,
alegându-se ulterior ipoteza cu valoarea probabilistică cea mai mare.
argmax
argmax P ( D|h )∗P ( h ) argmax
h MAP= h∈ H P(h∨D) = = h ∈ H P ( D|h )∗P ( h )
h ∈H P ( D)
Întrucât P ( D ) este o constantă și nu depinde de h, nu influențează în niciun fel
determinarea ipotezei cu probabilitatea posterioară maximă. Astfel, ecuația a fost simplificată,
renunțându-se la acest termen.
În unele cazuri, probabilitățile anterioare ale fiecărei ipoteze sunt egale (
P ( hi ) =P ( h j ) , ∀ hi ,h j ∈ H ) fapt pentru care va fi exclus și termenul P ( h ), rămânând doar
termenul P ( D|h ) care va determina rezultatul. Orice ipoteză care maximizează acest termen se
numește ipoteza cu probabilitatea maximă ML (Maximum Likelihood) [13] (notată cu h ML).
h ML =argmax
h ∈H P(D∨h)

Pentru a fi clară conexiunea dintre teorema lui Bayes și problemele de învățare automată,
ne-am referit la setul de date observate D ca la la un set de date de antrenament
corespunzătoare anumitor funcții țintă, iar la Hca reprezentând spațiul acestor funcții.
Urmărirea acestor pași generali definește conceptul de învățare Bayesian prin forță brută,
care în ciuda faptului că este un consumator puternic din punct de vedere computațional
(deoarece este aplicată teorema lui Bayes pentru fiecare ipoteză dinH pentru a calculaP ( h|D )
), reușește în anumite cazuri concrete să egaleze sau chiar să surclaseze performanța altor
algoritmi de învățare automată considerați mult mai eficienți.

15
Totuși teorema lui Bayes nu se rezumă doar la atât, fiind generală și deci ușor scalabilă la
diferite abordări. De exemplu spațiul ipotezelor H ar putea fi înlocuit cu un set de propoziții
care se exclud reciproc, respectându-se condiția ca suma probabilităților lor să fie exact 1.

2.2. Abordări ale ipotezei cu probabilitatea maximă

Metodele de învățare Bayesiană pot fi utilizate în anumite cazuri pentru determinarea


ipotezelor cu probabilitatea maximă a unor algoritmi, chiar dacă aceștia nu manipulează în
mod direct probabilitățile, adică nu folosesc formula lui Bayes pentru determinarea acestora.
În ceea ce privește problemele de învățare care au o funcție țintă cu valori continue
(precum rețelele neuronale sau regresia liniară), un studiu amănunțit în cadrul căruia s-au
utilizat metode Bayesiene ne arată faptul că sub anumite circumstanțe, orice algoritm care
minimizează suma pătratelor erorii dintre predicțiile ipotetice și datele de antrenament va găsi
o ipoteză de probabilitate maximă [13].
Pentru a demonstra acest lucru, să presupunem că avem un algoritm de învățare L care
folosește un spațiu al instanțelor X și un spațiu al ipotezelor H compus din clase având funcții
cu valori reale definite peste X (fiecare ipoteză h din H este o funcție de forma: h : X → ϑ unde
ϑ reprezintă setul de date reale). Rolul algoritmului de învăţare L este acela de a învăţa o
funcţie target necunoscută h : X → ϑ pe baza ipotezelor din H. Avem disponibil un set de date
de antrenament m, fiecare instanţă având valoarea funcției target coruptă de un zgomot ales
aleator, corespunzător distribuției probabilistice normale. Astfel, fiecare exemplu din setul de
date de antrenament poate fi văzut sub forma unei perehi ¿ x i , d i >¿, unde d i=f ( x i )+ e i. În
cazul de față f ( x i ) reprezintă valoarea funcției target lipsită de zgomot, iar e i este o variabilă
aleatoare ce reprezintă zgomotul. Considerăm că valorile e i sunt independente, având ca
model de distribuție cea Normală, cu media 0. Scopul algoritmului de învățare este acela de a
găsi ipoteza cu probabilitatea maximă.

16
Pentru exemplificare, se poate observa imaginea precedentă [13], problema prezentată
fiind aceea de învățare a unei funcții liniare, cu valori reale. Funcția target f corespunde liniei
solide, iar datele de antrenament de forma ¿ x i , d i >¿ sunt reprezentate de cele cinci puncte.
Linia punctată corespunde funcției liniare care minimizează suma pătratelor erorii, fiind de
asemenea și ipoteza cu probabilitatea maximă h ML. După cum se poate observa, h ML nu este
aceeași cu ipoteza corectă, iar acest lucru se datorează faptului că a fost aleasă în urma
observării doar a cinci instanțe și acestea prezentând zgomot.
Întrucât este vorba despre numere reale, este imposibil să le asignăm valori aleatoare
astfel încât suma acestora să fie 1. Din această cauză, ne sunt necesare densitățile
probabilităților. Vom nota p(x 0 ) densitatea probabilității, aceasta fiind calculată astfel:
1
p(x 0 )≡ lim P( x 0 ≤ x ≤ x 0+ ϵ )
ϵ →0 ϵ
În ceea ce privește Distribuția Normală, reprezintă un model de distribuție sub formă de
clopot care este caracterizată de media ei μ și de către deviația standard σ .
Scopul nostru este acela de a arăta faptul că ipoteza care minimizează suma pătratelor
erorii este chiar h ML, adică ipoteza cu probabilitatea maximă. Astfel, vom scrie formula
maximizării valorii ipotezelor, folosindu-ne de această dată de densitatea probababilităților:
h ML =argmax
h ∈H p(di ∨h)

Având în vedere faptul că instanțele din setul de date de antrenament sunt independente,
putem considera p ( D|h ) ca fiind produsul mai multor entități de forma p ( d i|h ):
m
argmax
h ML = h ∈H ∏ p (d i∨h)
i=1
Deoarece zgomotul e i îndeplinește o Distribuție Normală cu media 0 și varianță σ 2
necunoscută, fiecare d i trebuie de asemenea să îndeplinească o Distribuție Normală centrată

mai degrabă în jurul funcției target f (x i) decât în 0. Astfel, p ( d i|h ¿ poate fi scris ca o
Distribuție Normală cu varianța σ 2 și media μ=f ( x i ). Obținem:

17
argmax m −1
(d − μ)
2 m
argmax −1 2
(d −h ( x ))
∏ 1 2 e 2σ ∏ 1 2 e2 σ
2 i 2 i i

h ML = =
h ∈H i=1 √ 2 π σ h ∈ H i=1 √ 2 π σ
Întrucât funcția logaritmică este monotonă, putem să ne simplificăm munca prin
maximizarea logaritmului expresiei:
argmax m
h ML = ∏ ln 1 2 − 21σ 2 (d i−h ( x i ) )2
h ∈H
i=1 √2 π σ
Primul termen poate fi eliminat, deoarece este independent de h:
argmax m
h ML = ∏ 2−1σ 2
(d i−h ( xi ) )2
h ∈H i=1
Maximizarea unei valori negative este egală cu minimizarea valorii pozitive a acesteia,
fapt pentru care putem elimina semnul negativ, alături de valorile constante:
m
argmin
h ML = h ∈H ∏ ( di −h ( x i ))2
i=1
După cum se poate observa, rezultatul obținut ne confirmă faptul că ipoteza cu
probabilitate maximă h ML este reprezentată de minimizare sumei pătratelor erorii dintre datele
de antrenament observate d i și predicțiile ipotezelor h ( x i ). Acestă abordare este deseori
utilizată în diverse analize ale metodelor de învățare Bayesiană, datorită faptului că este mult
mai ușor de urmărit și demonstrat din punct de vedere matematic. După cum am precizat și
anterior, este posibil ca h ML să nu fie identic cu h MAP, reprezentând intenția de atingere a
idealului. Totuși, această egalitate poate fi atinsă, dacă ne asumăm uniformitatea
probabilităților inițiale ale ipotezelor.
Importanța abordării acestei probleme, constă în faptul că se folosește deseori în rețelele
neuronale, cât și în alte abordări ale estimării funcțiilor cu valori reale. Există însă și anumite
limitări ale acestui model, având în vedere faptul că s-a luat în considerare zgomotul doar în
cazul funcțiilor țintă ale datelor de antrenament.
O altă problemă care se pretează funcțiilor cu valori reale, ar putea fi reprezentată de
învățarea sistemului să prezică probabilități. Să presupunem că avem o funcție nedeterministă
f : X → {0,1 }, unde X reprezintă spațiul instanțelor, iar f (x) cu x ∈ X reprezintă valoarea
funcției target (0 sau 1). Această definiție presupune excluderea mutuală a celor două funcții
țintă, în sensul că fiecare dintre acestea corespunde negării celeilalte. Util ar fi ca sistemul să
nu scoată în evidență doar acel rezultat pe care îl consideră ca fiind cel mai bun, ci să ne
prezinte și predicția probabilistică ce l-a determinat să ia această decizie. Așadar, dorim ca
algoritmul să învețe o nouă funcție țintă f ' : X → {0,1 }, astfel încât f ' ( x )=P(f ( x )=0). Vom
putea deduce apoi P(f ( x )=1) prin scăderea din 1 a valorii obținute.
Dacă am dori de exemplu să abordăm această problemă în rețelele neuronale, astfel încât
acestea să învețe funcția f ', o modalitate nu foarte elevată ar putea fi constituită de
identificarea frevențelor de apariție a fiecărei valori pe care o poate lua f ', luând în
considerare fiecare instanță din X, acestea fiind ulterior folosite în procesul de antrenare.
Există totuși o modalitate directă de instruire a unor astfel de sisteme pe baza setului de
date de antrenament, astfel încât să poată fi obținută o ipoteză de probabilitate maximă pentru
f '. Considerăm setul de date de antrenament D ca fiind compus din perechi de forma:
¿ x i , d i >¿ unde d i reprezintă valoarea lui f (x i), adică 0 sau 1. De asemenea, instanțele
corespunzătoare setului de deate pentru antrenament sunt considerate ca fiind independente.
Pe baza acestor presupuneri, se obține [13]:

18
m
argmax
h ML = h ∈H ∏ h ( x i )d (1−h ( x i ) )1−d
i i

i=1
Expresia din partea dreaptă a ecuației poate fi văzută ca o generalizare a Distribuției
binomiale. De asemenea, ca în cazul precedent, uneori poate fi mai ușor să lucrăm cu funcția
logaritmică. Astfel obținem:
m
h ML =∏ di ln h ( x i ) +¿( argmax
h∈ H ¿ 1−d i )ln ⁡(1−h ( xi ) )¿ ¿
i=1
Această ecuație ne prezintă cantitatea care trebuie maximizată în vederea obținerii
ipotezei cu probabilitatea maximă, rezultat anolog problemei prezentată anterior, în care, pe
baza unor setări prestabilite ipoteza h MLera obținută prin intermediul sumei pătratelor erorii.
Definiția ipotezei de probabilitate maximă ar putea ajuta la analiza Principiului descrierii
lungimii minime, în vederea găsirii unor reprezentări cât mai mici a arborilor de decizie.
Pentru realizarea acestui lucru, este necesară cunoașterea tuturor probabilităților inițiale P(h),
cât și probabilitățile datelor de antrenament D în raport cu ipotezele h, adicăP(D∨h).
Această abordare nu scoate însă în evindență faptul că ipotezele cele mici sunt
întotdeauna și cele mai bune.

2.3. Clasificatorul optimal Bayes

Acest clasificator mai este numit și algoritmul optim de învățare Bayesiană, având în
vedere faptul că nicio altă metodă de clasificare nu poate să îl surclaseze, dacă sunt luate în
considerare aceleași cunoștințe inițiale și același spațiu al ipotezelor. Acest lucru se datorează
faptului că pentru clasificarea unei instanțe noi sunt observate toate ipotezele h, eliminându-se
conceptul de independență al acestora.
Pentru exemplificare, să presupunem că avem un spațiu al ipotezelor H={h 1 ,h 2 , h 3 },
probabilitățile posterioare ale acestora după observarea datelor de antrenament fiind:
P ( D|h 1 )=0.5, P ( D|h 2 )=0.4, P ( D|h 3 )=0.4. Corespunzător acestor valori, h 1 este ipoteza cu
probabilitatea maximă. Considerăm că o instanță nouă x a fost clasificată ca fiind corectă de
către ipoteza h 1, respectiv greșită de către ipotezele h 2 și h 3. Luând toate ipotezele în
considerare, probabilitatea ca instanța x să fie corectă este 0.5 (valoare corespunzătoare
ipotezei h 1), respectiv 0.8 probabilitatea ca instanța x să fie greșită (valoare corespunzătoare
însumării probabilitățiler posterioare ale ipotezelor h 2 și h 3). După cum se poate observa,
clasificarea noii instanţe negative în cazul de faţă este diferită de clasificarea generată de
ipoteza cu probabilitatea maximă.
Astfel, considerăm că probabilitatea unei noi instanțe a cărei clasificări poate lua orice
valoare v j ∈ V , este determinată de următoarea expresie:
P ( v j| D )= ∑ P ( v j|h i) P ( hi|D )
hi ∈ H

Desigur, scopul nostru este acela de a identifica acea ipoteză cu probabilitatea maximă de
a fi corectă, adică valoarea v j pentru care P ( v j| D )este maximă:

19
argmax
v j∈ V ∑ P ( v j|hi ) P ( h i|D )
hi ∈ H

Ceea ce este interesant la acest clasificator este faptul că există posibilitatea ca anumite
predicții să nu corespundă unei anumite ipoteze h aflată în spațiul ipotezelor H, deoarece
etichetarea acestora este diferită de etichetarea instanțelor noi.
O abordare a acestei situații este constituită de considerarea unui spațiu al ipotezelor H '
pentru Clasificatorul optimal Bayes diferit de spațiul ipotezelor H pe care este aplicată efectiv
teorema lui Bayes. Astfel, H ' conține ipotezele comparative corespunzătoare combinațiilor
liniare ale predicțiilor pentru ipotezele din H [13].
Din păcate, acest clasificator nu poate fi aplicat în practică decât pentru problemele
simple, iar în continuare vor fi prezentate câteva motive:
 Spațiile ipotezelor sunt în general mult prea mari astfel încât iterarea să poată fi facută
corespunzător formulei.
 Anumite ipoteze reprezintă predicții ale unei singure clase/categorii, astfel că
determinarea probabilității pentru fiecare categorie în parte P ( v j|hi ) nu își mai are
sensul.
Având în vedere faptul că algoritmul de clasificare optimal Bayes este destul de
costisitor, s-a dorit identificarea unei abordări noi care să elimine acestă problemă. Astfel, a
apărut algoritmul Gibbs, o simplificare a predecesorului său, care se axează pe alegerea
aleatoare a unei ipoteze h ∈ H în conformitate cu distribuția probabilităților posterioare peste
H. Această ipoteză aleasă este folosită ulterior pentru clasificarea următoarei instanțe.
Totuși, deși ne-am aștepta la obținerea unui algoritm nu foarte performant, în anumite
circumstanțe, eroarea de clasificare obținută este de cel mult două ori mai mare decât eroarea
obținută prin utilizarea clasificatorului optimal Bayes.
Această abordare a estimării Bayesiene nu doar că a făcut posibilă rezolvarea
problemelor complexe, ci a și devenit o rutină în anumite cazuri în care s-a demonstarat faptul
că această metodă de clasificare se pretează cel mai bine.

2.4. Clasificatorul naiv Bayes

Clasificatorul naiv Bayes (CNB) face parte din familia clasificatorilor probabilistici, are
la bază teorema lui Bayes și presupune independența caracteristicilor. A început să fie studiat
din anul 1950 și s-a evidențiat prin capacitatea de a surclasa în anumite cazuri alți algoritmi de
învățare automată considerați robuști și puternici, precum rețelele neuronale, arborii de
decizie sau mașinile cu suport vectorial. În domeniul clasificării documentelor de tip text,
clasificatorul naiv Bayes se descurcă neașteptat de bine, mai ales în cazul în care partea de
preprocesare este realizată corespunzător.

20
Este ușor adaptabil, datorită simplității sale. Modelele care asignează etichete instanțelor
problemei sunt reprezentate sub forma unui vector de atribute, iar procesul de antrenare
decurge foarte bine, mai ales în cazul în care setările sistemului corespund învățării
supervizate. În majoritatea aplicațiilor practice, estimarea parametrilor pentru aceste modele
naive se realizează prin metoda probabilității maxime, prezentată anterior, nefiind necesară
utilizarea altor metode de învățare Bayesiană.
Clasificatorul naiv Bayes se aplică la acele probleme de învățare, unde fiecare instanță x
este descrisă de succesiunea unor valori corespunzătoare atributelor ¿ a1 , a2 , … , an >¿, iar
fiecare funcție target f (x) poate lua orice valoare dintr-un spațiu finit V .
Algoritmul de învățare este constituit de următorii pași esențiali: pentru fiecare funcție
target în parte este oferit un set de date de antrenament, iar în momentul în care este
prezentată o instanță nouă, sistemul își va evidenția decizia luată cu privire la clasificarea
acesteia. Abordarea Bayesiană constă deci, în determinarea funcției țintă cu probabilitatea cea
mai mare luând în considerare vectorul de valori corespunzătoare atributelor ce descriu noua
instanță [13].
v MAP =P( v j ∨argmax
v ∈V ¿ a 1 , a2 , … , an )¿
j

Putem folosi teorema lui Bayes pentru a rescrie această expresie, obținând:
argmax
P ( a1 , a2 , … , an|v j ) P(v j ) argmax
= v ∈V P ( a 1 , a2 , … , an|v j ) P(v j)
v ∈V
j
P(a1 ,a 2 , … , an ) j

În vederea estimării valorii P(v j ) s-ar putea determina frecvența apariției valorii v j în
cadrul setului de date pentru antrenament. Totuși, aplicarea aceleiași metode pentru estimarea
termenilor P ( a1 , a2 , … , an|v j ) nu este fezabilă decât în cazul în care avem un set foarte mare
de date.
Întrucât clasificatorul naiv Bayes se bazează pe conceptul conform căruia valorile
atributelor sunt independente în raport cu valoarea funcției țintă, putem considera că
probabilitatea de a observa succesiunea a 1 , a2 , … , an este determinată de produsul
probabilităților pentru fiecare atribut în parte, astfel că:
P ( a1 , a2 , … , an|v j )=∏ P(ai ∨v j)
i

Înlocuind aceasta în expresia de mai sus, obținem modul de lucru al Clasificatorului naiv
Bayes, unde v NB reprezintă funcția target identificată:
v NB =argmax
v ∈V P( v j ) ∏ P(ai ∨v j )
j
i

După cum se poate observa, numărul de termeni distincți P(a i∨v j) care trebuie estimați
pe baza setului de date de antrenament este redus drastic, comparativ cu abordarea anterioară
care necesita estimarea tuturor termenilor P ( a1 , a2 , … , an|v j ).

21
În mod normal, probabilitatea P(a i∨v j) se calculează după formula
număr cazuri favorabile
. Deși în majoritatea cazurilor probabilitatea obținută este bună, s-a
număr cazuri posibile
observat faptul că în momentul în care numărul cazurilor favorabile este foarte mic, estimările
obținute nu sunt extraordinare. De asemenea, dacă estimarea probabilității este 0,
clasificatorul va fi influențat în viitor, tocmai datorită faptului că formula de identificare a
rezultatului presupune multiplicarea acestei valori cu celelalte probabilități.
Pentru evitarea acestei probleme, s-a adoptat o nouă abordare a clasificatorului, estimarea
probabilităților realizându-se prin intermediul următoarei formule:
număr cazuri favorabile+ m∗p
număr cazuri posibile +m
Astfel, preprezintă estimarea inițială a probabilității pe care dorim să o determinăm, iar m
reprezintă o constantă, care influențează valoarea lui p raportată la setul de date de
antrenament. În cazul în care nu există cunoștințe inițiale, se ia în considerare metoda
atribuirii uniforme a probabilităților.
Totuși, acest clasificator are și limitările sale. În cazul problemelor de clasificare binară,
nu se poate învăța decât o funcție liniară, astfel încât optimalitatea scade în cazul conceptelor
inseparabile din punct de vedere liniar (un exemplu clasic reprezentativ ar putea fi constituit
de funcția XOR). Odată cu creșterea numărului valorilor pe care le poate avea funcția țintă,
clasificatorul poate învăța și funcții polinomiale.
Aceste limitări nu constituie însă o piedică în calea succesului clasificatorului naiv Bayes,
acesta obținând performanțe foarte bune în practică, iar deciziile de clasificare sunt de multe
ori corecte, chiar dacă estimarea probabilităților este inexactă.
În urma unor cercetări, CNB s-a dovedit a fi la nivelul maxim al performanței, în două
cazuri concrete: când este luată în considerare independența completă a caracteristicilor (ceea
ce este de așteptat), respectiv dependența funcțională a caracteristicilor (ceea ce este
surprinzător) [15].

2.5. Rețelele Bayesiene

Rețelele Bayesiene reprezintă modele grafice [17] pentru evidențierea relațiilor


probabilistice ale unor variabile în medii incerte. Astfel că fiecare nod al grafului este
constituit de o variabilă aleatoare, în timp ce arcele dintre noduri constituie dependențe
probabilistice dintre variabilele aleatoare corespunzătoare. Aceste dependențe condiționale
din cadrul grafului sunt deseori estimate prin folosirea unor metode computaționale de natură
statistică.
Modelele grafice care înlocuiesc prezența arcelor cu cea a muchiilor sunt numite în
general Rețele Markov, aceste prezentând o simplă definiție a independenței dintre două

22
noduri distincte. Rețelele Bayesiene corespund unei structuri grafice diferite, denumită și graf
aciclic direcționat și sunt deseori utilizate în domenii precum statistica, inteligența artificială
sau învățarea automată. Această popularitate se datorează atât fundamentării matematice
solide cât și posibilității de înțelegere intuitivă a acestora.
Rețelele Bayesiene obțin o performanță ridicată în cazul în care seturile de date sunt
incomplete, eliminând problema predicțiilor inconsistente datorate lipsei corelațiilor dintre
variabilele de intrare. De asemenea, acestea permit învățarea relațiilor cauzale care ne sunt
utile în momentul în care dorim să înțelegem domeniul problemei, ajutându-ne de asemenea și
la obținerea predicțiilor în condiții instabile.
Cu ajutorul tehnicilor de statistică Bayesiene, rețelele Bayesiene contribuie la formarea
unui domeniu vast de cunoștințe și informații necesare oricărei analize de natură
probabilistică, iar cu ajutorul celorlalte metode Bayesiene și a altor modele ne oferă o
abordare eficientă pentru evitarea aglomerării datelor [19].
Pentru a scoate în evidență reprezentarea rețelelor Bayesiene, vom considera că acestea
sunt alcătuite din două seturi: setul nodurilor și setul arcelor. Nodurile constituie variabile
aleatoare și sunt desenate sub forma unor cercuri etichetate cu numele variabilelelor, în timp
ce arcele constituie dependențe directe între aceste variabile și sunt desenate sub forma unor
săgeți între noduri.
Considerând concret un arc care pornește din nodul Y i și se termină în nodul Y j,
înțelegem faptul că valoarea variabilei Y j depinde de valoarea variabilei Y i, adică Y i
influențează Y j. Astfel, nodul Y i este numit și părintele nodului Y j. Similar, nodul Yx j este
numit și copilul nodului Y j. Dacă abordăm însă o extensie a acestor denumiri, ne referim la
setul nodurilor care pot fi obținute prin drumuri directe pornind din nodul curent ca fiind
succesorii nodului respectiv, în timp ce setul nodurilor care conduc prin drumuri directe către
nodul curent se numesc predecesorii acestuia. Structura unui astfel de graf aciclic, ne
garantează faptul că niciunul dintre noduri nu poate fi propriul său succesor sau predecesor,
condiție care este de altfel foarte importantă pentru factorizarea probabilității comune a
nodurilor.
Pentru completarea acestei structuri, trebuie să specificăm și modul în care sunt descriși
parametrii modelului. Aceștia se bazează pe proprietatea Markoviană, conform căreia
distribuția probabilităților condiționale pentru fiecare nod în parte depinde doar de părinții
acestuia. În ceea ce privește variabilele discrete aleatoare, aceste probabilități condiționale
sunt deseori reprezentate sub forma unui tabel care conține pentru fiecare probabilitate locală
pe care un nod copil o poate lua, valorile corespunzătoare fiecărei combinații posibile dintre
nodurile părinți.
Fie Y 1 ,… , Y nun set arbitrar de variabile aleatoare, unde fiecare variabilă Y i poate lua orice
valoare din setul de valori posibile V (Y i ). Definim spațiul comun [13] al setului de variabile
Y ca fiind reprezentat de următorul produs V ( Y 1 )∗V ( Y 2 )∗…∗V (Y n ). Astfel, fiecare element

23
din spațiul comun corespunde unei posibile atribuiri de valori din cadrul tuplului de variabile:
¿ Y 1 … Y n >¿. Distribuția probabilității peste acest spațiu se mai numește și distribuția comună a
probabilităților, fiind reprezentată de către probabilitățile pentru fiecare conexiune posibilă de
variabile ¿ y 1 … y n >¿ din cadrul tuplului ¿ Y 1 … Y n >¿. Fiecare rețea Bayesiană descrie o astfel de
distribuție pentru un anumit set de variabile.
Formula corespunzătoare acestor probabilități poate fi evidențiată în felul următor:
n
P ( y 1 … y n )=∐ P(¿ y i∨Părinți ( Y i ))¿
i=1

Aici, P ă rinț i ( Y i ) se referă la mulțimea predecesorilor imediați ai nodului Y i, din cadrul


rețelei, iar valorile P( y i∨Părinți ( Y i )) vor fi ulterior trecute în tabelele probabilităților
condiționale corespunzătoare nodului Y i.
Pentru a putea evidenția mai bine conceptul de independență condițională, vom considera
X, Y și Z trei valori discrete aleatoare. Spunem că X este condițional independent de Y, în
raport cu Z, dacă distribuția probabilităților corespunzătoare lui X este independentă de
valoarea lui Y, luând în considerare o valoare pentru Z.
Astfel, obținem următoarea formulă:
( ∀ x i , y j , z k ) , P ( X=x i|Y = y j| Z=z k ) =P(X =xi ∨Z=z k ), unde x i ∈ V ( X ) , y j ∈ V ( Y ) , z k ∈ V ( Z ).
Deseori scriem această formulă sub formă abreviată, astfel: P ( X|Y , Z )=P( X∨Z). Desigur,
această definiție a independenței condiționale poate fi extinsă și la seturi de variabile. Spunem
deci că setul de variabile X 1 , … , X t este condițional independent cu setul de variabile
Y 1 , … ,Y m având în vedere setul de variabile Z1 , … , Z n dacă:
P( X 1 , … , X t ∨Y 1 ,… , Y m , Z 1 , … , Z n)=P( X 1 , … , X t ∨Z 1 ,… , Z n).
Pentru a putea scoate în evidență caracteristicile rețelelor Bayesiene, prezentăm
următoarea figură [17]:

P(SC=T P(SC=F) P(SPO=T P(SPO=F)


Scaun Sport
) )
0.8 0.2 0.02 0.98

C P(P=T| P(P=F|SC)
SC) Persoană Spate Durere
T 0.9 0.1
F 0.01 0.99
S SPO P(SPA=T|SC,SPO) P(SPA=F|SC,SPO)
C
SP P(D=T| P(D=F|SPA) T F 0.9 0.1
A SPA) T F 0.2 0.8
T 0.7 0.3 T F 0.9 0.1
F 0. 1 0.9 T F 0.01 0.99

24
Ne este prezentată o structură care scoate în evidență posibilitatea ca o anumită persoană
să sufere de o afecțiune a spatelui, acest eveniment fiind reprezentat de variabila Spate (SPA).
Afecțiunea respectivă poate fi datorată unor activități sportive inadecvate reprezentate de
variabila Sport (SPO), precum și unor surse de odihnă neconfortabile reprezentate de variabila
Scaun (SC) și poate cauza la rândul ei dureri, evidențiate de variabila Durere (D). În ultimul
rând, pentru ca acest scenariu să fie relevant, este necesară prezența unei persoane care să
sufere de această afecțiune, evenimentul fiind reprezentat de variabila Persoană (P). Toate
aceste variabile sunt binare, adică pot fi ori adevărate, ori false.
Conform conceptului de independență abordat de rețelele Bayesiene, în cadrul figurii de
mai sus pot fi observate mai multe astfel de stări. De exemplu, variabilele Scaun și Sport sunt
marginal independente, însă dacă luăm în considerare și variabila Spate, atunci acestea vor
deveni condițional dependente. Acest principiu conferă o factorizare compactă a distribuției
comune a probabilităților, iar numărul de parametrii ai modelului este redus semnificativ,
datorită distribuției multinomiale în acest caz, de la 25−1=31 la 10.

2.5.1. Deducția în rețelele Bayesiene

Rețelele Bayesiene pot fi utilizate în deducția valorilor pentru anumite variabile țintă, în
funcție de valorile observate ale altor variabile. Având în vedere faptul că se lucrează cu
variabile aleatoare, de cele mai multe ori, asignarea unei singure valori ca rezultat nu va fi
corectă. Scopul nostru este acela de a identifica distribuția probabilităților pentru funcțiile
țintă și poate fi realizat cu ușurință, în cazul în care cunoaștem toate valorile variabilelor
rămase în cadrul rețelei. Vizualizând această problemă într-o manieră mai generală, putem
spune că dorim să găsim distribuția probabilităților pentru anumite variabile, luând în
considerare doar un subset din variabilele rămase.
De-a lungul timpului, au fost folosite mai multe modalități de inferență, două dintre cele
mai cunoscute fiind următoarele [17]:
 suport predictiv pentru nodul X i , bazat pe evidența nodurilor conectate la acesta, prin
intermediul nodurilor părinte (se mai numește și inferență de jos în sus).
 suport diagnostic pentru nodul X i , bazat pe evidența nodurilor conectate la acesta prin
intermediul nodurilor copii (se mai numește și inferență de sus în jos).
Dacă ne referim la exemplul prezentat anterior și luăm în considerare inferența de sus în
jos în ceea ce privește instalarea unor scaune inconfortabile la biroul unei persoane care
ulterior acuză dureri de spate, putem deduce următoarele formule:
P ( SC=T , D=T )
P ( SC=T |D=T )=
P ( D=T )
unde:
P ( SC=T , D=T ) = ∑ P ( SC=T ) P ( SPO )∗P ( P|SC=T ) P ( SPA|SPO , SC=T ) P(D∨SPA )
SPO , P , SPA∈ { T , F }

25
și
P ( A=T )= ∑ P ( SC ) P ( SPO ) P ( P|SC ) P ( SPA|SPO , SC ) P (D=T ∨¿ SPA) ¿
SPO, P , SPA ∈ {T ,F }

Se poate observa faptul că deși ne confruntăm cu o problemă binară, determinarea


distribuției comune a probabilităților are complexitatea O(2n ), unde n reprezintă numărul de
noduri. Această însumare a probabilităților crește deci exponențial. Pentru diminuarea acestei
dificultăți au fost evidențiați câțiva algoritmi eficienți, care să realizeze o deducție exactă,
restricționată doar la anumite clase ale rețelei. Cel mai popular algoritm de acest gen se
numește algoritmul de trimitere a mesajelor [17] și reușește să rezolve problema în O(n) pași
(adică obținem de această dată o complexitate lineară) pentru rețelele în care există cel mult
un drum între oricare două noduri.
În literatură, au fost de asemenea abordate metode de inferență aproximată, precum
Simplifcarea Monte Carlo care îmbunătățește treptat estimările, pe măsura observării noilor
instanțe. Au fost abordate de asemenea și metode corespunzătoare Lanțurilor Markov Monte
Carlo, incluzând Simplificarea Gibbs și Algoritmul Metropolis-Hastings. S-au utilizat și
metode variaționale, respectiv deducții cu ajutorul buclelor, care aproximează sume mari de
variabile aleatoare prin intermediul mediilor acestora.
2.5.2. Învățarea Rețelelor Bayesiene

În ceea ce privește învățarea automată, ne interesează dacă putem utiliza rețelele


Bayesiene pentru îndeplinirea acestui scop, astfel încât să obținem algoritmi eficienți de
învățare, în funcție de problematica abordată. Desigur, există mai multe setări inițiale pe care
sistemul le poate primi, astfel încât fie cunoaștem de la început structura rețelei, fie aceasta
trebuie dedusă pe baza setului de date de antrenament, iar variabilele rețelei pot fi observate
pentru fiecare instanță în parte a setului de date, sau unele dintre acestea pot rămâne
neobservate.
În funcție de aceste setări, comportamentul sistemului se schimbă radical, permițând
astfel mutiple rezolvări ale problemei, care pot fi observate și în tabelul următor [17]:
Inde Structura rețelei Observabilitatea Metoda de învățare propusă
x Bayesiene
1 Cunoscută Completă Estimarea probabilității maxime
2 Cunoscută Parțială Algoritmul Expectation-Maximization,
Metoda gradientului ascendent, Lanțuri
Markov Monte Carlo
3 Necunoscută Completă Căutare în domeniul modelului
4 Necunoscută Parțială Algoritmul Expectation-Maximization +
Căutare în domeniul modelului

În cazul în care cunoaștem de la început structura rețelei, iar variabilele sunt observate în
întregime în setul de date, învățarea tabelelor cu probabilități condiționale este foarte simplă,

26
având în vedere faptul că estimarea entităților corespunzătoare tabelelor poate fi realizată în
conformitate cu regulile clasificatorului naiv Bayes.
Situația se complică însă, dacă deși cunoaștem structura sistemului, nu există posibilitatea
de observare a tuturor variabilelor, în urma consultării instanțelor de antrenare. Această
problemă este oarecum similară cu învățarea ponderilor pentru unitățile ascunse din cadrul
rețelelor neuronale, unde nodurile de intrare și ieșire sunt date, însă valorile unităților ascunse
nu sunt specificate în setul de date de antrenament.
În acest caz, se poate utiliza algoritmul Expectation maximization, pentru identificarea
unei estimări locale și optime a probabilității maxime. Lanțurile Markov Monte Carlo
reprezintă o abordare alternativă a celei din urmă, fiind folosită pentru estimarea parametrilor
din cadrul modelului corespunzător rețelei Bayesiene. Metoda gradientului ascendent [13]
reprezintă o procedură de învățare a entităților prezente în tabelele cu probabilități
condiționale. Se caracterizează prin procese de căutare în cadrul domeniului ipotezelor
corespunzătoare tuturor celulelor din tabele, iar funcția care este maximizată pe parcursul
acestei proceduri, este reprezentată de probabilitatea P(D∨h) a datelor de antrenament D în
raport cu ipoteza h.
În cazul al treilea, când structura rețelei Bayesiene este necunoscută, însă observabilitatea
variabilelor este completă, scopul este acela de a învăța un graf aciclic care să reprezinte cât
mai bine informațiile, complexitatea problemei fiind însă exponențială. O abordare a
rezolvării poate fi constituită de asumarea principiului conform căruia variabilele sunt
condițional independente în raport cu o anumită clasă, ceea ce determină existența unui singur
nod părinte comun pentru toate celelalte noduri corespunzătoare varibilelor.
În ultimul rând, când nu cunoaștem reprezentarea rețelei, iar observabilitatea variabilelor
este parțială, ceea ce rămâne de făcut este să marginalizăm atât nodurile ascunse, cât și
parametrii. De cele mai multe ori, acest lucru nu se poate realiza, fapt pentru care este
necesară utilizarea unei aproximări asimptotice a probabilităților posterioare, numită și
Criteriul de informare Bayesian [17], sau Principiul descrierii lungimii minime. O alternativă
ar putea fi reprezentată de îmbinarea căutării locale cu algoritmul Expectation-Maximization,
dând naștere unui alt algoritm și anume: Structural Expectation-Maximization.

2.5.3. Regula Gradientului Ascendent în Rețelele Bayesiene

Regula gradientului ascendent a fost enunțată de către Rusell (1995) și este constituită de
maximizarea lui P ( D|h ), prin urmărirea gradientului ln P(D∨h) în raport cu evaluarea
parametrilor care definesc tabelele cu probabilități condiționale corespunzătoare rețelei
Bayesiene [13].
Fie w ijk o entitate corespunzătoare uneia dintre probabilitățile condiționale din tabel. În
particular, putem spune că w ijk reprezintă probabilitatea condițională pe care variabila Y i o ia

27
pentru valoarea y ij, luând în considerare părinții U i care au valorile reprezentate de uik .

∂ ln P ( D|h )
Gradientul expresiei ln P(D∨h) este dat de către derivatele pentru fiecare w ijk.
∂ w ijk
Fiecare derivată poate fi calculată astfel:
∂ ln P ( D|h ) P (Y i= y ij ,U i =uik ∨d )
=∑
∂ w ijk d∈ D wijk
În cazul variabilelor neobservate de instanța d din setul de date de antrenament D,
probabilitățile condiționale pot fi calculate luând în considerare acele variabile care au fost
totuși observate de către d, prin folosirea deducției rețelelor Bayesiene.
Pentru a simplifica puțin notația, vom considera Ph (D) în locul P ( D|h ). Scopul nostru

∂ ln P ( D|h )
este acela de a deriva gradientul definit de setul de derivate pentru fiecare i, j și k.
∂ w ijk
Având în vedere faptul că instanțele d sunt independente, obținem:
∂ ln P h ( D) ∂ ∂ ln P h( D) 1 ∂ Ph (D)
= ln ∏ P h ( d ) =∑ =∑
∂ w ijk ∂ w ijk dϵD dϵD ∂ wijk dϵD Ph (d ) ∂ wijk
După cum se poate observa, ultima expresie a fost obținută datorită ecuației generale
∂ ln f (x ) 1 ∂ f ( x)
= . În continuare, vom introduce și valorile variabilelor Y i și U i , unde
∂x f (x) ∂ x
U i=Părinți (Y i ), prin însumarea tuturor valorilor posibile ale acestora y ij ' și uik '.
∂ ln P h ( D) 1 ∂
∂ w ijk
=∑
P (d ) ∂ w
∑ Ph ( d| y i j ,u i k ) Ph ( y i j , ui k )=∑ P 1(d) ∂ w∂ ∑ Ph ( d| y i j ,u i k ) Ph ( y i j ∨ui k ) P
' ' ' ' ' ' ' '

dϵD h ijk j ,k ' '


dϵD h ijk j ,k ' '


Având în vedere faptul că w ijk=Ph ( y ij , uik ), iar singurul termen pentru care ≠ 0 este
∂ wijk
acela pentru care j ' = j și i ' =i,obținem:
∂ ln P h ( D) 1 ∂ 1 ∂
=∑ Ph ( d| y ij , uik ) Ph ( y ij ∨uik ) P h ( uik )=∑ Ph ( d| y ij , uik ) wijk Ph ( uik )=∑
∂ w ijk dϵD Ph (d ) ∂ wijk dϵD Ph ( d) ∂ w ijk dϵD

Aplicând teorema lui Bayes pentru a rescrie Ph ( d| y ij , uik ), obținem:


∂ ln P h ( D) 1 P h ( d| y ij , uik ) Ph ( d ) P h ( uik ) Ph ( d| y ij , uik ) Ph ( uik ) Ph ( d| y ij , uik ) P h ( d| y ij
=∑ =∑ =∑ =∑
∂ w ijk dϵD Ph (d ) P h ( y ij , uik ) dϵD Ph ( y ij , uik ) dϵD Ph ( y ij ,uik ) dϵD wijk
Este necesar ca ponderile w ijk să rămână probabilități valide în intervalul [0,1]. De

asemenea, suma ∑ wijk să fie 1 pentru toate valorile pe care i și j le pot lua. Pentru a satisface
j

aceste condiții, în primul rând vom modifica fiecare pondere w ijk prin metoda gradientului
ascendent, astfel:
P h ( d y ij ,uik|d )
w ijk ←w ijk +η ∑
dϵD w ijk

28
În ecuația de mai sus, η reprezintă o constantă mică, numită și rata de învățare. În al
doilea rând, vom renormaliza ponderile w ijk pentru a ne asigura că acele constrângeri
precizate mai sus sunt respectate. Acest proces va converge în cele din urmă la o ipoteză
locală de probabilitate maximă pentru probabilitățile condiționale din rețeaua Bayesiană [13].

2.5.4. Algoritmul Expectation-Maximization

Algoritmul Espectation-Maximization (EM) are rolul de a estima parametrii din modelele


probabilistice care se confruntă cu seturi de date de antrenement incomplete. Ideea generală a
acestuia constă în alternarea următorilor pași [20]:
 Ghicirea distribuției probabilităților pentru datele care lipsesc din modelul curent (se
mai numește și Pasul E – „estimation” – în general, nu este necesară identificarea
distribuției probabilistice explicit, ci se dorește găsirea unor statistici previzibile
suficiente);
 Reestimarea parametrilor modelului utilizând completările obținute în pasul precedent
(se mai numește și Pasul M – „maximization” – procesul putând fi văzut ca o
maximizarea a logaritmului probabilității).
Acest algoritm a fost introdus inițial de către Ceppellini în anul 1950, în contextul
estimării frecvenței genelor, fiind aprofundat ulterior de către Hartley și Baum în contextul
Modelelor Markov ascunse, unde este cunoscut ca Algoritmul Baum-Welch. Reprezintă o
generalizare naturală a estimării probabilității maxime, în cazul seturilor de date incomplete.
În continuare, vom considera următoarele notații: X ={x 1 ,… , x m } reprezintă datele
observate dintr-un set de m instanțe independente, Z={z 1 ,… , z m }elementele neobservate din
același set de instanțe, iar Y = X ∪ Z setul complet de date. Elementele din Z pot fi văzute ca
niște variabile aleatoare a căror distribuție probabilistică depinde de parametrii necunoscuți θ
și de datele observate din X . Vom folosi h pentru a reprezenta valorile ipotetice curente ale
parametrilor θ și h’ pentru reprezentarea valorilor reestimate la fiecare iterație a algoritmului.
Algoritmul Expectation-Maximization caută ipoteza cu probabilitatea maximă h’ care
maximizează expresia E ¿ .
Pentru a înțelege concret semnificația acestei expresii, știm deja că P(Y ∨h' ) este
probabilitatea setului de date Y în raport cu ipoteza h’ . Întrucât dorim să găsim acea ipoteză
h’ care maximizează o anumită funcție pentru datele existente, acest lucru poate fi obținut prin
maximizarea logaritmului probabilității, adică ln P(Y ∨h' ).
În continuare, vom introduce conceptul de valoare așteptată E ¿, deoarece setul de date în
sine reprezintă o variabilă aleatoare. Având în vedere faptul că Y conține și date care nu au
fost observate, adică Z, este necesar să determinăm o evaluare a posibilelor valori ale lui Z în
funcție de probabilitățile acestora. Cu alte cuvinte, valoarea E ¿ este calculată în funcție de
distribuția probabilistică peste setul de variabile aleatoare Y.

29
În general, această distribuție probabilistică nu este cunoscută, deoarece este determinată
tocmai de către parametrii θ pe care încercăm să îi estimăm. În aceste sens, algoritmul
Expectation-Maximization folosește ipoteza curentă h în locul parametrilor θ pentru estimarea
distribuției. Fie Q ( h'|h ) ce reprezintă expresia E ¿ sub forma unei funcții pentru h’,
considerând că θ=h ' și având în vedere setul de date observate X din Y [13].
Q ( h'|h ) =E ¿
Astfel, putem relua pașii generali ai algoritmului EM prezentați anterior, abordându-i
într-o manieră matematică:
 Pasul E: se calculează Q ( h'|h ) folosind ipoteza curentă h și datele observate X pentru
estimarea distribuției probabilistice peste Y:
Q ( h'|h ) =E ¿
 Pasul M: se înlocuiește ipoteza h cu ipoteza h’ în vederea maximizării funcției:
argmax
h← h' Q ( h'|h )
În cazul în care funcția Q este continuă, algoritmul va converge către un punct fix al
funcției probabilistice p ( Y |h' ), iar dacă această funcție are un singur maxim, EM va converge
către maximul global al estimării probabilității pentru h ’. În caz contrar, ne este garantată
doar convergența către un punct de maxim local.
Algoritmul Expectation-Maximization este deseori folosit în domeniul bio-informaticii,
abordând probleme precum: învățarea profilelor proteice și a familiilor de ARN, descoperirea
modulelor transcripționale, identificarea proteinelor și a imagisticii medicale, șamd. În fiecare
caz în parte, acest algoritm oferă o modalitate simplă, ușor de implementat și eficientă pentru
învățarea parametrilor unui model. Din momentul în care acești parametrii sunt cunoscuți,
poate fi utilizată deducția probabilistică pentru identificarea diverselor caracteristici ale
modelului (de exemplu: Cărei grupări îi aparține o anumită genă?). Astfel, EM ne oferă un
mecanism simplist de învățare a parametrilor modelului, prin construirea și antrenarea unui
sistem probabilistic puternic.

30
3. DOMENII DE APLICARE ALE ÎNVĂȚĂRII
BAYESIENE

Deși metodele de învățare Bayesiană au fost studiate timp de mai mulți ani, de curând
aplicațiile practice ale acestora au început să fie foarte răspândite. Datorită evoluării continue
a tehnologiei și respectiv apariției unor calculatoare rapide, algoritmii Bayesieni pot ajunge la
un rezultat într-un timp relativ scurt, surclasând de multe ori alte metode de învățare automată
mai complicate. În cele ce urmează, vor fi prezentate câteva astfel de aplicații, pentru a scoate
în evidență simplitatea prin care această abordare poate face față unui set diversificat de
probleme care pot apărea în viața de zi cu zi.

3.1. Recunoașterea expresiilor faciale și a emoțiilor

Întrucât recunoașterea expresiilor faciale și a emoțiilor cu ajutorul unui sistem inteligent


reprezintă o problemă pe cât de interesantă pe atât de provocatoare, mulți cercetători au
încercat de-a lungul timpului să găsească o metodă cât mai bună pentru realizarea acestui
lucru.
Emoțiile fac parte din noi, ca ființe umane, materializându-se prin gesturi ale mâinilor,
ale corpului, prin expresii faciale, precum și prin tonul folosit în cadrul unei conversații.
Fiecare individ se caracterizează astfel printr-o modalitate unică de manifestare, prin
exprimarea, sau din contră, ascunderea propriilor sentimente.
Interacțiunea dintre 2 sau mai multe persoane poate decurge natural tocmai prin
cunoașterea acestei laturi emoționale, spre deosebire de interacțiunea dintre un om și un
calculator, cel din urmă nefiind capabil să înțeleagă și să reacționeze în conformitate cu starea
de spirit a interlocutorului său.
În ultima perioadă, s-a dezvoltat un interes crescut pentru îmbunătățirea acestor relații
dintre om și calculator. Ekman și Friesen au dezvoltat în anul 1978 un sistem de măsurare al

31
comportamentului facial [6] aplicat pe mai multe înregistrări video, preluate în timp ce
subiecților le erau arătate imagini cu impact emoțional atât pozitiv cât și negativ. Aceștia
considerau că emoțiile sunt strict legate de mimica feței, existând șase expresii faciale
universale [6] de bază și anume: fericirea, uimirea, supărarea, frica, furia și disprețul.
Din anul 1900, comunitatea de ingineri a început să studieze aceste rezultate, în vederea
construirii unor metode automate de recunoaștere a expresiilor faciale și a emoțiilor [17] pe
baza expresiilor faciale, din imagini și înregistrări video.
În anul 2002, un grup de cercetători au venit cu o propunere nouă pentru rezolvarea
acestei probleme și anume utilizarea clasificatorului naiv Bayes, având ca model de
distribuție, distribuția Cauchy. Această alegere a fost făcută luând în considerare faptul că
distribuția Gaussiană poate fi uneori invalidă.
În vederea rezolvării acestei probleme, a fost ales un model facial care era împărțit în 16
suprafețe, pe baza cărora au fost evidențiate 12 măsurători de mișcare a diverselor
componente ale feței. Ca modalitate de testare a algoritmului, setul de date inițial a fost
împărțit în două categorii: date de antrenament și date de test, urmând să fie extras din setul
de date destinat antrenării un subset de date pe baza căruia să fie aplicată o clasificarea
inițială. Modelul de distribuție (distribuția Cauchy sau distribuția Gaussiană) care obținea cel
mai bun rezultat, urma să fie utilizată în clasificarea instanțelor din setul de testare.
Baza de date utilizată conținea imagini preluate de la cinci persoane (care nu erau actori)
și care au fost instruiți să mimeze expresii faciale corespunzătoare celor șase tipuri de emoții
prezentate mai sus. După fiecare astfel de mimare, se revenea la o expresie neutră, tocmai
pentru a nu influența în niciun fel următoarele reprezentări.
În urma acestor experimente, utilizarea distribuției Cauchy a determinat o medie a
acurateților luând în considerare cele 5 persoane de 80.05%, pe când distribuția Gaussiană a
obținut o medie a acurateților de 79,36% [17]. Se poate observa faptul că prima metodă nu a
adus o îmbunătățire spectaculoasă sistemlui, iar acest lucru se datorează tocmai utilizării
aceluiași mediu de urmărire pentru fiecare persoană.
Repetându-se acești pași, dar reducând domeniul de clase la un număr de patru (neutru,
bună dispoziție, indispoziție, surprindere), sistemul poate prezice acum prin utilizarea
distribuției Cauchy cu o acuratețe de 88-89% [17] dacă o anumită persoană exprimă o
expresie facială fericită, supărată sau surprinsă.
A urmat un nou test, pentru a putea lua în considerare independența celor 5 persoane.
Astfel, pentru antrenare au fost folosite imaginile preluate de la patru dintre subiecți, iar
imaginile rămase au fost folosite pentru testare. Pentru a putea evidenția toate cazurile
posibile, acest experiment a fost repetat de cinci ori. Întrucât modul de exprimare al fiecărei
ființe umane este diferit, acuratețea sistemului a scăzut în cazul distribuției Cauchy la 63,58%,
iar în cazul distribuției Gaussiene la 58, 94%.

32
3.2. Recunoașterea vizuală a gesturilor

În domeniul învățării automate, studierea roboților mobili constituie de asemenea un


subiect interesant, deseori abordat de către specialiști. Pentru a putea determina un sistem să
recunoască anumite gesturi, reprezentate de altfel de mișcări corporale, este nevoie de o
tehnologie avansată, atât din punct de vederere al componentelor fizice utilizate, cât și din
punct de vedere al logicii aplicate.
Modelele Markov ascunse au constituit o metodă des folosită pentru rezolvarea acestei
probleme. Totuși, s-a observat faptul că numărul de parametrii necesari pentru a defini
modelul cresc exponențial, pe măsură ce crește și numărul de stări observate.
Pentru a depăși această limitare, prin găsirea unui model de recunoaștere a gesturilor care
să poată fi antrenat pe baza unui set mic de date și în același timp să dea rezultate bune, a fost
propusă o extensie a clasificatorului naiv Bayes, numită Clasificatorul Naiv Bayes Dinamic
[8], care simplifică modelul prin descompunerea stării observate într-un set de atribute
independente.
Acesta este format dintr-o pereche de forma { A , C } unde A=\{ A 1n , A 2n , … , ATn \}, fiecare
Atn cu t=1. .T reprezentând un set de n atribute instanțiate (generate de un proces dinamic),
iar C={C 1 ,C 2 , … , C T } un set de T variabile C t generate de același proces la un moment t.
Clasificatorului naiv Bayes dinamic i-a fost atribuită următoarea funcție de distribuție a
T n T
t
probabilității: P ( A ,C )=P(C 1) ∏ ∏ P( A j∨¿ C t ) ∏ P(C t∨C t −1 )¿, unde:
t =1 j=1 i=2

 P(C 1) reprezintă distribuția probabilității inițiale pentru variabila de clasă C 1,


t
 P( A j∨C t ) reprezintă distribuția probabilității unui atribut dintr-o anumită clasă,
 P(C t∨C t −1 ) reprezintă tranziția distribuției probabilității dintre clase, în timp.
n
Produsul ∏ P ( A tj∨¿ Ct ) ¿ este folosit tocmai pentru susținerea presupunerii naive
j=1

conform căreia atributele claselor sunt independente.


Această abordare a fost folosită pentru un set de 150 de exemple corespunzătoare celor
cinci gesturi principale: atenție, oprește-te, mergi la stânga, mergi la dreapta, vino. Aceste
exemple au fost preluate în diferite condiții de iluminare, distanța dintre persoană și cameră
variind între trei și cinci metrii. Au fost obținute două seturi de atribute reprezentative pentru
descrierea gesturilor: atribute de mișcare pentru descriera deplasării mâinii în spațiu și
atribute de staționare pentru descrierea relațiilor dintre poziția mâinii și celelalte părți ale
corpului[8].
Setul de imagini obținute a fost divizat astfel: 60% pentru antrenament, iar restul de 40%
pentru testare. Modelul a fost antrenat de mai multe ori, numărul de exemple utilizate pentru

33
procesul de antrenare variind între 5% și 100%, folosindu-se de fiecare dată setul complet
pentru testare.
În urma acestor experimente, a fost obținută o medie a ratei de recunoaștere de 96,75%,
comparativ cu 98,47% rata de recunoaștere obținută în urma folosirii modelelor Markov
ascunse. Diferența majoră se observă însă în momentul în care se folosesc între 1% și 10%
(între două și cincisprezece imagini pentru fiecare gest) din setul de date de antrenament,
clasificatorul dinamic având o performanță mai ridicată, chiar daca numărul de parametrii
folosiți este mult mai mic decat în cazul modelelor Markov.

3.3. Clasificarea plantelor și a animalelor pe baza MicroARN-


ului

MicroARN-urile reprezintă molecule de ARN monocatenare, având molecule de


aproximativ 21-23 nucleotide cu complementaritate imperfectă [10]. În ultimii ani, s-a
demonstrat faptul că aceste molecule mici de ARN noncodant sunt implicate direct în
procesele de diferențiere neuronală și dezvoltare cerebrală, putând genera afecțiuni precum:
boala Alzheimer, boala Parkinson, retardul mintal și atrofia musculară spinală.
Experimentele de laborator tradiționale realizate în vederea clasificării microARN-urilor
plantelor și animalelor s-au dovedit a fi costisitoare atât din punct de vedere al resurselor
utilizate, cât și din punct de vedere al timpului consumat. Din această cauză, s-a dorit
aprofundarea acestui domeniu prin intermediul unor surse informatice, precum învățarea
automată.
Un studiu recent ne arată cum un grup de cercetători a ales să aplice clasificatorul naiv
Bayes pentru rezolvarea acestei probleme. Au fost preluate caracteristici reprezentative ale
MicroARN-ului precum: numărul de gene MicroARN prezente, locul de amplasare în cadrul
genomului prezența grupurilor de MicroARN, biosinteza MicroARN-ului, locația legăturilor
de MicroARN în raport cu genele țintă, numărul de astfel de legături și funcțiile îndeplinite de
către aceste gene, obținându-se astfel diferențele dintre plante și animale [10].
Totuși, nu au fost utilizate toate aceste atribute în procesul de clasificare. Spre exemplu,
atributele precum prezența cluster-ilor nu au fost luate în considerare, informațiile oferite de
către acestea fiind considerate irelevante. Caracteristicile cu adevărat importante și
reprezentative pentru această problemă au fost în număr de patru, referindu-se la
complementaritete, numărul de nepotriviri cu ARN-ul țintă, numărul de gene țintă și
dimensiunea fold back loop [10].
Pentru evaluarea sistemului, a fost aleasă validarea încrucișată, utilizându-se nouă zecimi
din setul de date pentru antrenare și restul de o zecime pentru testare. Acest proces a fost

34
repetat de 10 ori, de fiecare dată preluându-se informațiile din setul de date în mod aleator. În
urma acestor experimente, a fost obținută o acuratețe de 85,71%, fiind clasificate corect 84 de
instanțe, dintr-un număr total de 98.

3.4. Optimizarea deciziilor pentru tratamente

În domeniul medical, s-a încercat de asemenea această apropiere de resursele informatice,


dorindu-se crearea unui sistem care să vină în ajutorul medicilor, prin oferirea unor posibile
soluții, unor sfaturi, rolul lor nefiind acela de înlocuire totală a implicației umane. Acest lucru
se datorează risculul major care învăluie medicina, viața pacienților având o importanță mult
prea mare pentru a putea fi acordată încredere absolută unei mașini inteligente lipsită de
emoții.
Totuși, un ajutor în plus venit în manieră obiectivă nu strică, fapt pentru care mai mulți
cercetători au aprofundat această problemă, care pe cât este de interesantă și utilă, pe atât este
de dificilă.
O astfel de abordare, a fost reprezentată de aplicarea clasificatorului naiv Bayes (CNB) în
evaluarea riscului de progresie, respectiv revenire a cancerului, în urma radioterapiei. Această
abordare a fost puțin problematică, deoarece chiar dacă CNB este tolerant cu datele
zgomotoase și incomplete prezentând astfel anumite beneficii, mulți specialiști consideră
faptul că independența atributelor ar putea constitui un deficit pentru domeniul medical.
În cadrul acestui studiu au fost analizate datele preluate de la 140 de pacienți
diagnosticați cu tumoare pe creier, care au fost tratați incepând cu 1 ianuarie 2000, până în
31decembrie 2005. Informațiile obținute au ajutat la obținerea a 96 de atribute reprezentative
pentru descrierea celor două clase de diagnosticare a pacienților:
 0 – revenirea, respectiv progresia cancerului în urma radioterapiei,
 1 – stabilizarea, respectiv lipsa progresiei cancerului în urma radioterapiei.
Aceste atribute selectate pentru categorizare, au fost împărțite în următoarele categorii
[10]: histologie (tipul histolgic al tumorii), imagistica craniană, locația tumorii primare,
simptomele neurologice înainte de tratament, tratamentul chirurgical, radioterapia, boli
coexistente, descoperirile făcute în laborator, tratamentul de susținere, pacientul.
Pentru determinarea calității sistemului, a fost folosită validarea încrucișată, comparându-
se rezultatele oferite de către sistem, cu rezultatele reale obținute în urma aplicării
tratamentelor pentru pacienții bolnavi. Acuratețea inițială a sistemului a fost de 82% (din 142
de cazuri, 116 pacienți au fost clasificați corect, în timp ce restul de 26 de pacienți au fost
clasificați incorect). Sensibilitatea sistemului a fost de 0,79 iar specificitatea de 0,83. În urma
unor optimizări făcute cu ajutorul evaluatorilor WEKA, procentul acurateții a crescut la 84%,
sensibilitatea fiind acum 0,80 iar specificitatea 0,87.

35
Rezultatele obținute cu ajutorul clasificatorului naiv Bayes au fost promițătoare, însă
scopul principal fiind determinarea celui mai bun sistem capabil să rezolve problema de față,
au fost abordate și alte metode de învățare automată precum: arborii de decizie și rețelele
Bayesiene (care sunt de altfel unele dintre cele mai populare sisteme folosite în medicină),
comparațiile fiind prezentate în tabelul următor [10]:
Acuratețe Sensibilitate Specificitate
Clasificatorul naiv Bayes 82% 0,79 0,83
Rețelele Bayesiene 80% 0,73 0,85
Arborii de decizie 71% 0,62 0,75

S-a observat faptul că folosirea clasificatorului naiv Bayes oferă rezultate mult mai bune,
comparativ cu celelalte două metode abordate. Abilitatea de a adăuga cu ușurință atribute noi
sistemului, într-un mediu aflat în continuă dezvoltare și schimbare precum medicina, face din
acest clasificator un instrument valoros. De asemenea, ușurința utilizării acestui sistem
constituie un avantaj, având în vedere faptul că atât arborii de decizie, cât și rețelele neuronale
necesită depunerea unui efort mult mai mare din partea clinicianului care utilizează
programul.
În cazul arborilor de decizie, ar trebui eliminate acele reguli greșite generate de către
sistem, în timp ce extinderea acestor arbori cu atribute noi reprezintă o operațiune costisitoare
din punct de vedere al timpului consumat. În ceea ce privește rețelele neuronale, evaluarea
importanței atributelor este imposibilă, procesul de optimizare și generalizare fiind astfel
îngreunat.

3.5. Proiectarea produselor alimentare

Chiar dacă pare greu de crezut, domeniul învățării automate s-a extins atât de mult, încât
a reușit să atragă atenția chiar și specialiștilor din industria alimentară. Competitivitatea
ridicată, precum și lupta pentru supraviețuire într-un astfel de mediu aflat în continuă
schimbare, a determinat necesitatea dezvoltării unui sistem artificial, capabil să facă față
cerințelor diverse ale consumatorilor.
În mod normal, dezvoltarea unui produs alimentar nou, implică prelevarea anumitor
informații din trei surse diferite: panouri senzoriale, panouri preferențiale și date
instrumentale [5].
Panoul senzorial este reprezentat de un grup de aproximativ 10-20 de persoane atent
selectate și antrenate pentru o periadă de mai multe luni. În urma unor discuții, sunt extrași
între 8 și 20 de descriptori care sunt mai apoi folosiți în vederea descrierii mai multor varietăți
de produse, selectate astfel încât să reprezinte o gama largă de arome, culori șamd. Aceste
produse le sunt mai apoi oferite spre testare membrilor grupului, care pe baza propriilor

36
simțuri precum și pe baza elementelor învățate vor completa panoul senzorial, prin atribuirea
unei valori fiecărui descriptor.
Panoul preferențial este reprezentat de un grup de 50-500 de oameni necalificați,
potențiali consumatori, aceștia fiind supuși unui test asemănător cu cel prezentat anterior,
diferența constând în abordarea simplistă a descriptorilor, astfel încât să nu fie necesară o
pregătire anterioară a subiecților.
Datele instrumentale se referă la caracteristici specifice produselor, putând include
imagini digitale, precum și detalii despre compușii chimici folosiți.
După cum se poate observa, întregul proces de prelevare al acestor informații este unul
costisitor atât din punct de vedere financiar, cât și din punct de vedere al timpului utilizat. De
asemenea, subiectivitatea oamenilor determină o anumită inconsistență a descriptorilor.
Un studiu recent a arătat că 90% din cele aproximativ 13000 de produse noi care apar în
fiecare an în US sunt destinate eșecului. Acest procent deloc scăzut a determinat apariția unui
studiu, prin intermediul căruia să se poată proiecta un sistem care să ajute la conceperea
”produselor ideale”, realizându-se pe această cale o comparație între 3 tehnici utilizate:
rețelele neuronale, clasificatorul naiv Bayes și rețelele Byesiene.
A fost utilizat un set de 20 de înregistrări, fiecare înregistrare reprezentând informațiile
complete pentru un singur aliment (o valoare preferențială P1 reprezentând funcția target, și
opt valori senzoriale S1...S8 care au fost folosite pentru predicție). Pentru determinarea
performanțelor sistemului, s-a recurs la validarea încrucișată: 19 instanțe pentru antrenare și o
instanță pentru testare. Acest experiment a fost repetat de 20 de ori, astfel încât fiecare
posibilitate să fie luată în calcul și a fost obținut următorul tabel (între paranteze rotunde este
prezentată deviația standard a fiecărei valori) [5]:

Acuratețe Probabilitate comună înregistrată


Rețelele neuronale 0,796 N/A
(0,05)
Clasificatorul naiv Bayes 0.800 -123,08
(0,00) (0,00)
Rețelele Bayesiene 0.800 -107,51
(0,00) (1,03)

După cum se poate observa, rețelele neuronale, clasificatorul naiv Bayes, precum și
rețelele Bayesiene dau rezultate similare când vine vorba de prezicerea preferințelor anumitor
produse pe baza panourilor senzoriale.
Totuși, este de remarcat faptul că rețelele Bayesiene sunt construite astfel încât să poată
modela întregul set de date și nu se bazează pe găsirea unei singure relații reprezentative, spre
deosebire de celelalte două tehnici utilizate, care se axează concret pe construirea unui model
care să evidențieze problema de față. Acestea aduc așadar un plus sistemului, întrucât pot fi

37
construite dintr-un set de date modest, cu sau fără cunoștințe anterioare, fiind totuși scalabile
datorită faptului că permit optimizare locală [5].

3.6. Clasificarea imaginilor satelitare

La Goddard Earth Sciences Distributed Active Archive Center (GES DAAC) sunt
încărcate zilnic aproximativ un Tb de imagini preluate de la sateliți, acestea fiind ulterior
distribuite mai multor centre de cercetare și analiză, în funcție de domeniul vizat [11].
Dificultatea apare însă în momentul în care se dorește găsirea acelor imagini care
corespund unui scop concret. Volumul de date este foarte mare, minimizând posibilitatea de
identificare a informațiilor relevante dintr-un anumit punct de vedere. De asemenea, datorită
resurselor limitate, doar un număr mic de imagini ar putea fi stocate pe disk în vederea
accesului direct.
Deși există deja diverși algoritmi științifici de prelucrare a informațiilor utile din surse
directe (pământ, oceane, atmosferă), timpul necesar obținerii unor rezultate variază de la 30
de minute până la câteva zile, fapt pentru care, de cele mai multe ori, informațiile neclasificate
ajung să fie folosite și chiar șterse din memorie. Astfel a apărut necesitatea folosirii unor
algoritmi de învățare automată, scopul fiind acela de a reduce atât timpul de procesare, cât și
cerințele de calcul, astfel încât estimările realizate să poată fi integrate în fluxul de date, iar
deciziile să poată fi luate în timp util.
Aplicarea metodelor de învățare automată în cadrul aplicațiilor științifice poate fi dificilă,
dacă ne gândim la constrângerile de discretizare, la inexistența bazelor fizice, precum și la
construirea setului de antrenament. Totuși, aceste dificultăți se diminuează când vine vorba
despre suportul decizional. De cele mai multe ori este suficient să știm dacă un anumit atribut
depășește un prag anume, valoarea concretă a acestuia fiind mai puțin importantă. De
asemenea, un alt avantaj al utilizării acestor metode este constituit de timpul relativ scurt de
execuție, odată ce sistemul a fost antrenat.
În vederea conceperii unui sistem care să satisfacă cerințele prezentate anterior, un grup
de cercetători de la NASA au ales clasificatorul naiv Bayes, oferindu-i ca date de antrenament
rezultatele obținute de la algoritmii științifici existenți în momentul respectiv, dar care nu erau
eficienți din punct de vedere al timpului de rulare. Instanțele urmau să fie clasificate în
categorii precum: nori, zăpadă, lumină solară, apă puțin adâncă, apă adâncă, foc, ghețari,
deșert și pământ.
Procesul de antrenare al acestui algoritm consta în estimarea funcției de distribuție a
probabilităților pe baza unor histograme corespunzătoare diferitelor clase de pixeli, iar
determinarea probabilităților condiționale era influențată atât de sezon, cât și de poziționarea
geografică [11].
În urma evaluării sistemului, clasificatorul naiv Bayes s-a dovedit a fi mai puțin eficient
decât algoritmii tradiționali, discrepanțele dintre cele două abordări fiind totuși suficient de

38
mici astfel încât să se poată permite utilizarea clasificatorului pentru gestionarea informațiilor.
În ceea ce privește însă timpul de execuție, îmbunătățirile au fost considerabile.
Conceptual simplu și robust în practică acest algoritm a demonstrat încă o dată că poate fi
scalabil la mai multe domenii, necesitând intervenție minimă din partea utilizatorului. În plus,
rezultatul nu este reprezentat de o simplă clasificare nominală, incluzând de asemenea și câte
o probabilitate atribuită fiecărei clase.

3.7. Clasificarea solurilor agricole

Un alt domeniu care necesită aplicabilitatea unor algoritmi de învățare automată este
acela al agriculturii, în vederea determinării unor șabloane reprezentative diverselor profile
de soluri existente.
Acesta reprezintă un subiect dinamic, având în vedere structura sistemului, definirea
claselor, precum și aplicabilitatea practică a problemei în sine, iar sistemele de clasificare
moderne care îl abordează sunt construite astfel încât să permită tranziția ușoară între
observațiile făcute în teren și predicția proprietăților solurilor.
Cel mai cunoscut sistem de clasificare al solurilor din America de Nord este Unified Soil
Classification System (USCS), având trei mari categorii de clasificare: soluri cu textură
grosieră (de exemplu: nisipuri și pietrișuri), soluri cu textură fină ( de exmplu: aluviuni și
argile) și soluri organice.
Un grup de cercetători din Madanapalli, respectiv Tirupati au ales să realizeze un sistem
asemănător, prin folosirea învățării Bayesiene. În urma unor sondaje de sol realizate în
numeroase locații agricole din Chandragiri Mandal și Chittoor District, a fost obținut setul de
date, acesta conținând diverse informații despre clasificarea profilelor de sol, precum și despre
caracteristicile chimice ale acestora [18].
În urma unor experimente realizate care utilizau un set mic de date, clasificatorul naiv
Bayes a reușit să clasifice toate instanțele corect. Acuratețea sistemului, precum și timpul de
execuție au fost mult mai bune comparativ cu alte metode de învățare automată, precum
rețelele Bayesiene.

3.8. Procesarea limbajului natural

Sistemele actuale de recunoaștere a vorbirii nu sunt lipsite de erori, fapt pentru care este
necesar să cunoaștem fiabilitatea fiecărui cuvânt ipoteză [16]. Această abordare ar putea fi
văzută ca o problemă de recunoaștere convențională, în care fiecare cuvânt ipoteză să fie
transformat într-un vector de caracteristici și clasificat ulterior ca fiind corect sau incorect.
Deciziile importante care trebuie luate în conceperea unui astfel de sistem, țin de alegerea
șablonului de recunoaștere și a modelului de clasificare.

39
Clasificatorul naiv Bayes a venit în rezolvarea acestei probleme, parametrii fiind estimați
prin intermediul unor tehnici de netezire sofisticate preluate din modelarea limbajului statistic.
Pentru a putea fi realizate experimentele necesare, au fost preluate mai multe conversații
purtate în limba italiană de către recepționerul unui hotel.
Criteriul folosit pentru măsurarea performanței clasificatorului se numește Rata de
încredere a erorii (CER) și constă în numărul de erori de clasificare divizat la numărul total
de cuvinte recunoscute corect. Prin utilizarea șabloanelor de recunoaștere în mod individual, a
fost obținută o rată de aproximativ16,4. Modelul naiv Bayes a avut rolul de a determina
performanța clasificatorului, luând în considerare mai multe combinații de astfel de șabloane.
În continuare, va fi prezentat un tabel care surprinde rezultatele obținute [16]:

Features CER(%) red.(%)


AcScore + WgTOTmax + WTSmax + Dur + AS + WgLMavg 13.1 37.6
WTSmax + Dur + AS + WgLMavg 13.6 35.2
Dur + AS + WgLMmax 14.4 31.4
AS + WgLMmax 14.5 31.0
AS + WgLMmax 16.4 21.9
Baseline 21.0 -

4. APLICAȚIA PRACTICĂ

4.1. Enunț

În capitolele anterioare au fost prezentate diverse metode de Învățare Bayesiană, alături


de importanța și necesitatea folosirii lor în anumite domenii. Alături de o fundamentare
matematică solidă și în ciuda simplității aparente, acești algoritmi de învățare automată sunt
capabili să detetemine o reducere vizibilă a timpului de execuție, fără a influența însă foarte
mult acuratețea sistemului.
În vederea demonstrării acestor caracteristici, vom lua în considerare contextul clasificării
textuale. Ne dorim așadar, să concepem un sistem care să fie capabil să asigneze categorii
predefinite unor documente de tip text noi. O astfel de abordare, care informatizează de altfel
procesul de clasificare textuală pe baza raționamentului uman, este foarte utilă în ceea ce
privește reducerea timpulul consumat, alături de eliminarea posibilelor erori apărute datorită
oboselii.
De exemplu, știrile sunt de obicei clasificate în funcție de categoriile subiectelor,
documentele academice sunt împărțite în domenii tehnice și sub-domenii ale acestora, fișele
medicale ale pacienților din instituțiile medicale sunt deseori indexate pe baza unor aspecte
reprezentative precum: tipurile de proceduri chirurgicale. De asemenea, filtrarea automată a
email-urilor în categorii precum ham, spam este foarte des utilizată în prezent, având de

40
asemenea un grad ridicat al importanței, în ceea ce privește ușurarea activităților noastre
zilnice.
Având în vedere aceste lucruri, existența unui soft care să poată fi antrenat în vederea
recunoașterii oricâtor categorii de documente, de ori câte ori, fără modificări ale codului sursă
(adică o aplicație care să poată fi utilizată de către oricine indiferent de cunoștințele din
domeniul informaticii) ar fi de un real folos, ajutându-ne să ne clasificăm documentele în ce
categorii dorim, condiția fiind să dispunem de un set de documente relevante acestui scop,
necesare procesului de antrenare.
Se va folosi deci, o metodă de învățare Bayesiană pentru rezolvarea acestei probleme,
testându-se algoritmul final atât pentru clasificarea binară, cât și pentru clasificarea în mai
mult de două categorii. Softul va putea fi folosit în orice domeniu, cât timp se pretează
categorizării de natură textuală.

4.2. Analiză și proiectare

Propunem utilizarea clasificatorului naiv Bayes pentru conceperea sistemului destinat


clasificării documentelor de tip text.
După cum am precizat și anterior în descrierea comportamentului acestui clasificator,
avem nevoie de un spațiu al instanțelor X , care să descrie toate documentele de tip text
existente, precum și de un set de date de antrenament corespunzătoare unor funcții target
necunoscute f(x) care pot lua orice valoare dintr-un anume set finit V . Scopul sistemului este
acela de a învăța pe baza acestor date de antrenament să prezică valoarea funcției țintă, adică
denumirea categoriei din care face parte un document nou, oferit spre clasificare.
În ceea ce privește raportarea acestei probleme de categorizare textuală la utilizarea
concretă a clasificatorului naiv Bayes, intervin două aspecte importante care țin de proiectare.
În primul rând, trebuie să decidem cum vom reprezenta un document text sub forma unor
atribute, iar în al doilea rand trebuie să identificăm o modalitate de estimare a probabilităților
necesare clasificatorului.
În cazul de față, pentru un anumit document, atributele vor fi definite pentru fiecare
poziție a unui cuvânt, valoarea acestora fiind reprezentată tocmai de către cuvintele
corespunzătoare. Este ușor de intuit faptul că pentru anumite documente, care au o lungime
foarte mare și numărul de atribute va fi ridicat. Totuși acest detaliu nu ne va cauza probleme,
după cum vom putea observa în cele ce urmează.
Pentru a putea ilustra modul de lucru al clasificatorului naiv Bayes în contextul actual,
vom lua un exemplu concret, pe baza căruia vom creiona anumite caracteristici esențiale,
urmând să prezentăm și beneficiile suplimentare pe care le va avea utilizatorul pe lângă
posibilitatea de antrenare și testare a sistemului respectiv. Presupunem că avem la dispoziție
un set de 600 de documente pentru antrenament corespunzătoare unei anumite categorii cu
numele: C1 și alte 400 de documente corespunzătoare unei alte categorii: C2. În conformitate
41
cu scopul nostru, în urma procesului de antrenare vom dori, cel mai probabil, să clasificăm un
document nou, în una dintre cele două categorii. Pentru realizarea acestui lucru, clasificatorul
va trebui să instanțieze următoarea formulă:
v NB =P( argmax
v ϵV ¿ v j ) ∏ P(a i ∨v j ) ¿
j
ai

Practic, clasificarea naivă v NB maximizează probabilitatea de a observa acele cuvinte care


au fost găsite în document, datorită presupunerii naive de independență a cuvintelor, conform
căreia probabilitățile cuvintelor de pe o anumită poziție sunt independente de cele ale
cuvintelor care apar pe alte poziții. Această presupunere poate fi considerată însă incorectă.
De exemplu: probabilitatea de observare a cuvântului „learning” pe o anumită poziție ar trebui
să fie mai mare în cazul în care pe poziția precedentă s-ar afla cuvântul „machine”. Totuși,
această abordare ne este necesară pentru reducerea numărului de probabilități calculate, iar
clasificatorul naiv Bayes reușește să obțină performanțe ridicate în ciuda acestui compromis.
Pentru calcularea v NB avem nevoie de probabilitățile inițiale P( v ¿¿ j) ¿, care pot fi
estimate pentru fiecare categorie în parte prin calcularea raportului dintre: numărul de
documente dintr-o anumită categorie și numărul total de documente (în cazul nostru
600/1000=0.6 pentru categoria C1, respectiv 300/1000=0.3 pentru categoria C2).
Estimarea probabilităților condiționale este însă mai problematică, deoarece necesită
calcularea unui astfel de termen probabilistic pentru fiecare combinație a pozițiilor din text, a
cuvintelor și a valorii funcției țintă.
Să presupunem că luăm în considerare vocabularul englez în care există aproximativ
50000 de cuvinte distincte și nu folosim conceptul de independență condițională, rămânând în
rest aceleași setări ca mai sus (adică avem la dispoziție două categorii și i poziții în cadrul
unui anumit document). Va trebui deci, să estimăm 2∗i∗50000=100000∗i termeni. În cazul
în care documentul are 100 de poziții (adică dacă i=100) vom obține
100000∗100=10000000 termeni, o valoare mult prea mare pentru a putea fi luată în
considerare.
Acesta este și motivul pentru care vom considera independența condițională a atributelor
și distribuția identică a acestora, obținând în acest caz pe același exemplu 2∗50000 de termeni
probabilistici diferiți, de i ori mai puțini.
În continuare, trebuie să alegem o metodă de estimare a probabilităților. Vom folosi
tehnica m-estimare cu proirități uniforme, unde m va fi egal cu dimensiunea vocabularului de
cuvinte. Astfel, estimarea parametrului P(a i∨v j) va fi obținută cu ajutorul formulei:
n i+1
P ( ai|v j ) =
n+ ¿Vocabular ∨¿ ¿
n reprezintă numărul total de poziții ale cuvintelor din toate documentele pentru antrenare
a căror valoare țintă este v j, ni este numărul de apariții al cuvântului w i pe aceste poziții, iar
¿ Vocabular∨¿ reprezintă numărul total de cuvinte distincte din cadrul setului de date de
antrenament.

42
Pașii prezentați anterior corespund procesului de antrenare al sistemului, respectiv
clasificare a unor documente noi. Având estimările probabilităților condiționale, următorul

pas constă în realizarea testării, astfel încât să ne putem raporta la calitatea acestuia prin
compararea rezultatelor obținute. Pentru a realiza acest lucru, sistemului ii vor fi oferite spre
clasificare documente noi (care nu au fost folosite în procesul de antrenare) și în funcție de
rezultatele obținute se va calcula acuratețea algoritmului după formula
număr de documente clasificate corect
.
număr total de documente
Desigur, pentru ca sistemul să fie ușor de utilizat și cât mai aproape de cerințele
utilizatorului, îi vor fi atribuite mai multe funcționalități, care pot fi observate și în cadrul
diagramelor care urmează:

 Diagrama cazurilor de utilizare:

 Diagrama corespondențelor dintre pachete:

43
Pentru realizarea acestei aplicații am utilizat arhitectura Model-View-Controller, ce
reprezintă un şablon arhitectural folosit în industria de software development. Această
modalitate de lucru reuşeşte cu succes să izoleze partea logică de interfaţa proiectului,
rezultând aplicaţii extrem de uşor de modificat. În această organizare, modelul reprezintă
informaţia (datele) de care are nevoie aplicaţia, view-ul corespunde elementelor de interfaţă
iar controller-ul reprezintă sistemul comunicativ şi decizional ce procesează datele
informaţionale, făcând legătură între model şi view.

 Diagrama de clase, împărțită pe pachete:

44
45
46
 Diagrama de clase, corespunzătoare logicii aplicației (cuprinde clasele din pachetele:

model, utile, service, dao)

4.3. Implementare

După ce au fost evidențiate conceptele care stau la baza funcționării clasificatorului naiv
Bayes, implementarea acestuia se desfășoară natural, principalele decizii și alegeri fiind
determinate strict de modul în care dorim să arate și să se comporte sistemul în final.
Scopul nostru este acela de a realiza o aplicație care să reușească printr-un design atractiv
să îndeplinească cerințele utilizatorului. Performanța reprezintă de asemenea o caracteristică
importantă, întrucât stă la baza încrederii pe care un personaj uman o poate acorda unui sistem
soft, iar independența de platformă constituie un plus în momentul în care ne raportăm la
distribuția pe scară largă a produsului pe care îl concepem.
Acestea fiind spuse, am ales ca limbaj de programare Java, un limbaj orientat obiect,
puternic tipizat. Un avantaj al acestuia este reprezentat de posibilitatea rulării unui program
compilat în prealabil, pe orice platformă care are instalată o mașină virtuală Java (Java
Virtual Machine – JVM). Acest lucru este posibil datorită faptului că în urma compilării unor
surse Java obținem un format standard, numit cod de octeți, care constituie o cale de mijloc
între codul mașină (o caracteristică specifică tipului de calculator) și codul sursă.
Pentru a putea oferi utilizatorului o perspectivă clară asupra performanțelor sistemului,
am ales utilizarea unui sistem de gestiune a bazelor de date relaționale, mai exact MySQL,
care este de asemenea independent de platformă, alături de Hibernate, care reprezintă o soluție

47
de mapare obiect-relațională (Object-Relational Mapping - ORM) pentru Java, oferind de
asemenea și facilități de interogare a datelor.
În acest sens, am avut nevoie de o bază de date nouă, pe care am denumit-o
clasificatornaivbayes. Aceasta conține la rândul ei trei tabele: acuratete, functiitinta,
probabilitaticonditionale. Vom prezenta structura acestora în cele ce urmează:
 acuratete
Coloană Tip Nul Cheie primară
dataOraTestării datetime Nu Da
categorii varchar(500) Nu Nu
microPrecizie double Nu Nu
microSensibilitate double Nu Nu
microScorF1 double Nu Nu
macroPrecizie double Nu Nu
macroSensibilitate double Nu Nu
macroScorF1 double Nu Nu
acuratete double Nu Nu
observatii varchar(500) Nu Nu

 functiitinta
Coloană Tip Nul Cheie primară
categorie varchar(50) Nu Da
probabilitate double Nu Nu

 probabilitaticonditionale
Coloană Tip Nul Cheie primară
cuvant varchar(50) Nu Da
categorie varchar(50) Nu Da
probabilitate double Nu Nu

În urma procesului de antrenare, vor rezulta probabilitățile condiționale, respectiv funcțiile


țintă, care vor fi utile ulterior în cadrul procesului de testare, respectiv de clasificare a unor
documente noi. Pentru a nu fi nevoie ca la fiecare pornire a aplicației să se inițieze procesul
de antrenare al sistemului, este necesară salvarea acestor informații obținute în cadrul unei
baze de date. Astfel, utilizatorul va putea testa sistemul, respectiv clasifica documente noi, pe
baza unei antrenări făcute anterior, sau va putea alege opțiunea de antrenare a sistemului în
momentul respectiv, dacă dorește acest lucru.
Pentru a putea ține o evidență clară asupra comportamentului programului în funcție de
setările făcute, sau având în vedere diverse categorii ale documentelor folosite pentru procesul
de antrenare, acuratețile obținute în urma testărilor au fost salvate într-un tabel. Acestea sunt
utilizate ulterior pentru reprezentarea unor grafice grupate pe categorii.
În continuare, vom prezenta succint clasele cele mai importante folosite în realizarea
funcționalității acestui sistem:

48
PreprocesatorText.java::
Ne oferă posibilitatea de a preprocesa o listă de cuvinte, punând la dispoziția utilizatorului
trei setări care pot fi activate, respectiv dezactivate, după voia acestuia:
 Eliminare stop-words – această tehnică este deseori utilizată pentru filtrarea
documentelor de tip text și constă în eliminarea cuvintelor cele mai uzuale din
vocabularul englez, acestea fiind preluate în cadrul algoritmului din fișierul
stopwords.txt;
 Aplicare Stemmer – acest termen este utilizat în morfologia lingvistică, precum și în
tehnicile de regăsire a informațiilor, caracterizându-se prin reducerea cuvintelor la o
formă mai scurtă, datorită eliminării inflexiunilor și a sufixelor comune din punct de
vedere morfologic;
 Aplicare Lemmatizer – este un proces asemănător Stemmer-ului, având un grad de
dificultate mai ridicat, datorită faptului că în acest caz cuvintele sunt reduse la rădăcina
lor, rezultatele obținute fiind la rândul lor cuvinte reale.
Document.java:
Pentru a instanția un astfel de obiect avem nevoie de calea către un fișier text, categoria
din care acesta face parte și de un obiect instanță a clasei PreprocesatorText. Cuvintele din
cadrul documentului sunt găsite prin intermediul unor separatori prestabiliți aflați în fișierul
separatori.txt, acestea fiind ulterior supuse unei preprocesări. În cele din urmă se obține un
container de forma Dicționar<Cuvânt, Frecvență> care conține toate cuvintele preprocesate
din fișier, alături de numărul de apariții corespunzător.
GeneratorDocumente.java:
Are rolul de a genera în mod automat și aleator documentele pentru antrenare, respectiv
pentru testare, respectând raportul 2/3 1/3. Pe baza unui folder, care este oferit ca parametru
constructorului, vor fi obținute două liste, care conțin căile documentelor din folderul
respectiv. Una dintre acestea va corespunde fișierelor pentru antrenare, iar cealaltă fișierelor
pentru testare. Fiecărei categorii în parte îi va corespunde o instanță a clasei
GeneratorDocumente.
FunctieTinta.java:
Reprezintă o categorie, în care va putea fi ulterior clasificat un document nou. Reține
denumirea categoriei, precum și probabilitatea inițială a acesteia.
ProbabilitateConditionala.java:
Constituie probabilitatea condițională asignată unui cuvânt, în raport cu o anumită
categorie. În urma antrenării sistemului, pentru fiecare cuvânt din cadrul vocabularului final
va rezulta un număr egal de probabilități, deci și un număr egal de instanțe ale clasei
ProbabilitateCondițională, acesta fiind egal cu numărul de categorii folosite.
Acuratete.java:

49
Reprezintă feedback-ul pe care îl obținem în urma antrenării sistemului, fiind relevant
tocmai datorită faptului că putem vizualiza calitatatea algoritmului și comportamentul
acestuia în funcție de setările folosite, de categoriile observate, de numărul acestora precum și
de bazele de date pentru antrenare utilizate. Fiecare instanță a acestei clase conține informații
relevante despre realizarea unui anumit proces de testare care corespunde la rândul său unui
proces concret de antrenare, precum: categoriile, data și ora testării, micro-precizia, micro-
sensibilitatea, micro-scorF1, macro-precizia, macro-sensibilitatea, macro-scorF1, acuratețea și
nu în ultimul rând observațiile despre setările folosite în momentul antrenării.
Vocabular.java:
Un obiect corespunzător acestei clase va reprezenta fie vocabularul cuvintelor pentru o
anumită categorie, fie vocabularul final, care le cuprinde pe celelalte. Aceste informații sunt
reținute sub forma unui Dicționar<Cuvânt, Frecvență>. De asemenea, această clasă ne oferă
posibilitatea de a elimina din cadrul vocabularului acele cuvinte al căror număr de apariție nu
se încadrează într-un interval prestabilit.
AcurateteHibernateDAO.java,
FunctieTintaHibernateDAO.java,
ProbabilitateCondiționalăHibernateDAO.java:
Aceste clase asigură persistența obiectelor corespunzătoare claselor Acuratete,
FunctieTinta și ProbabilitateConditionala în cadrul bazei de date, prin intermediul operațiilor
de tip CRUD.
Antrenare.java:
După cum ne sugerează și numele, în cadrul acestei clase se desfășoară antrenarea
sistemului, fiind apelate mai multe metode din clasele prezentate anterior. Termenul
antrenare se referă în cazul de față la determinarea funcțiilor țintă și a probabilităților
condiționale care sunt necesare ulterior pentru clasificările documentelor noi. Pentru a
înțelege mai bine acest proces, vom prezenta pe scurt pașii urmați.
Pentru ca antrenarea să poată fi realizată, avem nevoie de o listă de obiecte instanțe ale
clasei GeneratorDocumente. Cu ajutorul acesteia, preluând doar acele documente
corespunzătoare antrenării, putem să identificăm vocabularele pentru fiecare categorie în
parte, urmând ca acestea să fie mai apoi integrate într-un vocabular complet. În funcție de
setările alese de către utilizator, cuvintele pot fi obținute prin aplicarea unui stemmer sau a
unui lemmatizer putând fi eliminate dintre acestea și cuvintele uzuale. De asemenea, din
vocabularul mare pot fi eliminate cuvintele cu frecvența cuprinsă într-un anumit interval.
În cazul în care nu beneficiem de anumite cunoștințe anterioare, probabilităților inițiale
corespunzătoare funcțiilor țintă sunt evaluate la aceeași valoare, aceasta fiind calculată astfel:
numărul de documente pentruo anumită categorie
.
numărul total de documente
Urmează calcularea probabilităților condiționale pentru fiecare cuvânt în parte, acest
lucru realizându-se prin intermediul metodei:

50
calculeazaProbabilitatiConditionale (List<GeneratorDocumente>
listaGeneratoareDocumente) care este prezentată mai jos:

private void calculeazaProbabilitatiConditionale(List<GeneratorDocumente> listaGeneratoareDocumente) {


for (String cuvant : this.vocabularToateCategoriile.getDictionarCuvantFrecventa().keySet()){
Map<String, Double> categorieProbabilitate = new HashMap<String, Double>();
Double marimeVocabular = new
Double(this.vocabularToateCategoriile.getDictionarCuvantFrecventa().size());
for (GeneratorDocumente generatorDocumente : listaGeneratoareDocumente) {
String categorie = generatorDocumente.getDenumireFolder();
Vocabular vocabularCategorie = this.dictionarCategorieVocabular.get(categorie);
Integer nk = vocabularCategorie.getDictionarCuvantFrecventa().get(cuvant);
if (nk == null) {
nk = new Integer(0);
}
Double n = new Double(vocabularCategorie.getDictionarCuvantFrecventa().size());
Double probabilitate = (new Double(nk) + 1.0)/(n + marimeVocabular);
categorieProbabilitate.put(categorie, probabilitate);
}
this.probabilitatiConditionale.put(cuvant, categorieProbabilitate);
}
}

Ulterior, probabilitățile condiționale, alături de funcțiile țintă sunt salvate în baza de date,
prin apelul metodelor: stergeIncarcaFunctiiTintaBD(), stergeIncarcaProbabilitatileBD().
ClasificatorNaivBayes.java:
După ce a fost realizată antrenarea sistemului, putem să clasificăm un document nou în
una din categoriile care au fost învățate, cu ajutorul probabilităților condiționale și a funcțiilor
țintă preluate din baza de date. Desigur, acest document este supus inițial unui
PreprocesatorText, urmând ca pentru fiecare categorie în parte să se calculeze probabilitatea
ca fișierul text respectiv să îi corespundă. În cele din urmă, se alege ca rezultat final acea
categorie cu probabilitatea cea mai mare:

private Map<String, Double> calculeazaProduseProbabilitatiCategorii(Document document) {


this.produsuriProbabilitati = new HashMap<String, Double>();
for (FunctieTinta functieTinta : this.functiiTinta) {
Double probabilitateFunctieTinta = functieTinta.getProbabilitate();
Double produs = probabilitateFunctieTinta;
for (String cuvant : document.getDictionarCuvantFrecventaPrelucrat().keySet()) {
Map<String, Double> dictionarCategorieProbabilitate =
this.probabilitatiConditionale.get(cuvant);
if (dictionarCategorieProbabilitate != null) {
Double probabilitateCategorie =
dictionarCategorieProbabilitate.get(functieTinta.getCategorie());
produs = produs * probabilitateCategorie;
}
}
this.produsuriProbabilitati.put(functieTinta.getCategorie(), produs);
}
return produsuriProbabilitati;
}

public String clasificaDocument(Document document) {


this.produsuriProbabilitati = calculeazaProduseProbabilitatiCategorii(document);
Double probabilitateMaxima = 0.0;
for (Map.Entry<String, Double> entry : this.produsuriProbabilitati.entrySet()) {

51
if (probabilitateMaxima.compareTo(entry.getValue()) == -1) {
probabilitateMaxima = entry.getValue();
}
}
for (Map.Entry<String, Double> entry : this.produsuriProbabilitati.entrySet()) {
if (probabilitateMaxima.compareTo(entry.getValue()) == 0) {
return entry.getKey();
}
}
return "";
}

Această clasă ne mai oferă o funcționalitate, și anume aceea de a calcula pentru fiecare
categorie în parte, probabilitatea corespunzătoare documentului nou oferit spre clasificare.
Această abordare este utilă, tocmai datorită faptului că ne oferă posibilitatea de a vizualiza, pe
lângă clasa aleasă de către sistem și probabilitatea pe baza căreia a fost luată această decizie,
alături de probabilitățile corespunzătoare celorlalte clase.
În acest sens, pot fi identificate asemănările, respectiv deosebirile dintre categorii, prin
studierea variațiilor valorilor probabilistice de la o categorie la alta. Metoda corespunzătoare
acestei abordări este: calculeazaProbabilitatiCategorii(Document document).
Testare.java:
Această clasă ne oferă mai multe funcționalități în ceea ce privește evaluarea sistemului,
în urma procesului de antrenare. Cu ajutorul unei instanțe a clasei ClasificatorNaivBayes,
documentele corespunzătoare testării sunt clasificate, rezultatele obținute fiind mai apoi
comparate cu adevăratele categorii care ar fi trebuit alese.
Informațiile obținute sunt relevante pentru construirea matricei confuziei, sau a erorilor
cum mai este denumită, care permite vizualizarea performanțelor algoritmului. Coloanele
corespund instanțelor categoriilor prezise, iar rândurile corespund instanțelor din categoriile
corecte. Metoda implicată în rezolvarea acestei funcționalități este apelată ulterior în cadrul
metodei principale, care cu ajutorul matricei confuziei instanțiază un obiect al clasei
Acuratete. Atât acuratețea, cât și matricea confuziei sunt salvate în cadrul unor fișiere, astfel
încât la pornirea viitoare a aplicației, utilizatorul să poată vedea aceste informații.

public void testeazaAlgoritm(List<GeneratorDocumente> listaGeneratoareDocumente) {


int nrDocumenteClasificate = 0;
Map<String, Map<String, Integer>> matriceaConfuziei =
this.calculeazaMatriceaConfuziei(listaGeneratoareDocumente);
Double sensibilitateTotal = 0.0;
Double precizieTotal = 0.0;
Double scorF1Total = 0.0;
int adevaratPozitiveTotal = 0;
int falsPozitiveTotal = 0;
int adevaratNegativeTotal = 0;
int falsNegativeTotal = 0;
for (String denumireCategorie : this.preiaDenumiriCategorii(listaGeneratoareDocumente)) {
//numarul de elemente clasificate corect pentru aceasta categorie
int adevaratPozitive = matriceaConfuziei.get(denumireCategorie).get(denumireCategorie);
//numarul de elemente din alte categorii care au fost clasificate ca facand parte din categoria de fata
int falsPozitive = 0;
for (String key : matriceaConfuziei.keySet()) {

52
if (!key.equals(denumireCategorie)) {
falsPozitive = falsPozitive + matriceaConfuziei.get(key).get(denumireCategorie);
}
}
//numarul de elemente din acesta categorie care au fost clasificate ca facand parte din alte categorii
int falsNegative = 0;
Map<String, Integer> hashMap = matriceaConfuziei.get(denumireCategorie);
for (String key : hashMap.keySet()) {
if (!key.equals(denumireCategorie)) {
falsNegative = falsNegative + hashMap.get(key);
}
}
//numarul de elemente care au fost clasificate corect, ca facand parte din alte categorii
int adevaratNegative = 0;
for (String key : matriceaConfuziei.keySet()) {
if (!key.equals(denumireCategorie)) {
for (String key1 : matriceaConfuziei.get(key).keySet()) {
if (!key1.equals(denumireCategorie)) {
adevaratNegative = adevaratNegative +
matriceaConfuziei.get(key).get(key1);
}
}
}
}
if (nrDocumenteClasificate == 0) {
nrDocumenteClasificate = nrDocumenteClasificate + adevaratNegative + adevaratPozitive +
falsNegative + falsPozitive;
}
adevaratPozitiveTotal += adevaratPozitive;
falsPozitiveTotal += falsPozitive;
falsNegativeTotal += falsNegative;
adevaratNegativeTotal += adevaratNegative;
Double sensibilitate = 0.0;
Double precizie = 0.0;
Double scorF1 = 0.0;
if ((adevaratPozitive + falsNegative) > 0) {
sensibilitate = new Double(adevaratPozitive)/(adevaratPozitive + falsNegative);
}
if ((adevaratPozitive + falsPozitive) > 0) {
precizie = new Double(adevaratPozitive)/(adevaratPozitive + falsPozitive);
}
if ((2 * adevaratPozitive + falsPozitive + falsNegative) > 0) {
scorF1 = new Double(2 * adevaratPozitive)/(2 * adevaratPozitive + falsPozitive +
falsNegative);
}
sensibilitateTotal = sensibilitateTotal + sensibilitate;
precizieTotal = precizieTotal + precizie;
scorF1Total = scorF1Total + scorF1;
}
Double macroSensibilitate = sensibilitateTotal/listaGeneratoareDocumente.size();
Double macroPrecizie = precizieTotal/listaGeneratoareDocumente.size();
Double macroScorF1 = scorF1Total/listaGeneratoareDocumente.size();
Double microSensibilitate = new Double(adevaratPozitiveTotal)/(adevaratPozitiveTotal + falsPozitiveTotal);
Double microPrecizie = new Double(adevaratPozitiveTotal)/(adevaratPozitiveTotal + falsNegativeTotal);
Double microScorF1 = 2/(1/microSensibilitate + 1/microPrecizie);
Double acuratete = new Double(adevaratPozitiveTotal)/(nrDocumenteClasificate);
DateFormat df = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
Calendar calobj = Calendar.getInstance();
Acuratete ac = new Acuratete(this.preiaDenumiriCategorii(listaGeneratoareDocumente).toString(),
df.format(calobj.getTime()), microPrecizie, microSensibilitate, microScorF1, macroPrecizie, macroSensibilitate,
macroScorF1, acuratete, observatii);
acurateteHibernateDAO.saveAcuratete(ac);
Serializable.serializeazaObiect("src/fisiere/acuratete.txt", ac);
Serializable.serializeazaObiect("src/fisiere/matriceaConfuziei.txt", matriceaConfuziei);
}

53
4.4. Manual de utilizare

În momentul în care dăm dublu-click pe executabil, se deschide următoarea fereastră:

54
Ne aflăm în fereastra corespunzătoare procesului de antrenare. Dacă dăm click pe butonul
Adaugati folder in lista se deschide o fereastră nouă, prin intermediul căreia putem alege
folderele corespunzătoare categoriilor documentelor:

Alegem un folder, apăsăm butonul Select Folder, iar lista din fereastra principală va fi
actualizată. În cazul în care am ales din greșeală un director greșit și dorim să îl eliminăm, îl
selectăm și apăsăm butonul Stergeti folderul selectat din lista:

55
Pentru a putea începe antrenarea sistemului, în lista folderelor trebuie să existe cel puțin
două elemente. În cazul în care nu respectăm acest lucru și apăsăm butonul Incepeti
antrenarea sistemului, va fi afișat un mesaj de eroare corespunzător. Un astfel de mesaj își va
face apariția și în cazul în care apăsăm butonul de ștergere al unui folder fără a îl selecta.
Exemplu:

În momentul în care apăsăm butonul Setări, apare o fereastră nouă, care conține setările
prestabilite ale sistemului pentru antrenare. Aceste setări pot fi modificate în funcție de
preferințele noastre, salvate cu ajutorul butonului Salvati setarile și vizualizate prin selectarea
butonului Setari initiale. În cazul în care cele două câmpuri completate nu sunt valide , la

tentativa de salvare a acestora, va apărea un mesaj de eroare reprezentativ.

56
Să presupunem că lăsăm setările inițiale ale sistemului, adăugăm încă 3 foldere în lista
pentru antrenare și apăsăm butonul Incepeti antrenarea sistemului. În timpul în care se
derulează procesul de antrenare, cursorul se transformă într-un progress indicator, urmând ca

la final, dacă totul a decurs cu bine, să fim anunțați printr-un mesaj.Pentru a putea vedea
acuratețea sistemului în urma antrenării, dăm click pe tab-ul în dreptul căruia scrie Testare.
Noua fereastră conține în partea stângă detalii despre ultima antrenare, respectiv testare a
sistemului, iar în partea dreaptă, matricea confuziei corespunzătoare.
Dacă dăm click pe tab-ul Clasificare, va apărea următoarea fereastră:

57
După cum se poate observa, avem la dispoziție trei opțiuni. Prima dintre acestea, ne dă
posibilitatea de a crea un document nou care să poată fi ulterior clasificat. Pentru aceasta,
apăsăm butonul Creare document nou și ni se va deschide o fereastră nouă, în care vom putea
completa conținutul noului fișier:

Apăsăm butonul salvare document și vom putea alege denumirea acestuia și locul în care
dorim să îl salvăm.

58
Dacă dăm click pe butonul Alegeti documente pentru clasificare ni se va deschide o
fereastră similară cu cea pentru alegerea directoarelor pentru antrenare, de unde putem alege
unul sau mai multe documente pentru a fi clasificate. După aceasta, fișierele alese vor fi
supuse procesului de clasificare, rezultatele putând fi observate în partea stângă a ecranului,
sub următoarea formă: categorie  probabilitatea cu care a fost aleasă.

59
În cazul în dorim să vizualizăm și probabilitățile pentru celelalte categorii, apăsăm
butonul Detalii și se va deschide o altă fereastră cu un tabel care conține aceste informații.
Accesarea butonului Detalii va cauza apariția unui mesaj de eroare, dacă nu au fost alese
înainte documente pentru clasificare.

Ultimul tab corespunde graficelor acurateților obținute de-a lungul timpului, pentru toate
grupările de categorii care au fost folosite în procesul de antrenare. În partea de sus a ferestrei,
există un combo-box, de unde putem alege acea structură a categoriilor pentru care dorim să
vizualizăm graficul. Implicit, este selectată și reprezentată prima astfel de grupare existentă.
În momentul în care ducem cursorul deasupra unui nod, apare probabilitatea completă
corespunzătoare acestuia.

60
20
15
10
74 categorii
categorii
12
12 12

10
10 10

88 8
2 categorii
66
12 6

44
10 4

22
8 2

00
6 0
00 0 22 2 44 4 66 6 88 8 10 10
10 1212
12
4

0
0 2 4 6 8 10 12

4.5. Rezultate obținute

Întrucât sistemul a fost realizat într-o modalitate care să permită antrenarea cu ușurință
pentru oricât de multe categorii, am ales două seturi de date care să scoată în evidență atât
clasificarea binară cât și cea multi-class.
Astfel, primul set de date este Newsgroup, colectat de către Ken Lang. Acesta conține
20000 articole care au fost împărțite în 20 categorii (Joachims 1997), multe dintre acestea
fiind totuși ușor de confundat. De exemplu, cinci dintre ele au denumirea sub forma comp.*,
conținând diferse discuții de grup, iar trei dintre ele au ca temă pricipală religia.
Setul de date a fost împărțit astfel: 2/3 pentru procesul de antrenare și 1/3 pentru testare.
După cum am precizat și anterior, această repartajare se face aleator. Ca setări pentru procesul
de antrenare, am ales eliminarea așa-numitelor stop-words, aplicarea stemmer-ului și
eliminarea cuvintelor cu frecvența de apariție mai mică decât 3 și mai mare decât 100. Pentru
a putea observa evoluția sistemului în funcție de numărul de categorii alese, am decis să
preluăm acurateților obținute după 15 rulări pentru 20, 15, 10, 7, 4 și 2 categorii. Rezultatele
obținute pot fi observate în graficele care urmează:

Astfel, pentru antrenarea sistemului pe toate cele 20 de categorii, am obținut o medie a


acurateților de 0,804601487, adică o performanță de aproximativ 80,5%, care este comparabil
mai mare decât o valoare de 5% care ar fi obținută în cazul alegerii aleatoare a rezultatelor.

61
Spam - Ham
12

10

0
0 5 10 15 20 25 30 35 40 45 50

Pentru 15 clase, media acurateților a fost 0,884754109, pentru 10 clase: 0,913706699,


pentru 7 clase: 0,928769077, pentru 4 clase: 0,940818363, iar în cele din urmă pentru 2 clase:
0,973552894. După cum se poate observa, acuratețea algoritmului crește pe măsură ce
numărul de clase scade, iar datorită acestei variații, ne-am putea raporta la acuratețea finală ca
fiind media acurateților obținute în urma tuturor experimentelor realizate.Obținem așadar
următoarea valoare: 0,907700438.
În continuare, vom realiza o paralelă între programul dezvoltat și experimentele realizate
de către Tom Mitchell [13], pe același set de date. Spre deosebire de abordarea noastră, acesta
a eliminat primele 100 cuvinte în ordinea descrescătoare a frecvenței de apariție, precum și
cele cu numărul de apariție mai mic decât 3. Nu a fost aplicată niciun fel de preprocesare a
textului în prealabil. Întrucât nu sunt precizate explicit metodele de evaluare a performanței
sistemului, experimentele nu pot fi reproduse cu exactitate. Totuși, este de remarcat faptul că
media acurateților pe care am obținut-o depășește rezultatul lui Tom Mitchell cu mai mult de
un procent, crescând de la 89% la 90,77%.
În cadrul unei lucrări de cercetare, Andrew McCallum și Kamal Nigam [12] au scos în
evidență performanțele obținute pe același set de date, folosind însă Clasificatorul naiv Bayes
Bernoulli, unde un anumit document este văzut sub forma unui vector binar peste spațiul de
cuvinte. Articolele au fost împărțite în mod aleator în 2/3 pentru antrenare si restul de 1/3
pentru testare, fiind eliminate din vocabularul final acele cuvinte care apăreau o singură dată.
Au fost realizate mai multe experimente, obținându-se o medie a acurateților de 0,74 adică o
performanță a sistemului de 74%, semnificativ mai mică decât performanța obținută de către
sistemul nostru.
Pentru a prezenta și clasificarea binară, am ales să utilizăm o colecție de 5574 de mesaje
scurte (sms-uri), dintre care 4827 corespunzătoare categoriei: ham și restul de 747
corespunzătoare categoriei: spam.
În ceea ce privește realizarea experimentelor, am utilizat aceeași împărțire a
documentelor ca cea prezentată anterior. Am eliminat așa numitele stop-words, am ales
opțiunea de aplicare a stemmerului, iar din cadrul vocabularului final nu am eliminat
cuvintele a căror frecvență de apariție să corespundă unui anumit interval. Am repetat
procesul de antrenare, respectiv testare de 50 de ori, rezultatele obținute fiind prezentate în
graficul următor:

62
După cum se poate observa, acuratețile obținute variază între 0,977 și 0,987, media lor
fiind reprezentată de valoarea: 0,980236814.
Grupul de cercetători care au reușit să acumuleze toate mesajele necesare compunerii
acestui set de date [13], au testat mai multe metode de învățare automată, astfel încât să poată
evidenția niște rezultate concrete în raport cu măsurarea potențialului datelor colectate. În
acest sens, au utilizat două modalități de identificare a cuvintelor în cadrul documentelor:
 tok1: cuvintele încep cu un caracter printabil, urmat de caractere numerice și
alfanumerice, excluzând punctele, virgulele și caracterul două puncte din mijlocul
secvenței.
 tok2: orice secvență de caractere separate de spații goale, caracterul de linie nouă,
puncte, virgule, două puncte și liniuțe, este considerată cuvânt.
Aceștia nu au luat în considerare nicio tehică de preprocesare a textului precum:
eliminarea stop-words, sau aplicarea unui stemmer, întrucât credeau că acuratețea sistemului
ar avea de suferit în ceea ce privește detectarea spam-ului.
Pentru realizarea experimentelor, au fost folosite implementările din WEKA pentru mai
mulți algoritmi de învățare automată, luând în considerare toate setările inițiale, cu excepția
numărului maxim de iterații care a fost setat la valoarea 20. Setul de date a fost împărțit astfel:
30% pentru antrenare (1674 mesaje), iar restul pentru testare (3900 mesaje).
Clasificatorii utilizați alături de rezultatele obținute, pot fi urmăriți în tabelul de mai jos:
Clasificator Acuratețe %
Linear Support Vector Machine + tok1 97,64
Boosted NB + tok2 97,50
Boosted C4.5 + tok2 97,50
PART + tok2 97,50
Minimum Description Length + tok1 96,26
C4.5 + tok2 95,00
Multivariate Bernoulli NB + tok1 94,00
Multinomial term frequency NB + tok1 93,74
Multinomial Boolean NB + tok1 93,72
K-Nearest Neighbors (K = 1) + tok2 92,70
Basic NB + tok1 77,13
Gauss NB + tok1 91,95
Flexible NB + tok1 90,72
Boolean NB + tok1 77,13
K-Nearest Neighbors (K = 3) + tok2 90,10
Expectation-Maximization + tok2 85,54
TR 86,95

Cea mai bună performanță a fost obținută prin folosirea mașinilor cu suport vectorial,
alături de prima variantă de identificare a cuvintelor în cadrul documentelor: tok1. În acest
caz, acuratețea exprimată în procente a fost 97,64 %.

63
Așadar, algoritmul nostru de categorizare textuală reușește cu succes să depășească toate
metodele de învățare automată prezentate în tabelul de mai sus, aplicabile pe setul de date de
față și folosind setările precizate anterior.

4.6. Extinderi posibile

Produsul soft dezvoltat oferă posibilitatea utilizatorilor de a clasifica documente text noi
pe baza unei antrenări realizate în prealabil, necesară sistemului pentru a putea învăța
categoriile dorite. În momentul de față, performanțele obținute sunt demne de luat în
considerare, însă cu siguranță există posibilitatea unor îmbunătățiri, atât din punct de vedere
computațional, cât și la nivelul interfeței grafice.
În vederea creșterii acurateții, ar putea fi realizate modificări, respectiv îmbunătățiri în
partea de preprocesare a textului. O variantă ar putea fi reprezentată de oferirea posibilității de
modificare a fișierului cu separatori, respectiv posibilitatea de creare a unor șabloane
corespunzătoare identificării cuvintelor, bazate pe expresii regulare, pentru utilizatorii inițiați.
Întrucât programul a fost realizat astfel încât să poată fi antrenat pe oricâte categorii, nu au
putut fi luate decizii de preprocesare care să se muleze perfect pe toate variantele posibile.
Așadar, ideea precedentă ar fi utilă pentru maparea produsului soft pe anumite categorii
concrete.
Momentan, utilizatorul are acces la informații despre ultima antrenare realizată, pe baza
căreia pot face și clasificări ale unor documente noi. O oportunitate de extindere a
funcționalității sistemului ar putea fi constituită de stocarea unui jurnal al antrenărilor,
existând și posibilitatea de gestionare al acestuia. În acest fel, utilizatorul ar putea alege orice
antrenare anterioară în vederea clasificării, fără a fi nevoit să inițieze din nou procesul de
antrenare.
Deși există și acum grafice care scot în evidență performanțele sistemului în funcție de
categoriile pe care a fost antrenat, această parte vizuală ar putea fi extinsă prin includerea mai
multor elemente de acest gen, care să faciliteze interacțiunea utilizatorului cu programul.
Toate aceste propuneri, reprezintă posibile extinderi ale produsului actual, menite să ajute
la îmbunătățirea acestuia. Totuși, stadiul în care ne aflăm este unul suficient pentru o utilizare
intuitivă și sugestivă a programului, funcționalitățile acestuia fiind reprezentate într-o manieră
prietenoasă.

64
CONCLUZIE

În lucrarea de față am încercat să scoatem în evidență posibilitatea integrării metodelor de


învățare Bayesiană în viața noastră de zi cu zi, prin simplificarea proceselor de luare a unor
decizii în raport cu implicarea sistemelor inteligente de natură artificială.
Pe lângă prezentarea conceptelor teoretice care stau la baza îndeplinirii scopului nostru,
am decis să demonstrăm și aplicabilitatea practică a acestuia, prin enunțarea și conceperea
unui produs soft capabil să satisfacă cerințele utilizatorilor atât din punct de vedere funcțional
cât și din punct de vedere al ușurinței de înțelegere și utilizare a aplicației.
Tematica abordată în vederea realizării acestui program s-a axat pe conceptul de
categorizare textuală. În acest sens, produsul final oferă posibilitatea de clasificare a unor
documente noi în una din categoriile pentru care a fost antrenat sistemul. O caracteristică
interesantă și utilă în același timp, este dată de faptul că rigiditatea clasică a clasificatorilor
corespunzătoare unor seturi de date fixate este înlocuită cu alegerea liberă a categoriilor,
proces care poate fi repetat de un număr nelimitat de ori.
Datorită utilizării unor tehnici de preprocesare variate a textelor, precum și datorită
oferirii posibilității de alegere a categoriilor pentru efectuarea procesului de antrenare,

65
performanțele obținute au fost neașteptat de bune, surclasând în anumite cazuri abordările
unor cercetători, pe aceleași seturi de date pe care le-am utilizat și noi pentru realizarea
experimentelor.
Alături de o interfață grafică prietenoasă și ușor de intuit, produsul final poate fi integrat
cu ușurință într-o varietate mare domenii, pornind de la cel jurnalistic și ajungând la cel
medical, cât timp este respectat conținutul de natură textuală a elementelor ce se doresc a fi
clasificate. Datorită portabilității oferită de independența de platformă a sistemului, nu sunt
necesare eforturi suplimentare de rezolvare a problemelor de incompatibilitate.
Așadar, această lucrare are rolul de a oferi o perspectivă clară asupra metodelor de
învățare Bayesiană, în raport cu realizarea unei aplicații practice care să vină în ajutorul
consolidării acestor fundamentări de natură teoretică.

BIBLIOGRAFIE

[1] Vicent Alabau, Jesûs Andrès, Francisco Casacuberta, Jorge Civera Josè Garcia-
Hernàndez, Adrià Gimènez, Alfons Juan, Alberto Sanchis, Enrique Vidal - The naive
Bayes model, generalisations and applications, Agencia Valenciana de Ciencia y
Tecnología, 004 (2005)
[2] Tiago A. Almeida, José María Gómez, Akebo Yamakami - Contributions to the Study
of SMS Spam Filtering: New Collection and Results, in Proceedings of the 2011 ACM
Symposium on Document Engineering, Mountain View, (2011), 259-262
[3] P.Bhargavi, Dr.S.Jyothi - Applying Naive Bayes Data Mining Technique for
Classification of Agricultural Land Soils, IJCSNS International Journal of Computer
Science and Network Security, 8 (2009)
[4] Carla E. Brodley, Umaa Rebbapragada, Kevin Small, Byron C. Wallace - Challenges
and Opportunities in Applied Machine Learning, AI Magazine, Spring (2012), 11-24

66
[5] David Corney - Designing Food with Bayesian Belief Networks, ACDM2000, (2000),
83-94
[6] Paul Ekman, Wallace V. Friesen, Sonia Ancoli – Facial Signs of Emotional Experience,
Journal of Personality and Social Psychology, 6 (1980), 1125-1134
[7] David Heckerman - A Tutorial on Learning With Bayesian Networks, Microsoft
Research, MSR-TR-95-06, (1995)
[8] Héctor Hugo Avilés-Arriaga, Luis Enrique Sucar, Carlos Eduardo Mendoza, Blanca
Vargas - Visual Recognition of Gestures using Dynamic Naive Bayesian Classifiers,
Tec de Monterrey Campus Cuernavaca Av. Paseo de la Reforma, 182
[9] Ben-Gal I. - Bayesian Networks, Encyclopedia of Statistics in Quality & Reliability,
Wiley & Sons, (2007)
[10] Joanna Kazmierskaa, Julian Malicki - Application of the Naive Bayesian Classifier to
optimize treatment decisions, Radiotherapy and Oncology, 86 (2008), 211–216
[11] C. Lynnes, S. Berrick, A. Gopalan, X. Hua, S. Shen, P. Smith, K-Y. Yang, K. Wheeler,
C. Curry - Application of Bayesian Classification to Content-based Data Management,
(2004)
[12] Andrew McCallum, Kamal Nigam - A Comparison of Event Models for Naive Bayes
Text Classification, Darpa HPKB, (1998), 41-48
[13] Tom M. Mitchell - Machine Learning, McGraw-Hill, 1997
[14] Nils J. Nilsson – Introduction to Machine Learning, Robotics Laboratory, Department
of Computer Science, Stanford University, Stanford, CA 94305, 1996
[15] Irina Rish - An empirical study of the naive Bayes classifier, IBM Research Report,
(2001)
[16] Stuart J. Russel, Peter Norvig – Artificial Intelligence – A Modern Aproach, Prentice-
Hall, Englewood Cliffs, New Jersey, 1995
[17] N. Sebe, M.S. Lew, I. Cohen, A. Garg, T.S. Huang - Emotion Recognition Using a
Cauchy Naive Bayes Classifier, Proceedings of the 16 th International Conference on
Pattern Recognition (ICPR'02), 1 (2002), 10017
[18] http://www.forbes.com/sites/85broads/2014/01/06/six-novel-machine-learning-
applications/
[19] http://scott.fortmann-roe.com/docs/BiasVariance.html
[20] http://ai.stanford.edu/~chuongdo/papers/em_tutorial.pdf

67

S-ar putea să vă placă și