Zum Inhalt springen
coden

Fuzzy-Clustering: der Algorithmus fuzzy c-means und Punkte zwischen den Clustern

K-means und seine scharfe Zuordnung, fuzzy c-means mit Zugehörigkeiten zu allen Clustern, der Fuzzifizierer m, Partitionskoeffizient und Xie-Beni-Index für die Wahl der Clusteranzahl — und warum Ausreißer hohe Zugehörigkeiten bekommen.

13 Minuten Matěj Žalmánek 2026-10-15

Serie KI-Grundlagen Teil 36 von 52
  1. Landkarte der künstlichen Intelligenz: was was ist und wie alles zusammenpasst
  2. Eine kurze Geschichte der künstlichen Intelligenz: von Turing bis zu Sprachmodellen
  3. Daten, Modell, Training, Inferenz: die Grundbegriffe an einem einzigen Beispiel
  4. Mathematische Notation lesen: Symbole, Indizes, Summen und Quantoren
  5. Mengen und Relationen: der Baukasten, aus dem Definitionen in der KI bestehen
  6. Funktionen und Abbildungen: warum jedes KI-Modell eine Funktion ist
  7. Logik und Beweise: die Regeln, nach denen KI schließt
  8. Graphen und Bäume: die Struktur, auf der Suche und neuronale Netze stehen
  9. Lineare Algebra für maschinelles Lernen: Vektoren, Matrizen und warum KI vor allem multipliziert
  10. Ableitungen, Gradient und Kettenregel: wie ein Modell herausfindet, in welche Richtung es lernen soll
  11. Gradientenabstieg: wie ein Modell lernt
  12. Was ist Wahrscheinlichkeit: vom Würfelwurf zu den Kolmogorow-Axiomen
  13. Bedingte Wahrscheinlichkeit und der Satz von Bayes: wie du deine Einschätzung änderst, wenn du etwas Neues erfährst
  14. Zufallsvariable und Verteilungsfunktion: eine Funktion, die alles über eine Verteilung verrät
  15. Dichtefunktion und Wahrscheinlichkeitsfunktion: warum eine stetige Zufallsvariable in einem Punkt die Wahrscheinlichkeit null hat
  16. Erwartungswert, Varianz und Kovarianz: wo eine Verteilung liegt, wie breit sie ist und was womit zusammenhängt
  17. Überblick über Wahrscheinlichkeitsverteilungen: Bernoulli-, Binomial-, Poisson-, Gleich-, Normal- und Exponentialverteilung
  18. Gesetz der großen Zahlen und zentraler Grenzwertsatz: Warum sich Durchschnitte so vorhersagbar verhalten
  19. Statistik und Parameterschätzung: Maximum Likelihood, MAP und Konfidenzintervalle
  20. Informationstheorie: Entropie, Kreuzentropie und KL-Divergenz — woher Verlustfunktionen kommen
  21. Zustandsraumsuche: BFS, DFS, UCS und A* mit Animationen
  22. Spiele und Gegner: Minimax, Alpha-Beta-Suche und Monte Carlo Tree Search
  23. Constraint Satisfaction: Backtracking, Constraint-Propagierung und AC-3 an Sudoku und einer Karte tschechischer Regionen
  24. Logik und wissensbasierte Systeme: Vorwärts- und Rückwärtsverkettung, Resolution und Expertensysteme
  25. Planung: STRIPS, die Blockwelt, Heuristiken aus Relaxierung und Planung in KI-Agenten
  26. Lokale Suche und simulierte Abkühlung: ein Handlungsreisender durch die tschechischen Regionalhauptstädte
  27. Genetische Algorithmen: Population, Kreuzung, Mutation und Selektion am Rucksack für die Wanderung
  28. Evolutionsstrategien und genetische Programmierung: von der 1/5-Erfolgsregel zum Keplerschen Gesetz
  29. Ameisenkolonieoptimierung: wie eine Pheromonspur einen kurzen Weg findet
  30. Partikelschwarmoptimierung: Trägheit, eigene Erfahrung und die Erfahrung des Schwarms
  31. Neuroevolution: Evolution der Gewichte und der Gestalt neuronaler Netze und der Algorithmus NEAT
  32. Fuzzy-Mengen und Zugehörigkeitsfunktionen: wie man „etwas warm“ aufschreibt
  33. Fuzzy-Logik und Wahrscheinlichkeit: warum „etwas warm“ nicht „wahrscheinlich warm“ bedeutet
  34. Fuzzy-Logik: t-Normen, Implikationen und WENN–DANN-Regeln
  35. Fuzzy-Regelung: Mamdani und Sugeno vom Ventilator bis zum Pendel auf dem Wagen
  36. Fuzzy-Clustering: der Algorithmus fuzzy c-means und Punkte zwischen den Clustern
  37. Neuro-Fuzzy-Systeme (ANFIS): Fuzzy-Regeln, die aus Daten lernen
  38. Markow-Ketten: Übergangsmatrix, stationäre Verteilung und PageRank
  39. Hidden-Markov-Modelle: der Viterbi-Algorithmus und das unehrliche Kasino
  40. Bayessche Netze: warum das Gras nass ist und was das für den Rasensprenger bedeutet
  41. Der Kalman-Filter: wie man aus ungenauen Messungen schätzt, wo ein Auto ist und wie schnell es fährt
  42. Arten des maschinellen Lernens: überwacht, unüberwacht, halbüberwacht und mehr
  43. Prompts, Kontext und RAG: wie man einem Modell die richtigen Informationen gibt
  44. Variational Autoencoder (VAE): neue Bilder aus einem stetigen latenten Raum
  45. Generative Adversarial Networks (GAN): der Fälscher gegen den Detektiv
  46. Diffusionsmodelle: wie aus reinem Rauschen ein Bild wird
  47. Markow-Entscheidungsprozesse: Zustände, Aktionen, Belohnungen und Bellman-Gleichungen
  48. Q-Learning und DQN: den Wert von Aktionen lernen, von der Tabelle bis zum neuronalen Netz
  49. Policy Gradient und PPO: die Strategie direkt lernen
  50. Wie ein KI-Agent funktioniert: ein Sprachmodell in einer Schleife mit Werkzeugen
  51. Programmieren mit KI-Agenten: Auftrag, Tests und Kontrolle
  52. Bewertung und Sicherheit von KI-Systemen: wie man misst und wie man überwacht

