Sunteți pe pagina 1din 22

Algoritmul de clustering COBWEB

Nume Prenume Grupa

1. Introducere
Exploatarea datelor, cunoscuta mai degraba ca data mining, este procesul de sortare a unor cantitati mari de date si de extragere a informatiilor relevante din acestea. Termenul este utilizat de obicei de organizatiile ce se ocupa cu prelucrarea informatiilor companiilor si de analistii financiari, dar este folosit din ce n ce mai mult si n domeniul stiintific cu referire la extragerea informatiilor din volumuri mari de date generate de metode experimentale moderne. In relatie cu planificarea resurselor economice, termenul se identifica cu analiza statistica si logica a unor mari volume de date despre tranzactii, n cautarea unor sabloane care pot ajuta procesul de luare a deciziilor Procesul de data mining implica in general patru clase distincte de actiuni: Clasificarea aranjarea datelor in grupuri predefinite; exemple de algoritmi: invatarea prin arbori de decizie, retele neuronale, clasificare bayesiana, etc. Gruparea (clustering) similara cu clasificarea, insa fara grupuri predefinite; algoritmul va incerca sa grupeze la un loc articole similare. Regresia cautarea unei functii care modeleaza cat mai fidel datele. Invatarea bazata pe reguli de asociere se cauta relatii intre variabile; exemplu de utilizare: analiza cosurilor de produse, in scopul determinarii obiceiurilor consumatorului. Procesul de analiza a clusterelor (clustering) se refera la repartizarea unei multimi de observatii in submultimi denumite clustere, cu proprietatea ca elementele ce apartin aceluiasi cluster prezinta similitudini in baza unor anumite

criterii. Clusteringul constituie o metoda de invatare nesupervizata, tip de problema ce urmareste determinarea modului in care sunt organizate datele. Acest tip de invatare se deosebeste de metodele de invatare supervizata sau invatare prin recompensa prin faptul ca agentului de invatare ii sunt furnizate doar exemple neclasificate.

2. Clasificarea algoritmilor de clustering


Majoritatea algoritmilor de clustering se clasitica in doua mari categorii: algoritmi ierarhici si algoritmi partitionali. In cazul algoritmilor ierarhici, clusterele sunt determinate succesiv, utilizand clusterele formate la pasii anteriori. Algoritmii partitionali determina toate clusterele in paralel. Exista si alte metode de clustering, ce nu se incadreaza in aceste clase, dintre care amintim clasa algoritmilor de clustering spectral, ce utilizeaza o matrice de similaritate pentru a reduce numarul de dimensiuni (variabile) din problema. In clasa algoritmilor ierarhici de clustering se idetifica doua tipuri de strategii: Clustering algomerativ aceasta este o strategie de tip bottom-up, ce porneste de la o stare in care toate elementele reprezinta clustere individuale si fuzioneaza succesiv aceste clustere pana obtine schema finala. Clustering diviziv aceasta este o strategie de tip top-down, cu o stare initiala caracterizata de un singur cluster, format din multimea tuturor elementelor si progresand prin divizarea sa in clustere dn ce in ce mai restranse. Clusteringul ierarhic construieste (in cazul strategiilor aglomerative) sau segmenteaza (in cazul strategiilor divizive) o ierarhie de clustere. Reprezentarea

clasica a unei astfel de ierarhii este in forma de arbore si poarta numele de dendrograma. Radacina dendrogramei consta dintr-un singur cluster continand toate elementele, iar frunzele corespund elementelor individuale. Algoritmii aglomerativi vor incepe la nivelul frunzelor, fuzionand treptat clustere, in timp ce algoritmii divizivi pornesc explorarea arborelui de la radacina si segmenteaza recursiv clustere. Similaritatea intre elemente se poate determina pe baza oricaror criterii valide, iar pe baza acestor criterii algoritmul poate lua decizia fuzionarii sau divizarii de clustere. Fie exemplul de mai jos, in care consideram distanta euclidiana dintre elemente drept criteriu de formare a clusterelor.

Figura 1.a: Setul initial de date

Figura 1.b: Dendrograma unui algoritm ierarhic aglomerativ

Se observa cum aceasta metoda construieste ierarhia pornind de la frunze (elemente individuale), fuzionand progresiv clustere in baza criteriului stabilit

(distanta euclidiana). Se incepe pin fuzionarea celor mai apropiate elemente, in cazul nostru {b,c} si {d,e}, repetandu-se procesul pentru fiecare nivel. Procesul poate fi intrerupt daca se obtine o schema in care distanta dintre clustere este suficient de mare sau daca se intruneste un numar suficient de mic de clustere. O variatie interesanta a strategiei de clustering aglomerativ este paradigma clusteringului conceptual.

