Laborator 4 Algoritmi de clasificare. Vector space classification
Laborator 4 Algoritmi de clasificare. Vector space classification
Laborator 4 Algoritmi de clasificare. Vector space classification
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/