Der ganze Lehrplan der Serie 52 von 83 Themen fertig

Was du mitnimmst
  • Wie k-means funktioniert und was er über Punkte an der Grenze zwischen Clustern verschweigt.
  • Wie fuzzy c-means Zugehörigkeiten und Zentren berechnet und was der Fuzzifizierer m bewirkt.
  • Wie man die Anzahl der Cluster wählt und wo fuzzy c-means versagt.

Vorher gut zu wissen: Fuzzy-Mengen und Zugehörigkeitsfunktionen: wie man „etwas warm“ aufschreibt, Arten des maschinellen Lernens: überwacht, unüberwacht, halbüberwacht und mehr

Clustering sucht in Daten nach Gruppen, über die wir vorher nichts wissen: Kunden mit ähnlichem Kaufverhalten, Bereiche gleichen Gewebes in einer Magnetresonanzaufnahme, Dokumente zu einem ähnlichen Thema. Der klassische Algorithmus k-means ordnet jeden Punkt genau einer Gruppe zu. Echte Daten haben aber oft Punkte an der Grenze — einen Kunden, der ein bisschen wie ein Student und ein bisschen wie ein Elternteil einkauft, ein Pixel, in dem graue und weiße Hirnsubstanz aufeinandertreffen. Fuzzy-Clustering erlaubt einem Punkt, zu mehreren Gruppen gleichzeitig zu gehören, zu jeder ein wenig.

Es knüpft an die Teile Fuzzy-Mengen und Zugehörigkeitsfunktionen und Arten des maschinellen Lernens an, wo Clustering als typische Aufgabe des unüberwachten Lernens auftauchte.

1. Scharfes Clustering: k-means

Definition — die k-means-Aufgabe

Seien d ≥ 1 und n ≥ 1 natürliche Zahlen, x1, …, xn ∈ ℝd Punkte und c ∈ ℕ, 1 ≤ c ≤ n, die Clusteranzahl. Eine Zuordnung ist eine Abbildung shluk : {1, …, n} → {1, …, c}, die dem Punkt xi die Nummer seines Clusters zuordnet. Für Zentren v1, …, vc ∈ ℝd und eine Zuordnung shluk sind die Kosten

J(v1, …, vc, shluk) = ∑i=1n ‖xi − vshluk(i)‖2,

wobei ‖·‖ der euklidische Abstand ist (nächste Definition). Die k-means-Aufgabe besteht darin, Zentren und eine Zuordnung zu finden, für die J so klein wie möglich ist.

Lloyd-Algorithmus (Näherungslösung der k-means-Aufgabe). Eingabe: Punkte x1, …, xn ∈ ℝd und die Clusteranzahl c. Ausgabe: Zentren v1, …, vc und eine Zuordnung shluk. Schritte:

  1. Wähle als Anfangszentren c paarweise verschiedene Punkte aus x1, …, xn (zufällig).
  2. Zuordnung: Wähle für jedes i = 1, …, n shluk(i) ∈ argminj ∈ {1, …, c} ‖xi − vj‖2; gibt es mehrere nächste Zentren und ist das bisherige Zentrum des Punktes darunter, lass den Punkt in seinem Cluster.
  3. Abbruch: Hat sich die Zuordnung gegenüber dem vorigen Durchlauf nicht geändert, beende und gib die Zentren und die Zuordnung zurück.
  4. Zentren: Bezeichne für jedes j = 1, …, c Sj = {i : shluk(i) = j}, und ist Sj ≠ ∅, setze vj = 1/|Sj| ∑i ∈ Sj xi (Mittelwert der Punkte des Clusters; ein leerer Cluster ändert sein Zentrum nicht).
  5. Fahre mit Schritt 2 fort.
