02.02.2014 Views

Laborator 4 Algoritmi de clasificare. Vector space classification

Laborator 4 Algoritmi de clasificare. Vector space classification

Laborator 4 Algoritmi de clasificare. Vector space classification

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Laborator</strong> 4<br />

<strong>Algoritmi</strong> <strong>de</strong> <strong>clasificare</strong>. <strong>Vector</strong> <strong>space</strong> <strong>classification</strong><br />

Scop:<br />

- <strong>Vector</strong> Space Mo<strong>de</strong>l<br />

- Algoritm <strong>de</strong> clusterizare bazata pe text<br />

- Algoritmul KNN - K-Nearest Neighbour<br />

- Evaluarea algoritmilor <strong>de</strong> <strong>clasificare</strong><br />

1. Aspecte teoretice<br />

1.1. <strong>Vector</strong> Space Mo<strong>de</strong>l<br />

In cadrul „<strong>Vector</strong> Space Mo<strong>de</strong>l”, fiecărui document ii este atașat un vector <strong>de</strong><br />

caracteristici, a cărui dimensiune este dată <strong>de</strong> numărul <strong>de</strong> atribute unice care se regăsesc în<br />

documentul din colectie. Fiecare element al vectorului are o pon<strong>de</strong>re care specifică<br />

importanța atributului în <strong>clasificare</strong>a documentului. De regulă, aceste atribute sunt extrase<br />

din document folosind meto<strong>de</strong> <strong>de</strong> regăsirea a informației. Faza <strong>de</strong> extragere a termenilor care<br />

caracterizează un document este numită in<strong>de</strong>xarea documentului.<br />

In faza <strong>de</strong> atribuire <strong>de</strong> pon<strong>de</strong>ri pentru fiecare termen se stabilește semnificația în<br />

caracterizarea documentului. Aceste pon<strong>de</strong>ri pot avea valorile 0 sau 1, indicând existența (1)<br />

sau nu (0) a termenilor in document. De regulă, este mult mai raspândită folosirea frecvenței<br />

<strong>de</strong> întâlnire a termenului în cadrul documentului. Tf se folosește pentru a reprezenta<br />

frecvența <strong>de</strong> apariție a termenului în document, iar Idf reprezintă inversul frecvenței <strong>de</strong><br />

întâlnire a termenului în întreaga colecție.<br />

n<br />

Idf = log(<br />

k<br />

<br />

) , un<strong>de</strong> n<br />

k<br />

este numărul <strong>de</strong> documente în care apare termenul, iar N este<br />

numarul total <strong>de</strong> documente.<br />

In etapa următoare trebuie aleasă o măsura <strong>de</strong> similaritate pentru calculul asemănării<br />

dintre două documente. Cea mai folosită măsură pentru similaritate este cea a coeficienților<br />

cosinus, care <strong>de</strong>termină cosinusul unghiului dintre doi vectori <strong>de</strong> caracteristici. Alte măsuri<br />

utilizate sunt cele ale coeficienților Jaccard sau ale coeficienților Dice, ambele fiind<br />

normalizări ale potrivirii simple a coeficienților. Coeficienții Jaccard sunt măsuri <strong>de</strong><br />

similaritate între seturi <strong>de</strong> atribute, şi sunt <strong>de</strong>finiți ca raport între numărul <strong>de</strong> elemente ale<br />

intersecţiei și numărul <strong>de</strong> elemente ale reuniunii setului <strong>de</strong> atribute :<br />

A ∩ B<br />

J ( A,<br />

B)<br />

=<br />

A ∪ B<br />

Distanța Jaccard, care <strong>de</strong>termină diferenţă între seturile <strong>de</strong> test, este complementară<br />

coeficientului Jaccard şi este obţinută prin scă<strong>de</strong>rea coeficientului Jaccard din 1:<br />

A ∪ B − A ∩ B<br />

J<br />

∂<br />

( A,<br />

B)<br />

= 1−<br />

J ( A,<br />

B)<br />

=<br />

A ∪ B


Coeficienții Dice sunt măsuri <strong>de</strong> similaritate între seturi <strong>de</strong> atribute, şi sunt <strong>de</strong>finiți<br />

A ∩ B<br />

conform formulei: J ( A,<br />

B)<br />

= 2<br />

A + B<br />