3. Clustering conceptual
Clusteringul conceptual reprezinta o paradigma de invatare pentru clasificare nesupervizata dezvoltata in principal in anii 80. Acesta se remarca fata de procedeele obisnuite de clustering de date prin generarea unei descrieri conceptuale pentru fiecare categorie obtinuta. Printre paradigmele inrudite clusteringului conceptual amintim: invatarea prin arbori de decizie, analiza conceptelor formale si invatarea cu modele de amestec (mixture model). Majoritatea metodelor conceptuale sunt capabile sa genereze structuri ierarhice de clase. Se porneste de la o multime de obiecte neclasificata, insotita de o modalitate de a determina daca exista sau nu similitudini intre ele, numita limbaj de descriere. Clusteringul conceptual este strans legat de clusteringul de date, insa formarea clusterelor nu este, in cazul sau, conditionata exclusiv de structura inerenta a datelor. In clusteringul conceptual, limbajul de descriere de care beneficiaza agentul de invatare este direct responsabil de modul in care se formeaza clusterele: o multime de date care formeaza o grupare evidenta in statistica

poate scapa nedetectata daca limbajul de descriere a conceptelor este incapabil sa semnaleze respectivul criteriu de grupare. In majoritatea implementarilor, limbajul de descriere se limiteaza la utilizarea vectorilor de caracteristici (taxonomie numerica), insa algoritmul COBWEB introduce un limbaj de descriere a caracteristicilor probabilistic.

4. Algoritmul COBWEB
4.1. Prezentare generala Publicat de Fisher in 1987, algoritmul COBWEB vine in intampinarea unor probleme ce afectau algoritmii de clustering dezvoltati pana la acea data. Acesti algoritmi utilizau o taxonomie numerica drept limbaj de descriere: obiectele erau reprezentate ca o colectie de trasaturi, fiecareia fiindu-i asociata o valoare numerica. Prin utilizarea taxonomiei numerice, compararea obiectelor se rezuma la aplicarea unei functii de distanta construita pe baza unui vector cu n trasaturi. Conform acestui sistem putem avea urmatoarele definitii: pasare = {zboara, canta, este ovipara, cuibareste in copaci, mananca insecte}; liliac = {zboara, este vivipar, mananca insecte} etc. Astfel de definitii nu sunt bune in orice situatie: ele vor respinge, de exemplu, apartenenta gainii la specia pasare. Spre deosebire de acest sistem inflexibil, omul distinge grade diferite de apartenenta la categorii. De pilda, mierla poate fi considerata un exemplu mai bun de pasare decat gaina, deoarece caracteristicile particulare ale acesteia se intalnesc la un numar mai mare de pasari.

Categoriile se definesc printr-un sistem complex de similaritati intre membri si exista si posibilitatea ca anumite proprietati sa difere intre elemente din aceeasi clasa. Vectorii de trasaturi sau arborii de decizie nu pot realiza clasificari de calitate in astfel de situatii. Algoritmul COBWEB introduce o noua metoda de descriere a categoriilor, ce include si grade de apartenenta. Acesta reprezinta categoriile in mod probalistic, in loc sa defineasca membrii printr-o multime de valori ce trebuie sa fie mereu prezente. Algoritmul COBWEB va calcula probabilitatea cu care fiecare valoare a unei trasaturi este prezenta la un anumit obiect: p(fi = vij| ck) reprezinta probabilitatea conditionata cu care fiecare trasatura fi va avea valoarea vij daca obiectul este membru al categoriei ck. La intalnirea unui nou exemplu, COBWEB ia in considerare calitatea deciziei de a plasa obiectul intr-o categorie existenta sau de a modifica ierarhia. Pentru a evalua calitatea clasificarii, algoritmul propus de Fisher utilizeaza un criteriu numit utilitatea categoriilor (CU).

4.2. Reprezentarea cunostintelor In cadrul algoritmului COBWEB, datele sunt structurate intr-o dendrograma in care fiecare nod reprezinta un concept dat. Fiecare concept reprezinta o multime (mai exact un multiset) de obiecte, fiecare obiect fiind reprezentat printr-o lista de proprietati cu valori binare. Zona de date asociata fiecarui concept (nod) contine o lista de valori intregi reprezentand numarul de aparitii a fiecarei proprietati in cadrul conceptului respectiv. In figura 2 se poate urmari un exemplu de reprezentare a cunostintelor intr-o ierarhie conceptuala probabilistica in cadrul algoritmului COBWEB. Casetele gri