Einfach gesagt

Du steckst ein paar „Fahnen“ in die Daten. Jeder Punkt schließt sich der nächsten an. Dann zieht jede Fahne in die Mitte ihrer Punkte um. Die Punkte schließen sich wieder der nächsten Fahne an — und so weiter, bis sich nichts mehr ändert. Jeder Schritt verkleinert J, also endet der Algorithmus sicher, wenn auch nicht unbedingt in der bestmöglichen Aufteilung.

Definition — euklidischer Abstand

Seien d ≥ 1 und x = (x1, …, xd), v = (v1, …, vd) ∈ ℝd. Der euklidische Abstand der Punkte x und v ist die nichtnegative Zahl

‖x − v‖ = √∑r=1d (xr − vr)2.

In der Ebene (d = 2) ist das die gewöhnliche Länge einer Strecke, etwa vom Punkt M1 = (4,5; 2,5) zum Zentrum des Clusters A (1,73; 2,31), wie es fuzzy c-means weiter unten findet: √2,772 + 0,192 ≈ 2,78. Clustering arbeitet mit dem Quadrat ‖·‖2 — die Wurzel entfällt, und entfernte Punkte werden stärker bestraft.

def kmeans(X, c):
    V = c zufällig gewählte Punkte aus X          # Anfangszentren
    while True:
        shluk = [argmin_j ‖x − V[j]‖² for x in X]  # Zuordnungsschritt
        if shluk unverändert: return V, shluk
        for j in range(c):                         # Zentrenschritt
            V[j] = Mittelwert der Punkte x mit shluk(x) = j
Satz — der Lloyd-Algorithmus terminiert

Seien x1, …, xn ∈ ℝd, 1 ≤ c ≤ n, und der Lloyd-Algorithmus laufe nach der Definition oben (einschließlich der Regel, dass ein Punkt bei gleichem Abstand in seinem Cluster bleibt). Dann gilt:

  1. kein Zuordnungsschritt und kein Zentrenschritt vergrößert den Wert J;
  2. der Algorithmus endet nach endlich vielen Durchläufen.

Beweis: Zuordnung: Jeder Summand ‖xi − vshluk(i)‖2 wird durch den kleinsten aller ‖xi − vj‖2 ersetzt, wird also nicht größer. Zentren: Für eine nichtleere Indexmenge S eines Clusters mit dem Mittelwert x̄ = 1/|S| ∑i∈S xi und ein beliebiges v ∈ ℝd gilt die Zerlegung

∑i∈S ‖xi − v‖2 = ∑i∈S ‖xi − x̄‖2 + |S| · ‖x̄ − v‖2

(der gemischte Term 2 ∑ (xi − x̄) · (x̄ − v) ist null, weil ∑ (xi − x̄) = 0). Die Summe ist also für v = x̄ am kleinsten. Es gibt nur endlich viele Aufteilungen von n Punkten in c Cluster, und J sinkt bei jeder Änderung der Zuordnung echt (bei gleichem Abstand lassen wir den Punkt in seinem Cluster), sodass sich keine Aufteilung wiederholt. ∎

Der Satz sagt nichts darüber, ob die gefundene Aufteilung die mit dem kleinsten J ist — nur dass der Algorithmus nicht in eine Schleife gerät.

Unsere Daten: drei Gruppen zu je 40 Punkten — A links unten, B rechts und C oben —, vier Punkte an der Grenze (M1–M4) und zwei Ausreißer weit weg von allem (O1, O2). K-means hat sich nach vier Iterationen stabilisiert:

00551010 Merkmal x₁ (ohne Einheit) Merkmal x₂ (ohne Einheit) M1 M2 M3 M4 O1 O2
k-means: Jeder Punkt gehört genau einem Cluster

Die Cluster hat er gut gefunden, aber die Punkte an der Grenze musste er entscheiden: M1, M3 und M4 kamen zu B, M2 zu A. Dabei liegt M3 fast genau zwischen B und C — k-means sagt darüber nichts. Und beide Ausreißer landeten im Cluster C, als gehörten sie genauso dazu wie sein Kern.

2. Fuzzy c-means

Definition — fuzzy c-means (Dunn 1973, Bezdek 1981)