1.2. Algoritm <strong>de</strong> clusterizare bazata pe text<br />

Cum am spus mai sus, pentru a clasifica documentele, trebuie în prima fază stabilite<br />

atributelor documentelor pe care va fi bazată clusterizarea și reprezentarea lor. După<br />

stabilirea mo<strong>de</strong>lului, clusterizarea este apoi efectuată folosind ca intrare vectorii care<br />

reprezintă documentele și un algoritm <strong>de</strong> clusterizare a documentelor.<br />

In cadrul clasificării bazate pe text se caracterizează fiecare document în funcție <strong>de</strong><br />

conținutul său : cuvintele conținute, frazele sau fragmentele. I<strong>de</strong>ea <strong>de</strong> la care se pleacă este că<br />

dacă două documente conțin multe cuvinte comune, atunci este foarte probabil ca ele să fie<br />

documente similare. Abordările din această categorie pot fi împărțite în funcție <strong>de</strong> metoda <strong>de</strong><br />

clusterizare folosită în: partiționale, ierarhice, bazate pe grafuri, bazate pe rețele neurale și<br />

algoritmi probabilistici.<br />

Clusterizarea partiționala. Clusterizarea <strong>de</strong> documente partiționala încearcă partiționarea<br />

netedă a unei colecții <strong>de</strong> documente într-un număr pre<strong>de</strong>finit <strong>de</strong> clustere disjuncte. <strong>Algoritmi</strong>i<br />

<strong>de</strong> clusterizare partiționali sunt împărtiți în algoritmi cu meto<strong>de</strong> iterative sau <strong>de</strong> realocare și<br />

în algoritmi cu meto<strong>de</strong> cu un singur pas. Cei mai cunoscuți algoritmi <strong>de</strong> clusterizare<br />

partitională sunt k-means, care se bazează pe i<strong>de</strong>ea ca centrul clusterului, numit centroid,<br />

este o bună reprezentare a clusterului. In prima fază se aleg n centroizi; apoi se calculează<br />

distanța cosinus dintre fiecare document din colecție și centroizi, iar documentul este asignat<br />

clusterului cu centroidul cel mai apropiat. In cea <strong>de</strong>-a doua etapă sunt recalculați centroizii<br />

noului cluster și procedura continuă până este atins un anumit prag. Un alt algoritm <strong>de</strong><br />

clusterizare partiționala este algoritmul celei mai apropiate vecinatati care va fi <strong>de</strong>taliat in<br />

capitolul următor.<br />

Clusterizarea ierarhica. <strong>Algoritmi</strong>i <strong>de</strong> clusterizare ierarhică produc o secvență <strong>de</strong> partiții <strong>de</strong><br />

același fel. Similaritatea dintre fiecare pereche <strong>de</strong> documente este stocată într-o matrice <strong>de</strong><br />

similaritate n x n. La fiecare pas, algoritmul fie unește două clustere, fie împarte un cluster în<br />

două. Rezultatul unei clusterizari poate fi văzut sub forma unei structurii arborescente cu un<br />

cluster rădăcină care conține toate documentele colecției și multe clustere la bază, fiecare<br />

continând un singur document.<br />

Clusterizarea bazată pe grafuri. Documentele care urmează să fie clusterizate pot fi văzute<br />

ca un set <strong>de</strong> noduri și muchiile dintre noduri reprezintă relațiile dintre ele. Fiecare muchie are<br />

o pon<strong>de</strong>re, care dă gradul acelei relații. <strong>Algoritmi</strong>i bazați pe grafuri se bazează pe<br />

partiționarea grafului, adică pe i<strong>de</strong>ntificarea clusterelor prin taierea muchiilor din graf astfel<br />

încât muchiile tăiate să fie minimizate. Din moment ce muchiile din graf reprezintă<br />

similaritatea dintre documente, tăind muchiile cu suma minimă a pon<strong>de</strong>rilor, algoritmul<br />

minimizează similaritatea dintre documentele din clustere diferite. I<strong>de</strong>ea <strong>de</strong> baza este că<br />

pon<strong>de</strong>rile muchiilor din același cluster vor fi mai mari <strong>de</strong>cât pon<strong>de</strong>rile muchiilor dintre<br />

clustere.<br />

Clusterizarea Fuzzy. <strong>Algoritmi</strong>i fuzzy <strong>de</strong> obicei încearcă să găsească cea mai bună<br />

