Sublineare Algorithmen, Testing of Clustering Seminar über Algorithmen FU-Berlin, SoSe 2007 Stefan Bochow Clusteringprobleme sind im Allgemeinen NP-Vollständig für Zahlenräume der Dimension d ≥ 2 (und einem variablem k). Das Problem beim Clustering ist zu entscheiden ob eine gegebene Menge X bestehend aus n Punkten in einem z.B. d-dimensionalen Euklidischen Raum in k Teilmengen (Cluster) geteilt werden kann so das jeder Cluster maximal den Durchmesser b bzw. Radius b hat. Der Durchmesser eines Clusters ist definiert als die maximale Distanz zweier Punkte im Cluster (Bild 2) und der Radius sei der minimale Radius einer ddimensionalen Kugel die alle Punkte des Clusters einschließt (Bild 1). Existiert eine solche kfache Partition, so sagt man X ist (k,b) – clusterable in Hinblick auf den Durchmesser oder den Radius b. Im Folgenden, sollen nun ein paar Algorithmen vorgestellt werden die auf Basis eines Samples (Stichprobe) aus der Menge X von ℜd eine Aussage darüber treffen ob X (k,b) – clusterable ist oder ε − weit davon entfernt ist (k , (1 + β )b) - clusterable zu sein. ε − weit bedeutet dass wir mehr als ε ⋅ X Punkte aus X verändern müssten damit X wieder (k , (1 + β )b) clusterable wäre. Die Algorithmen zum testen der Eigenschaften arbeiten in sub-linearer Zeit in n = X oder aber unabhängig von n. Zusammengefasst: Eine Menge von Punkten X aus ℜd ist (k,b) - clusterable wenn eine Partitionierung der Punkte aus X existiert, die alle Punkte in k Cluster aufteilt so das der Durchmesser (Radius) der einzelnen Clusters maximal b wird. r x Bild 1 Bild 2 dist ( x, y ) ist die Distanz zwischen zwei Punkten x,y. Die L2 Metrik im Folgenden bezieht sich auf die Euklidische Distanz. Als Beispiel, seien x, y ∈ℜd , so das x = ( x1 ,..., xd ) und y = ( y1 ,..., yd ) , so das die Euklidische Distanz zwidef schen x und y gleich dist ( x, y ) = 2 ∑ i=1 (x i − yi ) ist. d 2 Gegeben sei die Teilmenge S ⊆ X . Dann ist d ( S ) der Durchmesser von S also der maximale Abstand zweier Punkte in S und r ( S ) ist der minimale Radius der Kugel die alle Punkte aus S einschließt. Sei P eine Partition aus X mit P = ( X 1 ,..., X k ) , so ist der Durchmesser von P definiert als D( P) = max j d ( X j ) . Der Radius von P definiert sich als R( P) = max j r ( X j ) . Für eine solche k-fache Partition P aus X gilt also: 1. Durchmesserkosten: Cost(P) = D(P). 2. Radiuskosten: Cost(P) = R(P). Daher, eine Menge X ist (k,b)-clusterable im Zusammenhang mit einer der beiden Kostenbilanzierungen wenn eine k-fache Partition P = ( X 1 ,..., X k ) von X existiert so das Cost ( P) ≤ b sind. Die Menge ist ε − weit davon entfernt (k , (1 + β )b) -clusterable für ein gegebenes 0 ≤ ε ≤ 1 und β ≥ 0 zu sein, wenn für jede Teilmenge Y ⊆ X (maximal (1 − ε ) X groß) und für jede k-fache Partition Py = (Y 1 ,..., Y k ) von Y gilt das wir Cost ( PY ) > (1 + β )b haben. Des Weiteren sagen wir ein Algorithmus ist ein Durchmesser-Clustering (Radius-Clustering) Tester wenn der als Eingabe eine Menge X ⊂ ℜd ist und die Parameter k, b, ε und β nimmt. Und der Algorithmus akzeptiert X wenn es (k,b)-clustrable ist in Bezug auf Durchmesser (Radius) und verwirft X mit einer Wahrscheinlichkeit von 2 3 wenn es ε − weit von (k , (1 + β )b) -clusterable zu sein scheint. Für alle Sample setzen wir voraus dass sie gleichmäßig und unabhängig ausgewählt wurden, also eine Gleichverteilung haben. Algorithmus 1 (für jede Metrik, Durchmesser, k ≥ 1, β = 1 ) 1. Sei rep1 ein beliebiger Punkt aus X (Repräsentant für den ersten Cluster) 2. i ← 1; find-new-rep ← TRUE 3. while i < k + 1 und find-new-rep = TRUE do (a) wähle ein Sample der Größe ln(3k ) ε (b) Wenn ein Punkt x in diesem Sample existiert dessen dist ( x, rep j ) > b für jedes j ≤ i , dann i ← i + 1 und repi = x . (c) Else (alle Punkte im Sample sind maximal b vom rep j entfernt) find-new-rep ← FALSE 4. Wenn i ≤ k so akzeptiere, ansonsten verwerfe. Also haben wir maximal k Iterationen der while – Schleife in denen der Algorithmus maximal k ⋅ ln(3k ) ε Distanzen berechnet. Daraus folgt die Laufzeit von O(k ² log k ε ) . Algorithmus 1 läst sich auch auf Radius-Clustering anwenden wenn man beachtet dass ein gewählter Punkt nur dann als neuer Repräsentant ausgewählt wird wenn er weiter als 2b von jedem anderen Repräsentanten entfernt ist. Theorem 1 Algorithmus 1 ist eine Durchmesser-Clustering Tester für β = 1 und beliebiger Metrik. Beweis: Wir halten zuerst fest das der Algorithmus erst dann verwirft wenn er k + 1 Punkte gefunden hat deren Paarweiser Abstand größer als b ist. Folglich, wenn X (k,b)-clusterable ist, so wird der Algorithmus niemals verwerfen. Also, sagen wir das von jetzt an gelte das X ε − weit davon entfernt ist (k,2b)-clusterable zu sein und wir werden zeigen das der Algorithmus mit der Wahrscheinlichkeit von 2 3 verwirft. Wir zeigen dass in diesem Fall mit einer Wahrscheinlichkeit von mindestens 2 3 in jeder Iteration ein neuer Repräsentant gefunden wird, was dann wohl in k + 1 Repräsentanten enden wird. Betrachten wir eine Iteration. Wir sagen dass der Punkt x ∈ X ein potenziell Repräsentativer in Bezug auf bisher gewählten rep1 ,..., repi , wenn sein Abstand größer ist als b zu jedem dieser Repräsentanten. Behaupten wir jetzt das so lange i ≤ k ist muss es mindestens ε n solcher potenziellen Repräsentanten geben. Gegenvermutung, es gibt maximal ε n solcher Punkte. Dann könnten wir diese Punkte aus X entfernen und für jeden anderen Punkt y ∈ X , einem Cluster j für den gilt dist ( y, rep j ) ≤ b zuweisen. Nach der Dreiecksungleichung, ist der Durchmesser eines jeden Ergebnis-Clusters maximal 2b, was unserer Annahme bezüglich X widerspricht. Wenn wir gleichverteilt ln(3k ) ε Punkte aus X wählen, dann ist die Wahrscheinlichkeit dass wir keinen potentiellen Repräsentanten erwischt haben kleiner als (1 − ε )ln(3k ) / ε < exp(−ε (ln(3k ) ε ) = 3k1 . Die Wahrscheinlichkeit das dass in allen k Iterationen passiert ist maximal 1 3 . Algorithmus 2 (Durchmesser, k=1, d ≥ 1, 0 < β ≤ 1 , L2 Metrik ) 1. Wähle m = O ( 1 ε ) ⋅ d 3 2 log(1 β ) ( β2 ) Punkte aus X. d 2. Wenn die Distanz zwischen zwei Punkten des Samples maximal b ist so akzeptiere, ansonsten verwerfe. Dieser Algorithmus kann sehr leicht in O(m²) erledigt werden. Wenn d ≤ 3 so ist auch O(m log m) möglich nach [1]. Algorithmus 2b (Verallgemeinerung von Algorithmus 2) für k ≥ 1 : 1. Wähle m = Θ ( k ² log k ε ⋅d ⋅ ( ) 2 β 2d ) Punkte aus X. 2. Wenn es eine k-fache Partition P des Sample gibt für das gilt D( P ) ≤ b so akzeptiere, ansonsten verwerfe. Einbindung von Algorithmus 2b: (Annährend gutes Clustering ) 1. Rufe Algorithmus 2b auf mit Sample m = O ( d 5 / 2 ⋅k 3 ε ⋅ ( ) 2 β d log ( )) . d ⋅k ε ⋅β 2. Sei P eine k-fache Partition von Sample die durch Algorithmus 2b gefunden wurden (wenn das der fall sein sollte). ( 3. Sehe dir die Sample an die in den letzten p (k ) = Θ k ⋅ d ⋅ ( 2 β ) d ) Phasen ausgewählt wurden, wobei U j die Einheit aller vorherigen Sample aus j Phasen ist. Uj =Θ ( ⋅ ( d ⋅ k ² ⋅ log j d ⋅k ⋅ j ⋅ p ( k ) ε ε ) ) Sei P die Begrenzung von P zu U j j . Wenn P = (U 1 ,...,U k ) dann ist Pj = (U 1 ∩ U j ,..., U k ∩ U j ) . 4. Nehme ein zusätzliche Sample der Größe Θ ( log ( p (k ) ) ε ) und zähle die schlechten Punkte in diesem zusätzlichen Sample in Hinsicht auf jede Partition Pj .(linearer Aufwand) 5. Wähle eine Begrenzung Pg das die kleinste Anzahl von schlechten Punkten in den Samples enthält und nutze diese um eine Partition von X zu erzeugen. Wenn Pg = (U 1g ,..., U gk ) ist so überprüfe dann für jedes x ∈ X ob ein Index i existiert so das x ∈ I (U gi ) und die dist ( x, y ) ≤ (1 + β )b ist für jedes y ∈ I (U gi ) , so füge x dem Cluster i hinzu. Algorithmus 3 ( L2 Metrik, Radius, k ≥ 1, d ≥ 1, β = 0 ) 1. Wähle ein Sample von m = Θ ( dε⋅k ⋅ log ( dε⋅k ) ) Punkten aus X. 2. Wenn es eine Partition P = (U 1 ,...,U k ) aus U gibt so das R( P ) ≤ b dann akzeptiere, ansonsten verwerfe. Finde k Kugeln mit dem minimalen Radius welche alle m Punkte aus dem Sample einschließen. (dieses Problem ist auch als Euklidian k-Center Problem bekannt) Dies kann in O(m kd + 2 ) erledigt werden [2]. Wenn aber d relativ klein ist, so ist es möglich eine bessere Laufzeit mit dem Algorithmus von Agrawal und Procopiuc [3] zu erreichen, mit der Laufzeit von m ( O f (d)⋅k1−1 d ) , wobei f (d ) von O(d 5/ 2 ) beschränkt wird. Quellen: [1] E.A. Ramos. Deterministic algorithms for 3-d diameter and some 2-d lower envelopes. In 16th Symp. on Computational Geometry, 2000. To appear. [2] P.K. Agrawal and M. Sharir. Algorithms for geometric optimization. ACM Computing Surveys, pages 413-458, 1998. [3] P.K. Agrawal and C.M. Procopiuc. Exact and approximation algorithms for clustering. In Proceedings of SODA, pages 658-667, 1998. [4] N. Alon., S. Dar, M. Parnas, D. Ron, Testing of Clustering. 2000.