Seien x1, …, xn ∈ ℝd Punkte, c ∈ ℕ, 2 ≤ c < n, die Clusteranzahl und m ∈ ℝ, m > 1, der Fuzzifizierer. Eine Zugehörigkeitsmatrix ist eine Matrix U = (uij) vom Typ n × c (i = 1, …, n nummeriert die Punkte, j = 1, …, c die Cluster), die erfüllt:

  1. uij ∈ [0, 1] für alle i, j;
  2. ∑j=1c uij = 1 für jedes i — jeder Punkt verteilt die Gesamtzugehörigkeit 1 auf die Cluster;
  3. 0 < ∑i=1n uij < n für jedes j — kein Cluster ist leer, und keiner verschluckt alle Punkte vollständig.

Für eine Zugehörigkeitsmatrix U und Zentren V = (v1, …, vc) ∈ (ℝd)c sind die Kosten

Jm(U, V) = ∑i=1n ∑j=1c uijm ‖xi − vj‖2.

Fuzzy c-means ist die Aufgabe, U und V mit den kleinsten Kosten Jm zu finden, und der folgende Algorithmus zu ihrer Näherungslösung. Eingabe: Punkte, c, m, Genauigkeit ε > 0 und die maximale Anzahl der Iterationen. Ausgabe: U und V. Schritte:

  1. Wähle Anfangszentren v1, …, vc (z. B. c verschiedene zufällige Punkte).
  2. Zugehörigkeiten: Berechne für alle i, j dij = ‖xi − vj‖ (wir setzen dij > 0 voraus) und uij = 1/∑k=1c (dij/dik)2/(m−1).
  3. Abbruch: Hat sich seit dem vorigen Durchlauf kein uij um ε oder mehr geändert oder ist die Anzahl der Iterationen erschöpft, beende (nach dem ersten Durchlauf wird nicht beendet) und gib U und V zurück.
  4. Zentren: Setze für jedes j = 1, …, c vj = ∑i=1n uijm xi/∑i=1n uijm und fahre mit Schritt 2 fort.

Beide Rechenschritte folgen aus den Optimalitätsbedingungen (Satz unten): Jeder minimiert Jm bei fester zweiter Variablengruppe.

Einfach gesagt

Jeder Punkt verteilt seine Eins auf alle Cluster — mehr an den, dem er näher ist. Das Zentrum eines Clusters ist der gewichtete Mittelwert aller Punkte: Punkte, die stark zum Cluster gehören, ziehen es mehr, Punkte aus anderen Clustern nur ganz wenig. Die Formel für die Zugehörigkeit vergleicht Abstände: Ist ein Punkt einem Zentrum doppelt so nah wie dem anderen, bekommt er (bei m = 2) eine viermal größere Zugehörigkeit.

Jm = ∑i=1n ∑j=1c uijm ‖xi − vj‖2,    ∑j uij = 1

Jm
die gesamten „Kosten“ der Aufteilung — der Algorithmus minimiert sie; sie sind klein, wenn die Punkte vor allem zu nahe gelegenen Zentren gehören
∑i ∑j
jeder Punkt wird zu jedem Cluster gerechnet — anders als bei k-means, wo nur ein Cluster pro Punkt zählte
uij
Zugehörigkeit des Punktes i zum Cluster j — das Gewicht, mit dem der Abstand in die Kosten eingeht
m
Fuzzifizierer — ohne Potenz (m = 1) lohnte es sich, die ganze Eins dem nächsten Zentrum zu geben, und heraus käme wieder k-means; mit m > 1 lohnt sich das Teilen: Ein Punkt gleich weit von zwei Zentren zahlt bei m = 2 und hälftiger Aufteilung nur (½2 + ½2) · d2 = ½d2 statt d2
‖xi − vj‖2
quadrierter Abstand — was es kostet, den Punkt „bei“ diesem Zentrum zu haben; ein entferntes Zentrum wird teuer
∑j uij = 1
Nebenbedingung — ohne sie wäre das Minimum trivial: alle uij = 0 und Kosten null

uij = 1/∑k=1c ( dij/dik )2/(m−1)

uij
neue Zugehörigkeit des Punktes i zum Cluster j bei festen Zentren
dij/dik
Abstandsverhältnis — wie viel weiter das Zentrum j entfernt ist als das Zentrum k; das Verhältnis (nicht die Differenz) macht das Ergebnis unabhängig vom Maßstab der Daten
Exponent 2/m − 1
wie scharf das Verhältnis entscheidet — für m = 2 ist es 2, ein doppelt so nahes Zentrum bekommt also viermal so viel; für m → 1 wächst der Exponent über alle Grenzen, und alles bekommt das nächste Zentrum
∑k
Vergleich mit allen Zentren einschließlich j selbst (der Summand k = j ist 1) — dadurch summieren sich die Zugehörigkeiten eines Punktes genau zu 1
Für m = 2 vereinfacht sich die Formel zu uij = 1/dij2/∑k 1/dik2: Die Zugehörigkeit ist proportional zum Kehrwert des quadrierten Abstands.
Satz — woher die beiden Schritte kommen