contin reprezentarile obiectelor, iar casetele albe reprezinta listele cu numarul de aparitii a fiecarei proprietati.

Figura 2: Exemplu de reprezentare a cunostintelor COBWEB Fie conceptul C1 din figura. Obiectele ce intra in componenta sa sunt: 1. [1 0 1] 2. [0 1 1] 3. [0 1 0] 4. [0 1 1] A se remarca faptul ca este permisa prezenta mai multor obiecte identice (cu aceleasi valori ale proprietatilor) Cele trei proprietati ale obiectelor pot fi

considerate, de exemplu, urmatoarele trasaturi ale unui animal: [este_mascul, are_aripi, este_nocturn]. Conceptul va stoca lista continand numarul de aparitii ale proprietatilor [1 3 3], ce indica faptul ca unul dintre obiecte este mascul, trei obiecte au aripi si trei sunt nocturne. Descrierea conceptuala este probabilitatea conditionata de categorie a trasaturilor nodului. Pentru un obiect membru al conceptului (categoriei) C1 probabilitatea ca acesta sa fie mascul este = 0.25. Similar, probabilitatea ca acel obiect sa aiba aripi si probabilitatea sa fie nocturn au valoarea = 0.75. Descrierea conceptuala va fi lista [0.25 0.75 0.75], corespunzatoare probabilitatii p(x|C1) = (0.25, 0.75, 0.75). Figura 2 prezinta un arbore cu cinci concepte. C0 este radacina arborelui si contine toate cele zece obiecte din multimea de date. C1 si C2 sunt copiii nodului C0, primul continand patru obiecte, iar al doilea sase. C2 este parintel nodurilor C3, C4 si C5, ce contin trei, doua si respectiv, un obiect. Un nod parinte contine toate obiectele ce intra in componenta succesorilor sai, acestia din urma fiind concepte subordonate primului. In descrierea lui Fisher se mentiona ca singura informatie stocata este cea referitoare la numarul aparitiilor trasaturilor, probabilitatile fiind calculate de fiecare data cand este nevoie de ele.

4.3. Modul de functionare Algoritmul COBWEB organizeaza onservatiile in mod incremental intr-un arbore de clasificare. Fiecare nod din dendrograma reprezinta o clasa (un concept), fiind etichetat de un concept exprimat probabilistic, ce reliefeaza distributia valorilor trasaturilor tuturor obiectelor clasificate in acel nod. Arborele de clasificare se

poate utiliza pentru a prezice atribute absente sau pentru a stabili clasa unui nou obiect. Inserarea de obiecte in arbore se realizeaza succesiv. La inserarea unui nou obiect, algoritmul COBWEB realizeaza o parcurgere de sus in jos (top-down) a arborelui, avand ca punct de start radacina acestuia. Pentru fiecare nod, algoritmul trebuie sa selecteze ce operatie va executa asupra arborelui. Exista patru operatii posibile, iar COBWEB va executa operatia ce produce o valoare maxima pentru functia de utilitate a categoriilor. Cele patru operatii posibile sunt: Inserarea Crearea Fuziunea Diviziunea

Inserarea este operatia in cadrul careia un obiect nou este adaugat intr-unul din nodurile-copil (ce reprezinta concepte) deja existente. Algoritmul COBWEB estimeaza valoarea pe care o ia functia de utilitate a categoriilor la inserarea obiectului in fiecare dintre nodurile-copil existente. In urma acestei evaluari va fi intors conceptul ce a obtinut cel mai bun scor. Crearea unui nou nod este operatia in cadrul careia algoritmul creeaza un nou concept special pentru obiectul dat, stabilind ca aceasta decizie produce o valoare mai buna a utilitatii categoriilor. Fuziunea a doua noduri este o operatie ce se poate aplica asupra celor doua concepte pentru care se obtin cele mai bune valori ale functiei de utilitate a categoriilor. In loc sa insereze obiectul nou intr-unul din aceste doua noduri,

10

algoritmul COBWEB va decide, in acest caz, ca este mai avantajoasa fuziunea celor doua noduri si inserarea obiectului in conceptul obtinut in urma fuziunii. Figura 3 ilustreaza operatia de fuziune.

Figura 3: Operatia de fuziune aplicata conceptelor A si B; rezultatul este noul concept N

Diviziunea unui nod este operatia in cadrul careia in concept este spart, fiind inlocuit in arbore de copiii sai. Algoritmul COBWEB aplica aceasta operatie nodului pentru care se obtine cea mai buna valoare a functiei de utilitate a categoriilor, si insereaza obiectul in nodul rezultat cu cea ma buna utilitate. Figura 4 ilustreaza operatia de diviziune.

11