clusterizare prin optimizarea unei anumite funcții criteriu. Faptul ca un document poate<br />

aparține <strong>de</strong> mai mult <strong>de</strong> un singur cluster este <strong>de</strong>scris <strong>de</strong> o funcție <strong>de</strong> membru. Funcția <strong>de</strong><br />

membru calculează pentru fiecare document un vector <strong>de</strong> membru, în care al i-lea element


indică gradul <strong>de</strong> apartenență a documentului la al i-lea cluster. Cel mai utilizat algoritm <strong>de</strong><br />

clusterizare fuzzy este Fuzzy c-means, care este o variație a algoritmului partițional k-<br />

means.<br />

Clusterizarea bazata pe rețele neurale. SOM (Self-Organizing Maps - Kohonen) este un<br />

mo<strong>de</strong>l <strong>de</strong> rețea neurală nesupervizată <strong>de</strong>s folosit. Constă din două straturi: nivelul <strong>de</strong> intrare<br />

cu n noduri <strong>de</strong> intrare, corespunzator celor n documente și stratul <strong>de</strong> ieșire cu k noduri <strong>de</strong><br />

ieșire, care corespun<strong>de</strong> celor k regiuni <strong>de</strong> <strong>de</strong>cizie. Fiecărei din cele k unități <strong>de</strong> ieșire îi este<br />

asignat un vector <strong>de</strong> pon<strong>de</strong>ri. In timpul unui pas <strong>de</strong> învățare, un document din colecție este<br />

asociat cu un nod <strong>de</strong> ieșire care are cel mai similar vector <strong>de</strong> pon<strong>de</strong>ri. <strong>Vector</strong>ul <strong>de</strong> pon<strong>de</strong>ri a<br />

nodului «câștigator» este apoi adaptat în asemenea fel încât va fi și mai aproape <strong>de</strong> vectorul<br />

care reprezintă acel document. Ieșirea algoritmului este aranjamentul documentelor <strong>de</strong> intrare<br />

într-un spațiu 2-dimensional în asemenea fel încât similaritatea dintre două documente <strong>de</strong><br />

intrare este oglindită în termenii distanței topografice dintre cele k regiuni <strong>de</strong> <strong>de</strong>cizie.<br />

1.3. Algoritmul k - K-earest eighbour<br />

Principiul acestei meto<strong>de</strong> este <strong>clasificare</strong>a unui document prin găsirea documentului cel<br />

mai apropiat din setul <strong>de</strong> antrenament. Meto<strong>de</strong>le care se bazează pe acest principiu sunt<br />

numite meto<strong>de</strong> <strong>de</strong> ”învățare bazată pe memorie”. Sunt folosite pon<strong>de</strong>rile termenilor Tf și Idf,<br />

calculându-se similaritatea dintre exemplele <strong>de</strong> test și centroizii clusterelor. Pon<strong>de</strong>rea<br />

asignată unui termen este o combinație a pon<strong>de</strong>rilor sale într-o interogare originală și<br />

documentele consi<strong>de</strong>rate relevante și irelevante. In algoritmul <strong>de</strong> mai jos se folosește distanța<br />

Euclidiană pentru a <strong>de</strong>termina similaritatea dintre două documente.<br />

Algoritm:<br />

%input<br />

K: number of neighbours<br />

X: training set patterns<br />

Y: class labels of the training set<br />

z: new pattern<br />

%output<br />

l: predicted label of new pattern<br />

for each x in X<br />

compute Eucli<strong>de</strong>an distance of z from x<br />

d(x) = distance(z,x)<br />

d is an array containing the distances of all x in X from z<br />

end;<br />

;or<strong>de</strong>r patterns of X in increasing or<strong>de</strong>r of d(x)<br />

(sorted_d, in<strong>de</strong>x) = sort(X,d)<br />

sorted_d is the list of elements of d sorted in increasing or<strong>de</strong>r,<br />

and in<strong>de</strong>x(i) is the in<strong>de</strong>x in X of the i-th element of sorted_d<br />

neighbours = in<strong>de</strong>x(1:k);


;in<strong>de</strong>x(1:k) are the first k elements of in<strong>de</strong>x<br />

label_neighbours = Y(neighbours);<br />