Seien x1, …, xn ∈ ℝd, c und m > 1 wie in der Definition von fuzzy c-means. Dann gilt:

  1. Für feste Zentren v1, …, vc, für die alle Abstände dij = ‖xi − vj‖ positiv sind, nimmt Jm auf der Menge der Matrizen mit uij ≥ 0 und ∑j uij = 1 sein Minimum genau für uij = 1/∑k=1c (dij/dik)2/(m−1) an.
  2. Für eine feste Matrix U, in der ∑i uijm > 0 für jedes j gilt, nimmt Jm sein Minimum über v1, …, vc ∈ ℝd genau für vj = ∑i uijm xi/∑i uijm an.

Beweis. Zugehörigkeiten bei festen Zentren. Jm ist eine Summe über die Punkte, und die Bedingungen betreffen jeweils eine Zeile von U; es genügt also, für einen Punkt i ∑j uijm dij2 unter der Nebenbedingung ∑j uij = 1 zu minimieren. Die Lagrange-Funktion ist L = ∑j uijm dij2 − λ (∑j uij − 1). Aus ∂L/∂uij = m uijm−1 dij2 − λ = 0 folgt uij = (λ/m)1/(m−1) · dij−2/(m−1). Setzt man das in die Summenbedingung ein, kürzt sich die Unbekannte λ heraus, und es bleibt

uij = dij−2/(m−1)/∑k dik−2/(m−1) = 1/∑k (dij/dik)2/(m−1).

Heraus kommen positive Zahlen, die Bedingung uij ≥ 0 muss also nicht eigens überwacht werden. Die Funktion u ↦ um d2 ist für m > 1 und d > 0 auf [0, 1] streng konvex, dieser einzige stationäre Punkt ist also das Minimum. (Liegt ein Punkt genau im Zentrum, dij = 0, bekommt er zu diesem Cluster die Zugehörigkeit 1; unsere Implementierung löst das so, dass der Abstand nie unter 10−12 fällt.)

Zentren bei festen Zugehörigkeiten. Jm ist in vj eine konvexe quadratische Funktion (streng konvex, weil ∑i uijm > 0), und ∂Jm/∂vj = −2 ∑i uijm (xi − vj) = 0 ergibt vj = ∑i uijm xi/∑i uijm. ∎

Jeder Schritt minimiert also Jm bei fester zweiter Variablengruppe und kann es nicht vergrößern — dasselbe Argument wie bei k-means. Bezdek u. a. (1987, eine Korrektur von Bezdeks ursprünglichem Satz aus dem Jahr 1980) zeigten, dass die Folge Häufungspunkte in stationären Punkten von Jm hat (nicht unbedingt im globalen Minimum).

import numpy as np

def fcm(X, c, m=2.0, iteraci=100, eps=1e-5):
    U = np.random.dirichlet(np.ones(c), size=len(X))        # zufällige Zugehörigkeiten, Zeile = 1
    for _ in range(iteraci):
        W = U ** m
        V = (W.T @ X) / W.sum(axis=0)[:, None]             # Zentren als gewichtete Mittelwerte
        D = np.linalg.norm(X[:, None, :] - V[None, :, :], axis=2) + 1e-12
        nove = 1 / ((D[:, :, None] / D[:, None, :]) ** (2 / (m - 1))).sum(axis=2)
        if np.abs(nove - U).max() < eps:
            return V, nove
        U = nove
    return V, U

3. Fuzzy c-means auf unseren Daten

Die Farbe eines Punktes ist jetzt eine Mischung der Clusterfarben gemäß den Zugehörigkeiten: Ein rein grüner Punkt gehört nur zu A, ein Punkt „zwischen“ Grün und Orange liegt teils in A und teils in B. Die gepunkteten Linien zeigen, wie die Zentren gewandert sind — der Algorithmus hat sich nach neun Iterationen stabilisiert:

00551010 Merkmal x₁ (ohne Einheit) Merkmal x₂ (ohne Einheit) M1 M2 M3 M4 O1 O2
Fuzzy c-means (m = 2): Die Farbe ist eine Mischung nach den Zugehörigkeiten
Punktk-meansABC
M1 (4,5; 2,5)B0,410,450,15
M2 (3,3; 4,5)A0,430,180,38
M3 (5,8; 5)B0,120,440,45
M4 (4,6; 4)B0,280,400,32

Jetzt sieht man, was k-means verschwiegen hat. M1 liegt fast genau zur Hälfte zwischen A und B; M3 gehört eigentlich um ein Haar mehr zu C als zu B, obwohl k-means ihn B zugeordnet hat; und M4 in der Mitte des Dreiecks gehört ein wenig zu allen dreien. Punkte in den Clusterkernen haben zu ihrem Cluster eine Zugehörigkeit nahe eins. Die Zentren kamen praktisch genauso heraus wie bei k-means — fuzzy c-means ändert nicht, wo die Cluster liegen, sondern liefert die Information, wie sicher welcher Punkt zu ihnen gehört.

