Documente Academic
Documente Profesional
Documente Cultură
Implementări ODM:
• Bisecting kMeans - partiționare
• OCluster - grid
KMeans
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
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
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