Figura 4: Operatia de diviziune aplicata conceptului N; N va fi inlocuit de copiii sai

4.4. Utilitatea categoriilor Functia de utilitate a categoriilor a fost introdusa pentru prima oara in 1985 de catre Gluck si Corter, care cercetau in lucraria lor posibilitatile de categorisire a fiintelor umane. Fisher redefineste in lucrarea sa din 1987 aceasta functie ca masura a calitatii unei ierarhii. Noua masura prezinta similitudini fata de conceptul de castig informatiunal (information gain) introdus de Quinlan in cadrul strategiei de invatare prin arbori de decizie. Utilitatea categoriilor doreste maximizarea atat a probabilitatii ca doua obiecte din aceeasi categorie sa aiba valori in comun, cat si a probabilitatii ca obiecte din categorii diferite sa aiba valori ale proprietatilor diferite.

12

Formula utilitatii categoriilor este prezentata mai jos:

p( f
k i j

= vij ) p ( f i = vij | ck ) p (ck | f i = vij )

Suma se calculeaza pentru toate categoriile ck, toate proprietatile fi si toate valorile posibile pentru proprietati vij . Cele trei probabilitati ce intra in componenta sumei au urmatoarea semnificatie: p ( fi = vij| ck ) se numeste predictabilitate si este probabilitatea ca un obiect sa aiba valoarea vij pentru proprietatea fi daca se stice ca obiectul apartine categoriei ck. Cu cat predictabilitatea este mai mare, posibilitatea ca doua obiecte din aceeasi categorie sa aiba aceleasi proprietati va creste. p ( ck | fi = vij ) se numeste predivtivitate si este probabilitatea ca un obiect sa apartina categoriei ck daca acesta are valoarea vij pentru propritatea fi. Cu cat prodictivitatea este mai mare, posibilitatea ca obiectele din alte categorii ca ia acele valori scade. p ( fi = vij ) este utilizata pentru ponderare, caracteristicile cu o frecventa ridicata avand o influenta mai puternica. Pentru a preveni manifestarea fenomenului de overfitting, valoarea functiei de utilitate se poate imparti la numarul total de categorii obtinute. Combinand aceste valori, masurari mari ale functiei de utilitate a categoriilor vor indica o probabilitate mare ca obiectele din aceeasi categorie sa aiba trasaturi in comun, in timp ce este redusa probabilitatea ca obiectele din categorii diferite sa aiba proprietati in comun.

13

4.5. Reprezentarea in pseudocod In cele ce urmeaza vom prezenta o reprezentare a algoritmului COBWEB in pseudocod. Algoritmul primeste la intrare urmatoarele date: root adresa nodului curent, ce are rol de radacina pentru subarborele explorat record o instanta neclasificata a obiectului de inserat

Rezultatul consta dintr-o ierarhie ce clasifica instanta data la intrare. Functiiile apelate de algoritm sunt urmatoarele: newcategory(record)executa operatia de creare a unui concept neou pentru inregistrarea record. insert(record, root) realizeaza inserarea unei inregistrari record in radacina subarborelui root. merge(best1, categorii. split(best1) realizeaza divizarea conceptului cu cea mai buna utilitate in mai multe noduri reprezentand copiii acestuia. Functia COBWEB(root, record)este apelata recursiv, realizand explorarea in adancime a arborelui de concepte pentru a aplica operatia de inserarea asupra nodului considerat optim. best2) realizeaza fuziunea celor mai bune doua

14

Algorithm COBWEB COBWEB(root, record): Input: A COBWEB node root, an instance to insert record if root has no children then children := {copy(root)} newcategory(record) // adds child with records feature values. insert(record, root) // update roots statistics else insert(record, root) for child in roots children do calculate CU for insert(record, root), set best1, best2 := children with best CU. end for if newcategory(record) yields best CU then newcategory(record) else if merge(best1, best2) yields best CU then merge(best1, best2) COBWEB(root, record) else if split(best1) yields best CU then split(best1) COBWEB(root, record) else COBWEB(best1, record) end if end

15