Beispiel — Zugehörigkeiten des Punktes M1 = (4,5; 2,5)

Zentren nach neun Iterationen: A ≈ (1,73; 2,31), B ≈ (7,12; 2,87), C ≈ (4,51; 7,11). Für m = 2 genügen die Kehrwerte der quadrierten Abstände (Farben nach der vereinfachten Formel für m = 2 in der Bildunterschrift oben):

Clusterd21/d2u = 1/d2/0,3190
A2,772 + 0,192 ≈ 7,720,12960,41
B2,622 + 0,372 ≈ 7,030,14230,45
C0,012 + 4,612 ≈ 21,250,04710,15
Summe0,31901,00

M1 ist von den Zentren A und B fast gleich weit entfernt (7,72 gegenüber 7,03) und teilt sich deshalb fast hälftig zwischen ihnen auf; C ist dreimal so weit weg (im Quadrat) und bekommt nur den Rest.

4. Der Fuzzifizierer m

Definition — Partitionskoeffizient

Seien n ≥ 1, c ≥ 2 und U = (uij) eine Matrix vom Typ n × c mit uij ∈ [0, 1] und ∑j=1c uij = 1 für jedes i (eine Zugehörigkeitsmatrix). Der Partitionskoeffizient (partition coefficient) ist die Zahl

PC(U) = 1/n ∑i=1n ∑j=1c uij2.

Stets gilt 1/c ≤ PC(U) ≤ 1, wobei

  1. PC(U) = 1 genau dann, wenn die Aufteilung scharf ist: In jeder Zeile ist ein uij = 1 und die übrigen 0;
  2. PC(U) = 1/c genau dann, wenn uij = 1/c für alle i, j — jeder Punkt gehört zu allen Clustern gleich stark.

(Für jede Zeile ist ∑j uij2 ≤ ∑j uij = 1 mit Gleichheit nur für die Werte 0 und 1, und nach der Cauchy-Schwarz-Ungleichung ist ∑j uij2 ≥ 1/c (∑j uij)2 = 1/c mit Gleichheit nur für gleiche Werte.)

Einfach gesagt

Eine Zahl, die sagt, wie „scharf“ die Aufteilung ist. Bei drei Clustern liegt sie zwischen 1/3 (alles ist verschwommen) und 1 (jeder Punkt hat ein klares Zuhause).

PC = 1/n ∑i ∑j uij2

PC
Schärfe der gesamten Aufteilung, eine Zahl aus [1/c; 1]
1/n ∑i
Mittelwert über die Punkte — damit sich Datensätze unterschiedlicher Größe vergleichen lassen
∑j uij2
Schärfe eines einzelnen Punktes — das Quadrat „belohnt“ eine konzentrierte Zugehörigkeit: (1, 0, 0) ergibt 1, (⅓, ⅓, ⅓) nur ⅓; bei fester Summe 1 ist die Quadratsumme am kleinsten, wenn alle Anteile gleich sind
Der Punkt M1 mit den Zugehörigkeiten (0,41; 0,45; 0,15) trägt 0,412 + 0,452 + 0,152 ≈ 0,39 bei; Punkte aus den Clusterkernen fast 1 — der Mittelwert über alle 126 Punkte ist 0,84.
00551010 Merkmal x₁ (ohne Einheit) Merkmal x₂ (ohne Einheit) m = 1,2 m = 2 m = 5 M1 M2 M3 M4 O1 O2
Fuzzy c-means für m = 1,2; 2 und 5

Für m nahe 1 nähert sich fuzzy c-means an k-means an: Der Partitionskoeffizient ist 0,98, und der Punkt M4 gehört zu 0,79 zu B. Für m = 2 ist der Koeffizient 0,84 und für m = 5 nur 0,42 — die Farben verschwimmen, und selbst ein Punkt aus dem Kern des Clusters A hat zu A nur die Zugehörigkeit 0,45. Für m → ∞ gingen alle Zugehörigkeiten gegen 1/3. Am häufigsten verwendet man m = 2: weich genug, damit die Punkte an der Grenze sichtbar werden, und scharf genug, damit die Cluster deutlich bleiben.

Beispiel — ein Punkt, der einem von zwei Zentren doppelt so nah ist

Ein Punkt hat zum Zentrum 1 den Abstand 1 und zum Zentrum 2 den Abstand 2. In der Formel für die Zugehörigkeit ist der Summand k = 1 gleich 1, und der Summand k = 2 hat das Verhältnis 1/2, also ist u1 = 1/1 + (1/2)2/(m−1) (Farben nach der Formel für uij oben):

  • m = 1,2: Exponent 10, u1 = 1/1 + 1/1 024 ≈ 0,999 — praktisch eine scharfe Zuordnung,
  • m = 2: Exponent 2, u1 = 1/1 + 1/4 = 0,8,
  • m = 5: Exponent 0,5, u1 = 1/1 + 0,707 ≈ 0,586,
  • m → ∞: Exponent → 0, (1/2)0 = 1 und u1 → 1/2.

