Fuzzy-C-Means (FCM) Clusteralgorithmus 

Es ist ein Prototyp-basiertes Verfahren. Ein Objekt repräsentiert ein Cluster. Es ist ein probabilistisches Verfahren und die Summe aller Zugehörigkeitswerte eines Objektes zu allen Clustern ist 1. Die Idee der Clusterberechnung besteht darin, die Abstände aller Datenpunkte zu allen Clusterzentren zu minimieren. Die Clusteranzahl c muss vorgegeben werden. Daher kommt auch das c in Fuzzy-C-Means.

J FCM = k = 1 N i = 1 C ( mik ) m dik 2 J_{FCM}=sum from{k=1} to{N}sum from{i=1} to{C}(mik)^{m}cdot dik^{2}

Es ist ein heuristisches Verfahren und ich verwende es so:

Schritt 1: Initialisierung

Ich habe die euklidische Abstandsnorm als Abstandsmaß ausgewählt. Die Anfangsverteilung der Fuzzy-Partintionsmatrix U wird mit Zufallszahlen zwischen 0.0 und 1.0 initialisiert. Die Abbruchschwelle als Abbruchbedingung liegt normalerweise bei 1.0e-7. Die Anzahl der Objekte und Cluster wird festgelegt werden.

Schritt 2: Bestimmung der Clusterzentren

vi [ k ] [ ] = i = 0 mik.length mik [ i ] [ k ] m = 2 object [ i ] [ ] k = 1 mik.length mik [ i ] [ k ] m = 2 vi[k][]={sum from {i=0} to {mik.length} mik[i][k]^{m=2} cdot object[i][]} over {sum from {k=1} to {mik.length} mik[i][k]^{m=2} }

Schritt 3: Berechnen der neuen Partitionsmatrix

mik [ i ] [ k ] = ( 1 dik = object [ i ] [ ] vi [ k ] [ ] ) 1 m = 2 1 j = 0 vi.length ( 1 dik = object [ i ] [ ] vi [ j ] [ ] ) 1 m = 2 1 mik[i][k]={({1} over {dik=object[i][]-vi[k][]} )}^{1 over {m=2-1}} over {sum from j=0 to vi.length{(1 over {dik=object[i][]-vi[j][]})}^{1 over {m=2-1}}}

Schritt 4: Abbruch oder Wiederholung

Schritt 5: optional - Neuberechnung mit dem Ergebnis als Initialisierung (Schritt 2 bis 4)