;Y(neighbours) are the elements of Y with in<strong>de</strong>x equal to neighbours;<br />

l = majority(label_neighbours);<br />

;majority(label_neighbours) is the class label occurring more times in the<br />

;label_neighbours list.<br />

1.4. Evaluarea algoritmilor <strong>de</strong> <strong>clasificare</strong><br />

<strong>Algoritmi</strong>i <strong>de</strong> <strong>clasificare</strong> pot fi evaluați în funcție <strong>de</strong> viteză și/sau acuratețe. Viteza unui<br />

clasificator trebuie să fie evaluată separat pentru cele două sarcini: învățarea și <strong>clasificare</strong>a<br />

noilor instanțe. Cele mai folosite criterii <strong>de</strong> evaluare sunt precizia și memorarea. Pragurile <strong>de</strong><br />

<strong>de</strong>cizie în algoritmii <strong>de</strong> <strong>clasificare</strong> pot fi modificate pentru a obține o precizie mai mare (cu<br />

un gra<strong>de</strong> <strong>de</strong> memorare mai mică) sau vice-versa.<br />

Se știe că performanța clasificatorilor <strong>de</strong>pin<strong>de</strong> foarte mult <strong>de</strong> împărțirea datelor în seturi<br />

<strong>de</strong> antrenare și testare. Testarea clasificatorilor pe datele <strong>de</strong> antrenare folosite pentru învățare<br />

duce la rezultate semnificativ mai bune. Problema evaluării clasificatorilor este <strong>de</strong>pen<strong>de</strong>ntă<br />

<strong>de</strong> domeniul lor. Fiecare clasificator are un sub-domeniu particular pentru care este<br />

specializat. Pentru a <strong>de</strong>păși această problemă, sunt combinați clasificatori cu învățare<br />

multiplă pentru a obține o <strong>clasificare</strong> mai precisă.<br />

2. Teme<br />

Implementați, testați și interpretați rezultatele pentru vector <strong>space</strong> <strong>classification</strong>, folosind ca<br />

date <strong>de</strong> intrare următoarele <strong>de</strong>scrieri și fisiere <strong>de</strong> intrare :<br />

2.1. In cadrul arhivei reuters.zip se gasesc documente in format sgml care conțin știri ale agenției<br />

Reuters. Sa se in<strong>de</strong>xeze aceste documente folosind pon<strong>de</strong>rea ; i este un cuvant din<br />

documentul k:<br />

ni<br />

wi , k<br />

= fi,<br />

k<br />

*log( ) ,<br />

<br />

un<strong>de</strong> f ,<br />

reprezintă frecvența cu care cuvântul i apare în documentul k, N este numărul total <strong>de</strong><br />

i k<br />

documente angrenate in faza <strong>de</strong> antrenare, iar ni<br />

este numărul total <strong>de</strong> apariții ale cuvantului i în<br />

întreaga colecție. Folosind algoritmul <strong>de</strong> mai sus pentru metoda kNN <strong>de</strong> <strong>clasificare</strong> să se<br />

<strong>de</strong>zvolte o aplicație care să permită <strong>de</strong>terminarea celui mai apropiat grup <strong>de</strong> documente pentru un<br />

document ce conține știri și care este specificat ca intrare.<br />

2.2. Pentru setul <strong>de</strong> imagini binare (imagini.zip) din cadrul laboratorului 3 sa se folosească<br />

algoritmul kNN pentru a <strong>de</strong>termina clasa căreia ii aparține o cifră din cadrul unei imagini <strong>de</strong><br />

iterogare.<br />

w<br />

i , k


2.3. Pentru setul <strong>de</strong> date in format arff din cadrul arhivei hepatitis.zip sa se ruleze algoritmi <strong>de</strong><br />

<strong>clasificare</strong> Naive Bayes si kNN (IBk) - k = 4 din cadrul Weka. Să se compare performanţele<br />

celor două clasificatoare. Să se <strong>de</strong>scrie diferențele observate între cele două tipuri clasificări.<br />

3. Bibliografie<br />

[1] Salton, Gerard. Automatic Text Processing. Addison-Wesley Publishing Company, 1988<br />

[2] http://people.revoledu.com/kardi/tutorial/Similarity/Jaccard.html<br />

[3] http://www.daviddlewis.com/resources/testcollections/reuters21578/

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!