5. Testare si analiza rezultatelor Pentru testare s-a utilizat aplicatia open-source de data mining si invatare automata WEKA (Waikato Environment for Knowledge Analysis), dezvoltata de University of Waikato din Noua Zeelanda. Aplicatia, scrisa in JAVA, este distribuita printr-o licenta GNU General Public License si poate fi descarcata la adresa http://www.cs.waikato.ac.nz/~ml/weka/ . Versiunea utilizata in cadrul acestui experiment este Weka 3.6.1. Pentru testare s-a considerat un fisier de intrare standard oferit de catre program, labor.arff. Fisierul contine 57 de inregistrari de clasificat, reprezentand dosare ale unui centru de analiza a fortei de munca. Inregistrarile sunt caracterizate prin 16 atribute: @attribute 'duration' real @attribute 'wage-increase-first-year' real @attribute 'wage-increase-second-year' real @attribute 'wage-increase-third-year' real @attribute 'cost-of-living-adjustment' {'none','tcf','tc'} @attribute 'working-hours' real @attribute 'pension' {'none','ret_allw','empl_contr'} @attribute 'standby-pay' real @attribute 'shift-differential' real @attribute 'education-allowance' {'yes','no'} @attribute 'statutory-holidays' real @attribute 'vacation' {'below_average','average','generous'} @attribute 'longterm-disability-assistance' {'yes','no'} @attribute 'contribution-to-dental-plan' {'none','half','full'}

16

@attribute 'bereavement-assistance' {'yes','no'} @attribute 'contribution-to-health-plan' {'none','half','full'} Se doreste clasificarea dosarelor in doua clase: @attribute 'class' {'bad','good'} Fiind vorba despre un algoritm de clustering, invatarea exemplelor este nesupervizata. Se va cere clasificatorului sa ignore atributul class la operatia de invatare. Acesta va fi utilizat doar la finalul operatiei de clustering, pentru a lega clusterele gasite de clasele dorite.

Figura 5: Preprocesarea datelor de intrare in Weka

17

In figura 5 am prezentat un screenshot cu etapa de preprocesare a datelor de intrare, iar in figura 6 un screen shot reprezentand rezultatele afisate de aplicatie in urma rularii algoritmului COBWEB.

Figura 6: Aplicarea algoritmului de clustering COBWEB in WEKA

In urma rularii algoritmului COBWEB se obtine urmatoarea ierarhie de concepte:

18

Figura 7: Ierarhia de concepte generata de Weka

Rezultatele clasificarii sunt prezentate mai jos. Numar total de concepte din arbore : 9. Numar de clustere (noduri frunza) obtinute : 6 Distributia inregisrarilor per cluster:
Clasa obiectului good bad Total obiecte Cluster cluster3 2 1 3 cluster4 3 1 4 cluster5 0 4 4 cluster6 0 8 8 cluster7 2 3 5 cluster8 30 3 33

19

Cluster 3 4 5 6 -> bad 7 8 -> good

Numar de obiecte 3 4 4 8 5 33

Procent din total 5% 7% 7% 14% 9% 58%

Clusterele de la 0 la 2 reprezinta noduri interne in arbore (au fost divizate, a se vedea figura 7).

Figura 8: Distributia inregistrarilor per cluster; cu x sunt marcate inregistrarile incadrate in clusterele cluster6 (asociat clasei bad) si cluster8 (asociat clasei good) Utilizand optiunea Classes to clusters evaluation, Weka evalueaza ca cel mai aporpiat cluster de clasa dorita bad este clusterul 6, iar cel mai apropiat de clasa dorita good este clusterul 8.

20

Pe baza acestor rezultate putem calcula eroarea clasificarii: Numarul de inregistrari clasificate gresit: 19 Eroarea = 19/57 = 33.33 % Schimband ordinea inregistrarilor din fisierul de intrare se demonstreaza faptul ca eficienta algoritmului COBWEB este dependenta de ordonarea datelor. Rezultatele obtinute pe noul exemplu de test ofera urmatoarele rezultate: Numar total de noduri: 6 Numar de clustere: 4
Clasa obiectului good bad Total obiecte Cluster Cluster2 3 5 8 Cluster3 3 1 4 Cluster4 24 7 31 Cluster5 7 7 14

Cluster Numar de obiecte Procent din total 2 8 14% 3 4 7% 4 -> good 31 53% 5 -> bad 14 25% Numarul de inregistrari clasificate gresit este, in acest caz 26. Eroarea = 26/57 = 45.614%

6. Concluzii

21

Algoritmul COBWEB este eificient in producerea de arbori cu un numar restrans de clase. Datorita faptului ca permite o analiza probabilistica a apartenentei, categoriile create de el sunt flexibile si robuste. Principalul dezavantaj il reprezinta faptul ca generarea conceptelor este afectata de ordinea in care sunt introduse datele de intrare.

7. Bibliografie http://csie.org/~dm/clustering.2.1107.ppt https://dspace.ist.utl.pt/bitstream/2295/55736/1/Cobweb.ppt http://en.wikipedia.org/wiki/Cluster_analysis http://en.wikipedia.org/wiki/Conceptual_clustering http://en.wikipedia.org/wiki/Cobweb_(clustering)

22

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