Allgemein: Für m → 1+ geht der Exponent 2/m − 1 gegen unendlich, Verhältnisse dij/dik < 1 gehen gegen null und solche > 1 gegen unendlich, sodass das nächste Zentrum 1 bekommt und die übrigen 0 (k-means). Für m → ∞ geht der Exponent gegen null, alle c Summanden gehen gegen 1, und uij → 1/c.

5. Wie viele Cluster?

Die Anzahl der Cluster müssen wir dem Algorithmus vorgeben. Wenn wir sie nicht kennen, lassen wir ihn für verschiedene c laufen und vergleichen die Güte der Aufteilungen. Dafür eignen sich der Partitionskoeffizient und der Xie-Beni-Index.

Definition — Xie-Beni-Index

Seien x1, …, xn ∈ ℝd, c ≥ 2, m > 1, U = (uij) eine Zugehörigkeitsmatrix vom Typ n × c und v1, …, vc ∈ ℝd paarweise verschiedene Zentren (typischerweise das Ergebnis von fuzzy c-means). Der Xie-Beni-Index ist die Zahl

XB(U, V) = ∑i=1n ∑j=1c uijm ‖xi − vj‖2/n · minj ≠ k ‖vj − vk‖2.

Der Nenner ist positiv, weil die Zentren verschieden sind. Xie und Beni (1991) führten den Index mit dem Exponenten 2 ein (also für m = 2); mit allgemeinem m wird er üblicherweise in derselben Form verwendet. Beim Vergleich von Aufteilungen ist die mit dem kleineren XB besser.

Einfach gesagt

Der Zähler misst, wie eng die Punkte bei ihren Zentren liegen; der Nenner, wie weit die zwei nächstgelegenen Zentren voneinander entfernt sind. Eine gute Aufteilung hat kompakte Cluster, die weit auseinanderliegen.

XB = ∑i ∑j uijm ‖xi − vj‖2/n · minj ≠ k ‖vj − vk‖2

XB
Verhältnis der Streuung innerhalb der Cluster zum Abstand zwischen ihnen — kleiner ist besser
∑ ∑ uijm ‖xi − vj‖2
Kompaktheit — genau der Wert Jm, den der Algorithmus minimiert hat
n
Anzahl der Punkte — macht aus dem Zähler einen Mittelwert pro Punkt, damit der Index nicht mit der Datenmenge wächst
minj ≠ k ‖vj − vk‖2
Trennung — entscheidend ist das nächstgelegene Zentrenpaar; Jm allein sinkt mit zunehmender Clusterzahl nur, und dieser Term bestraft eine Aufteilung, die einen echten Cluster in zwei nahe beieinanderliegende spaltet
Beispiel — Xie-Beni-Index für c = 3

Nach dem Ende des Algorithmus ist J2 ≈ 166,73. Quadrierte Abstände der Zentren: A–B ≈ 29,4, A–C ≈ 30,8, B–C ≈ 24,79 (am nächsten liegen B und C). Für n = 126 Punkte (Farben nach der Formel oben):

XB = 166,73/126 · 24,79 = 166,73/3 124 ≈ 0,053.

Clusteranzahl c23456
Partitionskoeffizient (größer ist besser)0,7450,8410,7480,6610,609
Xie-Beni-Index (kleiner ist besser)0,2280,0530,2980,6820,529

Beide Kennzahlen einigen sich auf die drei Cluster, die wir in die Daten gelegt haben. Bei echten Daten ist eine solche Übereinstimmung nicht selbstverständlich, und die Kennzahlen sind eher ein Wegweiser als ein Urteil.

6. Wo fuzzy c-means versagt

Sieh dir die Ausreißer an: O1 rechts oben hat zu C die Zugehörigkeit 0,45 und zu B 0,39; O2 links oben sogar 0,58 zu C. Dabei gehören sie zu keinem Cluster. Schuld ist die Bedingung ∑j uij = 1: Ein Punkt muss seine Eins jemandem geben, auch wenn er von allen weit entfernt ist. Zugehörigkeit bedeutet hier eher „wem er am nächsten ist“ als „wie gut er hierher gehört“.

Beispiel — warum O2 = (0,2; 9,5) zu C „gehört“

Quadrierte Abstände zu den Zentren: A ≈ 54,07, B ≈ 91,88, C ≈ 24,29. Selbst vom nächsten Zentrum C ist er also 4,9 entfernt — mehr als das Sechsfache der Standardabweichung 0,8, mit der die Clusterpunkte um ihre Zentren gestreut sind. Nach der Formel für m = 2 (Farben nach der Bildunterschrift zur Formel für uij) ergeben die Kehrwerte 1/54,07 ≈ 0,0185, 1/91,88 ≈ 0,0109 und 1/24,29 ≈ 0,0412 die Summe 0,0706 und die Zugehörigkeiten

