Documente Academic
Documente Profesional
Documente Cultură
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
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
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
4
1. TEHNICI DE ÎNVĂȚARE AUTOMATĂ ÎN
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ă
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.
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].
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].
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Ă
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.
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.
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.
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.
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].
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
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.
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 }
Î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.
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
' ' ' ' ' ' ' '
∂
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
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].
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.
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
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.
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.
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.
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]:
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].
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.
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.
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]:
4. APLICAȚIA PRACTICĂ
4.1. Enunț
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ă.
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ă:
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.
44
45
46
Diagrama de clase, corespunzătoare logicii aplicației (cuprinde clasele din pachetele:
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
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:
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:
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.
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
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
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
Î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ă:
61
Spam - Ham
12
10
0
0 5 10 15 20 25 30 35 40 45 50
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.
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
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