Sunteți pe pagina 1din 18

Clasificare algoritmi

Clusterizarea - grupare naturală a obiectelor unei mulțimi după caracteristicile


acestora
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)

Implementări ODM:
• Bisecting kMeans - partiționare
• OCluster - grid
KMeans

• Execută clasificarea nesupervizată într-un număr dinainte cunoscut de grupe : k


• Clasificarea se face pe baza centrilor de grupă (în jurul acestora) printr-un
procedeu iterativ
• Funcția obiectiv urmărită la fiecare iterație este:

unde:
xi este instanța clasificată, n este numărul de instanțe, hi este grupa în care se
repartizează instanța xi, chi este centrul grupei hi, iar d2(xi, chi)este distanța dintre
centrul grupei hi şi instanța xi
• Algoritmul KMeans 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, față 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
• Distanța dintre centrii noi și centrii vechi se calculează astfel:
𝑘

𝐷= 𝑑 𝑐𝑗𝑟 , 𝑐𝑗𝑟−1
𝑗=1
unde 𝑑 𝑐𝑗𝑟 − 𝑐𝑗𝑟−1 este distanța de la centrul grupei j la pasul r și centrul aceleiași
grupe la pasul anterior, r - 1
kMeans - pseudocod
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 clusteri; 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
KMeans - Oracle
• ODM are implementată varianta Bisecting KMeans
• Input: matricea de observații, X și numărul de clusteri doriți
• Principiul de optim pentru kMeans: minimizarea distanțelor dintre instanțe și
centrii de grupă
• Bissecting kMeans constă într-o descompunere top-down a setului de date până
la obținerea numărului de clusteri dorit
• Splitarea în biecting kMeans se obține prin kMeans clasic

Demo Java
Bisecting kMeans - pseudocod
Procedure BisectingKMeans(X,k;H)
List[] H // Lista ierarhie (lista de clusteri) - lista de vectori de numere naturale
call Add(H,{1,2,...,n}) // Primul cluster adăugat listei este clusterul format din intreaga colectivitate
for i=1,k-1
call Select(X,H;h) // Selectia clusterului splitat dupa variant maxima sau suportul maxim
// Aplicare kMeans classic pentru divizare in doi clusteri
call InitCenters(X,h;cL,cR)
do
call Divide(X,h,cL,cR;hL,hR)
call Centers(X,hL,hR;gL,gR)
call Dist(gL,gR,cL,cR;d)
cL=gL; cR=gR
while d>eps
call Remove(H,h) // Eliminare cluster vechi din ierarhie
// Adaugarea clusterilor la lista
call Add(H,hL)
call Add(H,hR)
endfor
return
end
OCluster

• Algoritmul OCluster 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
• 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)
Proiecție în spațiul unidimensional:

Punct vale
• Un plan despărțitor, numit și hiperplan, este un hiperplan m-1 dimensional (m
este dimensiunea spațiului) format din toate punctele y care verifică ecuația
hiperplanului: 𝑚 𝑖=1 𝑤𝑖 𝑦𝑖 = 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 determinată utilizând un test χ2, astfel:
2
2 𝑜 − 𝑒 2
𝜒2 = ≥ 𝜒𝛼;1
𝑒
unde unde 𝜒 2 este valoarea calculată, o este valoarea histogramei pentru punctul
2
vale, e este media dintre punctul vale si cel mai mic dintre punctele vârf iar 𝜒𝛼;1
este 𝜒 2 critic calculat pentru un grad de libertate și un prag de semnificație α
• În funcție de testul statistic punctele vale sunt clasificate în puncte vale valide
(calculate pentru un prag de semnificație mai mic - 0.05) sau puncte vale
candidat (prag de semnificație mai mare - 0.1)
• Algoritmul funcționează pe un eșantion al datelor în conformitate cu un buffer
stabilit prin parametrizare
Schema de prelucrare OCluster
Parametrizări Oracle Data Miner pentru clusterizare
kMeans
• Number of Clusters - Numărul de clusteri identificați
• Growth Factor - Factorul de creștere a memoriei alocate datelor. Variază de la 1 la 5. Implicit:2
• Convergence Tolerance - Gradul de convergență, cuprins între 0.001 (precizie mare, execuție
lentă) și 0.1 (precizie mică, execuție rapidă) reglează precizia calculului alături de parametrul
Number of Iterations. Implicit 0.01
• Distance Function - Distanta utilizată. Implicit Euclidiană
• Split Criterion - Criteriul de splitare. Poate fi: varianța clusterului sau numărul de instanțe din
cluster
• Min Percent Attribute Support - Suportul minim. Este un prag utilizat in includerea variabilelor in
regulile de descriere a clusterelor. Această valoare reglează numărul de predicate în baza cărora
vor fi construite regulile asociate clusterilor. Variază de la 0 la 1. Valoarea implicită 0.1, produce
reguli pe baza atributelor considerate importante în definirea clusterului
• Number of Histogram Bins - Număr de histograme utilizat în descrierea clusterilor
OCluster
• Numărul maxim de clusteri produși
• Dimensiunea maximă a buferului de lucru în număr de instanțe (implicit 50000)
• Sensitivity - valoarea care stabilește pragul de semnificație în validarea punctelor vale la
identificarea hiperplanelor despărțitoare. Valori de la 0 (puncte vale semnificative) la 1 (puncte
vale slabe)
Extragerea caracteristicilor esențiale