uA = 0,0185/0,0706 ≈ 0,26,   uB = 0,0109/0,0706 ≈ 0,15,   uC = 0,0412/0,0706 ≈ 0,58.

Die Formel sieht nur die Verhältnisse der Abstände, nicht ihre Größe: Je weiter der Punkt läge, desto mehr näherten sich die Verhältnisse 1 und die Zugehörigkeiten 1/3 — gegen null gingen sie aber nie.

Definition — possibilistisches c-means (Krishnapuram und Keller, 1993)

Seien x1, …, xn ∈ ℝd, c ≥ 1, m > 1, v1, …, vc ∈ ℝd Zentren, dij = ‖xi − vj‖ und η1, …, ηc > 0 im Voraus gewählte Parameter (meist aus dem Ergebnis von fuzzy c-means geschätzt). Possibilistisches c-means sucht eine Matrix U = (uij) vom Typ n × c mit uij ∈ [0, 1] — ohne die Bedingung ∑j uij = 1 — und Zentren, die die Kosten

J(U, V) = ∑i=1n ∑j=1c uijm dij2 + ∑j=1c ηj ∑i=1n (1 − uij)m

minimieren. Der zweite Term verhindert die triviale Lösung U = 0. Bei festen Zentren liegt das Minimum bei

uij = 1/1 + (dij2/ηj)1/(m−1),

die Zentren werden genauso berechnet wie bei fuzzy c-means. ηj ist der „Radius“ des Clusters j: Ein Punkt im Abstand d2 = ηj hat die Zugehörigkeit 1/2, für m = 2 ein Punkt mit d2 = 9ηj nur 1/1 + 9 = 0,1. Die Zugehörigkeit hängt jetzt vom Abstand zu einem einzigen Zentrum ab, nicht vom Verhältnis zu den anderen — ein Ausreißer bekommt überall kleine Werte.

  • Possibilistisches c-means (Krishnapuram und Keller, 1993) hebt die Summenbedingung auf — ein Ausreißer bekommt dann zu allen Clustern kleine Zugehörigkeiten.
  • Form der Cluster. Der euklidische Abstand erzeugt runde Cluster. Der Algorithmus von Gustafson und Kessel (1979) gibt jedem Cluster eine eigene Abstandsmatrix und findet auch langgestreckte Ellipsen.
  • Anfangslage. Genau wie k-means kann er in einem schlechteren lokalen Minimum enden — in der Praxis lässt man ihn mehrmals von verschiedenen Startpunkten laufen.

7. Fuzzy-Clustering in der Praxis

  • Medizinische Bilder. Die Segmentierung von MRT-Aufnahmen des Gehirns in graue Substanz, weiße Substanz und Liquor ist eine klassische Anwendung: Ein Pixel an der Gewebegrenze enthält tatsächlich beides.
  • Kundensegmentierung. Ein Kunde kann teilweise zu mehreren Gruppen gehören, und das Marketing kann damit rechnen.
  • Der probabilistische Verwandte. Gaußsche Mischmodelle, gelernt mit dem EM-Algorithmus, ordnen Punkte ebenfalls „weich“ Clustern zu — allerdings mit Wahrscheinlichkeiten, nicht mit Zugehörigkeiten. Die Ergebnisse sind oft ähnlich, die Deutung unterscheidet sich genau so, wie es der Teil über Fuzzy-Logik und Wahrscheinlichkeit beschrieben hat.
  • Embeddings. Texte, die ein Sprachmodell in Vektoren umgewandelt hat, lassen sich genauso clustern; die weiche Zuordnung zeigt dann Dokumente, die zwischen Themen liegen.

8. Zusammenfassung

  • K-means ordnet jeden Punkt genau einem Cluster zu und sagt über Punkte an der Grenze nichts.
  • Fuzzy c-means sucht Zugehörigkeiten uij mit Summe 1 und Zentren als gewichtete Mittelwerte; er wechselt zwei einfache Schritte ab.
  • Auf unseren Daten fand er dieselben Zentren wie k-means und zeigte zusätzlich, dass die Punkte M1–M4 zu zwei oder drei Clustern gleichzeitig gehören.
  • Der Fuzzifizierer m steuert, wie weich die Aufteilung ist; Partitionskoeffizient und Xie-Beni-Index helfen bei der Wahl der Clusteranzahl.
  • Die Summenbedingung 1 gibt Ausreißern hohe Zugehörigkeiten; possibilistische Varianten lösen das.

Willst du es selbst ausprobieren? Lass einen KI-Agenten fuzzy c-means auf die Pixelfarben eines eigenen Fotos anwenden und es nach den Clustern einfärben — und sieh dir an, welche Pixel „zwischen“ den Farben liegen.

Siehst du das anders? Schreib an support@coden-app.com.

Ein Agent auf deinem Rechner, vom Telefon aus gesteuert