Sunteți pe pagina 1din 6

Clusterizarea (clasificare nesupervizată)

Prin clusterizare se identifică grupările naturale ale datelor. Cea mai mare parte a lucrărilor
publicate în analiză de cluster menționează posibilitatea utilizării următoarelor tipuri de algoritmi:
- algoritmi ierarhici;
- algoritmi de partiționare (kMeans)
- algoritmi de tip grid (OptiGrid , OCluster)
- algoritmi bazați pe densitate - DBSCAN, DENCLUE, EM (Expectation Maximization)
În Oracle Data Mining sunt implementați algoritmii kMeans și OCluster.

Algoritmul K-Means
K-Means [MacQueen] este un algoritm de clasificare nesupervizată bazat pe o idee simplă,
pornind de la un număr prestabilit de grupe (k). Ideea constă în a defini de la început, k centrii de
grupă, câte unul pentru fiecare grupă. Modul în care sunt aleși acești centrii este important,
deoarece influențează numărul de iterații ulterioare. După alegerea inițială a centrilor urmează un
proces iterativ de ajustare a pozițiilor acestora astfel încât fiecare centru să grupeze în jurul său cele
mai apropiate instanțe. Funcția obiectiv urmărită la fiecare iterație este:

Min  d x , c ,
n

F 2
i hi
h i 1

unde xi este instanța clasificată, n este numărul de instanțe, hi este grupa în care se repartizează
 
instanța xi, c hi este centrul grupei hi, iar d 2 xi , chi este distanța dintre centrul grupei hi şi instanța
xi.
Algoritmul este unul de tip Greedy şi cuprinde următorii pași:
Pasul 1. Alegerea celor k centrii de grupă inițiali
Pasul 2. Crearea celor k grupe prin alocarea fiecărei instanțe acelei grupe, fată de centrul căreia
este cel mai aproape
Pasul 3. Recalcularea centrilor în raport cu noua componență a grupelor
Pasul 4. Reluarea algoritmului cu pasul 2 dacă centrii s-au deplasat
La pasul 4 se calculează distanța dintre centrii noi și centrii vechi astfel:
k
D   d (c rj  c rj 1 ) ,
j 1

unde d (c rj , c rj 1 ) reprezintă distanța de la centrul grupei j la pasul r și centrul aceleiași grupe la


pasul anterior, r-1. Dacă această valoare este diferită de zero se trece la o nouă iterație.
Alegerea primilor centrii poate influenta numărul de iterații. Acești centrii pot fi aleși aleator sau
utilizând un algoritm care să reducă numărul de iterații.
Versiunea pseudocod a algoritmului este următoarea:

Procedure KMeans(X,k;h)
array X(n,m),h(n),G(k,m),C(k,m)
// X - matricea de observatii
// n - numărul de instanțe, m - numărul de variabile
// k - numărul de clustere
// G și C - matrice ale centrilor de cluster
// h - vectorul ierarhie, h(i) reprezintă clusterul din care va face parte instanța i
// Se calculează matricea centrilor inițiali
call InitCenters(X;C)
do
// Se determina clusterii in conformitate cu centrii existenți
call Clusters(X,C;h)
// Se recalculeaza centrii
call Centers(X,h;G)
// Se calculeaza deplasarea centrilor
call dist(G,C;d)
C=G
while d>eps
return
end

Oracle implementează o versiune modificată a algoritmului K-Means numită bisecting


kMeans. Aceast algoritm este o mixtură între algoritmii ierarhici și algoritmul kMeans. Este un
model ierarhic de tip top-down care constă în spargerea progresivă a clusterelor după principiul
algoritmului clasic K-Means. La fiecare pas este spart un singur cluster - cluster nod - după unul
din următoarele criterii: varianța clusterului, numărul de instanțe din nod.
În pseudocod algoritmul ar putea fi scris astfel:

Procedure BisectingKMeans(X,k;L)
// L este lista-ierarhie alcătuita din vectori de numere naturale, câte un vector pentru fiecare cluster,
fiecare vector conținând indicii indivizilor aparținători clusterului
List[] L
array X(n,m)
// Primul cluster adăugat listei este clusterul format din intreaga colectivitate
call Add(L,{1,2,...,n})
// La fiecare pas un cluster este spart in doua clustere
for i=1,k-1
// Aplicarea unui principiu de extragere a clusterului divizat. Rezultatul, l, este un vector
// din L reprezentând clusterul selectat
call Select(X,H;l)
// Se selectează matricea de observații Y formată din acele linii din X care corespund
clusterului l
call SelectTable(X,l;Y)
//Se aplică algoritmul kMeans clasic pentru divizarea clusterului l în două clustere
call kMeans(Y,2;h)
//Sunt determinați vectorii de indici ai celor două clustere pe baza vectorului partiție h
call split(h;l1,l2)
// Este eliminat clusterul l
call remove(L,l)
//Sunt adăugate noile clustere
call add(L,l1);call add(L,l2)
endfor
return
end

K-Means Oracle este implementat ca un algoritm de învățare, având două faze:


- faza de construire a ierarhiei conform modelului algoritmic (algoritmul descris mai sus);
- faza de aplicare a modelului, care pe baza unor metrici calculate în faza de construire, repartizează
instanțele în clustere.
Aplicarea modelului se poate face și pentru instanțe care nu au fost utilizate în faza de construire a
modelului.
Metricile calculate în faza de construire a modelului sunt:
- scoruri probabilistice de apartenență la clustere pentru fiecare instanță din setul de date folosit la
construirea modelului, folosind teorema lui Bayes;
- algoritmul calculează pentru fiecare cluster, centroidul, histograme pentru fiecare variabilă şi
reguli de descriere a clusterului (reguli de apartenență la cluster);
- scoruri probabilistice la nivel de clustere (nivel de încredere) în baza regulilor de apartenență.
Pe baza acestor caracteristici modelul Oracle KMeans poate funcționa atât ca un model descriptiv
cât și ca un model de predicție.

Partiționarea de tip grid. O-Cluster

Algoritmul O-Cluster face parte din categoria algoritmilor de clusterizare de tip grid. Este
o implementare perfecționata a algoritmului OptiGrid [Alexander Hinnerburg, Daniel Kleim,
1999] si se bazează pe conceptul de proiecție a datelor (contracting projection) într-un spațiu
unidimensional sau bidimensional. Algoritmul construiește recursiv partiții ale datelor cu ajutorul
unor plane despărțitoare care traversează setul de date in zone de mică densitate. Zonele de mică
densitate, denumite văi (valleys) sunt intercalate de zone de densitate mare denumite vârfuri
(peaks).
Specificități O-Cluster [Boriana L. Milenova, Marcos M. Campos, 2001] :
- Propune utilizarea testelor statistice pentru validarea calității planelor despărțitoare;
- Operează pe un set mai mic de date, obținute ca eșantion la setul de bază. Acest lucru este
implementat cu ajutorul unui buffer a cărui dimensiune poate fi parametrizată.
Figura 1. Proiecție pe o axă fără identificare de puncte vale

Figura 2. Proiecție optimală pe o axă, cu identificare de puncte vale

Un plan despărțitor, numit și hiperplan, este un hiperplan m-1 dimensional (m este dimensiunea
 y1 

m
 
spațiului) format din toate punctele y =   care verifică ecuația hiperplanului
... wi yi =1.
 y m  i 1

Pentru identificarea celui mai bun hiperplan (identificarea valorilor wi, i = 1,m), O-Cluster
calculează histogramele pentru toate intervalele de grupare, identificând astfel ariile de joasă
densitate și cele de înaltă densitate. Punctele vale sunt încadrate de două puncte vârf. O-Cluster
încearcă să găsească o pereche de vârfuri cu o vale între ele, pentru care diferența dintre vârfuri și
vale este semnificativă statistic. Semnificația statistică este testată utilizând un test χ2, astfel:
2o  e 
2
χ=
2
 2 ;1 ,
e
unde χ valoarea calculată, o este valoarea histogramei pentru punctul vale, e este media dintre
2

punctul vale si cel mai mic dintre punctele vârf iar 2;1 este  2 critic calculat pentru un grad de
libertate și un prag de semnificație α.
Un punct vale valid este calculat pentru o anumită valoare a pragului de semnificație. De exemplu,
χ2 calculat mai mare decât 02.05;1 . O partiție este considerată activă dacă are puncte vale valide.
Numai partițiile cu puncte vale valide pot fi divizate și vor fi divizate după punctul vale cu cea mai
mare valoare χ2. Dacă o partiție nu are puncte vale active, dar are puncte vale cu χ2 calculat pentru
o valoare mai mare a pragului de semnificație (de exemplu 02.1;1 ), aceasta este considerată
"ambiguă". Punctele vale respective sunt numite puncte vale candidat. Algoritmul funcționează pe
un eșantion în conformitate cu bufferul stabilit prin parametrizare. Pentru a putea fi divizată, o
partiție ambiguă este completată cu noi instanțe din afara eșantionului. Partițiile care nu sunt nici
active nici ambigue sunt eliminate din bufferul de prelucrare.
Fluxul de prelucrare O-Cluster este următorul:

Încarcă buffer

Efectuare proiecție

Calcul histograme și determinare puncte vale

DA
Exista puncte
Divizare
vale valide?

DA
Exista puncte
vale candidat? Reîncarcă buffer

Figura 3. Fluxul de prelucrare O-Cluster

În tabelul următor sunt sintetizate diferențele și asemănările dintre cei doi algoritmi de
clusterizare implementați în Oracle Data Miner.
Caracteristici K - Means O-Cluster
Caracteristici Calculele utilizează distanțe Se identifică zone de mică
ale metodei de dintre indivizi densitate în spațiul indivizilor
grupare
Număr de Nedefinit Mai mare de 500
instanţe
Număr de Mai potrivit tabelelor cu Număr mare de atribute
atribute număr mic de atribute
Număr de Specificat de utilizator Detectat de algoritm
clustere
identificate
Algoritm Da Da
ierarhic
Atribuire Da Da
probabilistică
la clustere

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