• Extragerea caracteristicilor esențiale (Feature Extraction - FE) face parte din


categoria metodelor de analiză a datelor care descriu o colectivitate printr-un set
nou de variabile, obținute printr-o combinație liniară a variabilelor inițiale
(variabilele observate)
• În Oracle Data Mining este implementat algoritmul Non-negative Matrix
Factorization (NMF) pentru a determina caracteristicile esențiale
Non-negative Matrix Factorization
Descrierea modelului
• Datele analizate sunt furnizate sub forma unui tabel de observații cu n linii şi m coloane:
𝑥11 ⋯ 𝑥1𝑚
𝑋= ⋮ ⋱ ⋮ = 𝑋1 … 𝑋𝑗 … 𝑋𝑚
𝑥𝑛1 ⋯ 𝑥𝑛𝑚
• Fiecare variabilă observată poate fi scrisă ca o combinație liniară de caracteristici noi,
astfel:
𝑋1 = ℎ11 𝑊1 + ℎ21 𝑊2 + ⋯ + ℎ𝑘1 𝑊𝑘
𝑋2 = ℎ12 𝑊1 + ℎ22 𝑊2 + ⋯ + ℎ𝑘2 𝑊𝑘

𝑋𝑚 = ℎ1𝑚 𝑊1 + ℎ2𝑚 𝑊2 + ⋯ + ℎ𝑘𝑚 𝑊𝑘
unde k este numărul caracteristicilor esențiale, Wi, i =1, k, sunt caracteristicile esențiale, iar
hji, j =1,m, i = 1,k sunt coeficienții pozitivi ai legăturii dintre variabilele observate și
caracteristicile esențiale
• Matricea W este definită astfel:
𝑤11 ⋯ 𝑤1𝑘
𝑊= ⋮ ⋱ ⋮ = 𝑊1 … 𝑊𝑘
𝑤𝑛1 ⋯ 𝑤𝑛𝑘
• Legătura dintre variabilele observate și caracteristici se poate scrie astfel: X =
W‧H
Formularea problemei
• Fiind dată o matrice 𝑋 ∈ 𝑅𝑛×𝑚 , să se găsească matricele 𝑊 ∈ 𝑅𝑛×𝑘 și 𝐻 ∈
𝑅𝑘×𝑚 (pozitiv definită), astfel încât să fie minimizată funcția:
1
𝑓 𝑊, 𝐻 = 𝑋−𝑊⋅𝐻 2
2
Rezolvarea modelului. Algoritmul Lee-Seung
• Pornind de la relația X = W‧H prin înmulțire la stânga cu (WTW)-1WT se obține:
𝑊𝑇𝑋 𝑊𝑇𝑋
𝐻= 𝑇 =𝐻⋅ 𝑇
𝑊 𝑊 𝑊 𝑊⋅𝐻
𝑇
iar prin înmulțire la dreapta cu 𝐻 𝐻 ⋅ 𝐻 𝑇 −1 se obține:
𝑋 ⋅ 𝐻𝑇 𝑋 ⋅ 𝐻𝑇
𝑊= 𝑇
=𝑊⋅
𝐻⋅𝐻 𝑊 ⋅ 𝐻 ⋅ 𝐻𝑇
Algoritmul See-Seung

Procedure NMF_Lee-Seung(X,W,H,m,n,k,maxIter)
W = random(m,k)
H = random(k,n)
for r=1,maxIter
𝑊𝑇𝑋
ℎ𝑖𝑗 = ℎ𝑖𝑗 ⋅ , 𝑖 = 1, 𝑘, 𝑗 = 1, 𝑚
𝑊 𝑇 𝑊⋅𝐻 𝑖𝑗
𝑋⋅𝐻 𝑇
𝑤𝑙𝑖 = 𝑤𝑙𝑖 ⋅ , 𝑙 = 1, 𝑛, 𝑖 = 1, 𝑘
𝑊𝐻𝐻 𝑇 𝑙𝑖
endfor
end

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