Klasteryzacja rozmyta: algorytm fuzzy c-means i punkty między skupieniami
K-means i jego ostre przypisanie, fuzzy c-means z przynależnościami do wszystkich skupień, fuzyfikator m, współczynnik podziału i indeks Xie–Beniego do wyboru liczby skupień — oraz dlaczego punkty odstające dostają wysokie przynależności.
Seria Podstawy AI Część 36 z 52
- Mapa sztucznej inteligencji: co jest czym i jak to do siebie pasuje
- Krótka historia sztucznej inteligencji: od Turinga do modeli językowych
- Dane, model, trening, inferencja: podstawowe pojęcia na jednym przykładzie
- Jak czytać zapis matematyczny: symbole, indeksy, sumy i kwantyfikatory
- Zbiory i relacje: klocki, z których składają się definicje w AI
- Funkcje i odwzorowania: dlaczego każdy model AI jest funkcją
- Logika i dowody: reguły, według których rozumuje AI
- Grafy i drzewa: struktura, na której opierają się przeszukiwanie i sieci neuronowe
- Algebra liniowa dla uczenia maszynowego: wektory, macierze i dlaczego AI głównie mnoży
- Pochodne, gradient i reguła łańcuchowa: jak model ustala, w którą stronę się uczyć
- Spadek gradientu: jak uczy się model
- Czym jest prawdopodobieństwo: od rzutu kostką do aksjomatów Kołmogorowa
- Prawdopodobieństwo warunkowe i twierdzenie Bayesa: jak zmienić ocenę, gdy dowiesz się czegoś nowego
- Zmienna losowa i dystrybuanta: jedna funkcja, która mówi o rozkładzie wszystko
- Funkcja gęstości i funkcja prawdopodobieństwa: dlaczego zmienna ciągła ma w punkcie prawdopodobieństwo zero
- Wartość oczekiwana, wariancja i kowariancja: gdzie leży rozkład, jak jest szeroki i co z czym się wiąże
- Przegląd rozkładów prawdopodobieństwa: Bernoulliego, dwumianowy, Poissona, jednostajny, normalny i wykładniczy
- Prawo wielkich liczb i centralne twierdzenie graniczne: dlaczego średnie zachowują się tak przewidywalnie
- Statystyka i estymacja parametrów: największa wiarygodność, MAP i przedziały ufności
- Teoria informacji: entropia, entropia krzyżowa i dywergencja KL — skąd się biorą funkcje straty
- Przeszukiwanie przestrzeni stanów: BFS, DFS, UCS i A* z animacjami
- Gry i przeciwnik: minimax, przycinanie alfa-beta i Monte Carlo tree search
- Spełnianie ograniczeń: backtracking, propagacja ograniczeń i AC-3 na sudoku i mapie czeskich krajów
- Logika i systemy z bazą wiedzy: wnioskowanie w przód i wstecz, rezolucja i systemy ekspertowe
- Planowanie: STRIPS, świat klocków, heurystyki z relaksacji i planowanie w agentach AI
- Przeszukiwanie lokalne i symulowane wyżarzanie: komiwojażer przez czeskie miasta wojewódzkie
- Algorytmy genetyczne: populacja, krzyżowanie, mutacja i selekcja na plecaku na wycieczkę
- Strategie ewolucyjne i programowanie genetyczne: od reguły jednej piątej do prawa Keplera
- Optymalizacja kolonią mrówek: jak ślad feromonowy znajduje krótką drogę
- Optymalizacja rojem cząstek: bezwładność, własne doświadczenie i doświadczenie roju
- Neuroewolucja: ewolucja wag i kształtu sieci neuronowych oraz algorytm NEAT
- Zbiory rozmyte i funkcje przynależności: jak zapisać „trochę ciepło”
- Logika rozmyta a prawdopodobieństwo: dlaczego „trochę ciepło” nie znaczy „prawdopodobnie ciepło”
- Logika rozmyta: t-normy, implikacje i reguły JEŻELI–TO
- Sterowanie rozmyte: Mamdani i Sugeno od wentylatora po wahadło na wózku
- Klasteryzacja rozmyta: algorytm fuzzy c-means i punkty między skupieniami
- Systemy neuro-rozmyte (ANFIS): reguły rozmyte, które uczą się z danych
- Łańcuchy Markowa: macierz przejścia, rozkład stacjonarny i PageRank
- Ukryte modele Markowa: algorytm Viterbiego i nieuczciwe kasyno
- Sieci bayesowskie: dlaczego trawa jest mokra i co z tego wynika dla zraszacza
- Filtr Kalmana: jak z niedokładnych pomiarów oszacować, gdzie jest samochód i jak szybko jedzie
- Rodzaje uczenia maszynowego: nadzorowane, nienadzorowane, półnadzorowane i inne
- Prompty, kontekst i RAG: jak dać modelowi właściwe informacje
- Wariacyjne autoenkodery (VAE): nowe obrazki z ciągłej przestrzeni latentnej
- Generatywne sieci przeciwstawne (GAN): fałszerz kontra detektyw
- Modele dyfuzyjne: jak z czystego szumu powstaje obraz
- Procesy decyzyjne Markowa: stany, akcje, nagrody i równania Bellmana
- Q-learning i DQN: uczenie się wartości akcji od tabeli po sieć neuronową
- Policy gradient i PPO: uczenie się bezpośrednio polityki
- Jak działa agent AI: model językowy w pętli z narzędziami
- Programowanie z agentami AI: zadanie, testy i kontrola
- Ocena i bezpieczeństwo systemów AI: jak mierzyć i jak pilnować
Pełny program serii Gotowe: 52 z 83 tematów
- Jak działa k-means i co przemilcza o punktach na granicy skupień.
- Jak fuzzy c-means oblicza przynależności i środki i co robi fuzyfikator m.
- Jak wybrać liczbę skupień i gdzie fuzzy c-means zawodzi.
Warto wiedzieć wcześniej: Zbiory rozmyte i funkcje przynależności: jak zapisać „trochę ciepło”, Rodzaje uczenia maszynowego: nadzorowane, nienadzorowane, półnadzorowane i inne
Klasteryzacja szuka w danych grup, o których z góry nic nie wiemy: klientów o podobnych zwyczajach zakupowych, obszarów tej samej tkanki na obrazie z rezonansu magnetycznego, dokumentów o podobnej tematyce. Klasyczny algorytm k-means (k-średnich) przypisuje każdy punkt dokładnie jednej grupie. Tyle że prawdziwe dane mają punkty na granicy — klienta, który kupuje trochę jak student, a trochę jak rodzic, piksel, w którym spotykają się istota szara i istota biała mózgu. Klasteryzacja rozmyta pozwala punktowi należeć do kilku grup naraz, do każdej po trochu.
Nawiązuje do części Zbiory rozmyte i funkcje przynależności oraz Rodzaje uczenia maszynowego, gdzie klasteryzacja pojawiła się jako typowe zadanie uczenia nienadzorowanego.
1. Klasteryzacja ostra: k-means
Definicja — zadanie k-means
Dla punktów x1, …, xn ∈ ℝd i liczby skupień c szukamy środków v1, …, vc i przypisania punktów do skupień, które minimalizują
J = ∑i=1n ‖xi − vshluk(i)‖2.
Algorytm Lloyda przeplata dwa kroki: przypisz każdy punkt do najbliższego środka; przelicz każdy środek jako średnią jego punktów. Powtarzaj, dopóki przypisanie się zmienia.
Rozstawiasz w danych kilka „flag”. Każdy punkt dołącza do najbliższej. Potem każda flaga przenosi się na środek swoich punktów. Punkty znowu dołączają do najbliższej flagi — i tak dalej, dopóki nic się nie zmienia. Każdy krok zmniejsza J, więc algorytm na pewno się skończy, choć niekoniecznie w najlepszym możliwym podziale.
Definicja — odległość euklidesowa
Dla punktów x, v ∈ ℝd jest ‖x − v‖ = √( ∑r=1d (xr − vr)2 ). Na płaszczyźnie to zwykła długość odcinka, na przykład od punktu M1 = (4,5; 2,5) do środka skupienia A (1,73; 2,31), jak go niżej znajdzie fuzzy c-means: √(2,772 + 0,192) ≈ 2,78. Klasteryzacja pracuje z kwadratem ‖·‖2 — odpada pierwiastek, a odległe punkty są karane mocniej.
def kmeans(X, c):
V = c losowo wybranych punktów z X # środki początkowe
while True:
shluk = [argmin_j ‖x − V[j]‖² for x in X] # krok przypisania
if shluk się nie zmienił: return V, shluk
for j in range(c): # krok środków
V[j] = średnia punktów x, dla których shluk(x) = j
Twierdzenie — algorytm Lloyda się kończy
Żaden krok nie zwiększa J, dlatego algorytm kończy się po skończenie wielu krokach.
Dowód: Przypisanie: każdy składnik ‖xi − vshluk(i)‖2 zastępuje się najmniejszym ze wszystkich ‖xi − vj‖2, więc nie rośnie. Środki: dla punktów S jednego skupienia ze średnią x̄ zachodzi rozkład
∑i∈S ‖xi − v‖2 = ∑i∈S ‖xi − x̄‖2 + |S| · ‖x̄ − v‖2
(składnik mieszany 2 ∑ (xi − x̄) · (x̄ − v) jest zerowy, bo ∑ (xi − x̄) = 0). Suma jest więc najmniejsza dla v = x̄. Podziałów n punktów na c skupień jest skończenie wiele, a J przy każdej zmianie przypisania ściśle maleje (przy równej odległości zostawiamy punkt w jego skupieniu), więc żaden podział się nie powtórzy. ∎
Twierdzenie nie mówi nic o tym, czy znaleziony podział jest tym o najmniejszym J — tylko że algorytm nie wpadnie w cykl.
Nasze dane: trzy grupy po 40 punktów — A w lewym dolnym rogu, B po prawej i C u góry —, cztery punkty na granicy (M1–M4) i dwa punkty odstające, daleko od wszystkiego (O1, O2). K-means ustabilizował się po czterech iteracjach:
Skupienia znalazł dobrze, ale o punktach na granicy musiał rozstrzygnąć: M1, M3 i M4 dał do B, M2 do A. Punkt M3 leży przy tym niemal dokładnie między B a C — k-means nic o tym nie powie. A oba punkty odstające trafiły do skupienia C, jakby należały do niego tak samo jak jego jądro.
2. Fuzzy c-means
Definicja — fuzzy c-means (Dunn 1973, Bezdek 1981)
Zamiast przypisania szukamy macierzy przynależności U = (uij), uij ∈ [0, 1], gdzie dla każdego punktu ∑j uij = 1, oraz środków vj, które minimalizują
Jm = ∑i ∑j uijm ‖xi − vj‖2,
gdzie m > 1 to fuzyfikator (wykładnik rozmycia). Algorytm przeplata dwa kroki, które wynikają z warunków optymalności:
vj = ∑i uijm xi / ∑i uijm, uij = 1 / ∑k (dij / dik)2/(m−1),
gdzie dij = ‖xi − vj‖.
Każdy punkt dzieli swoją jedynkę między wszystkie skupienia — więcej temu, do którego ma bliżej. Środek skupienia to średnia ważona wszystkich punktów: punkty, które silnie należą do skupienia, ciągną go mocniej, punkty z innych skupień tylko nieznacznie. Wzór na przynależność porównuje odległości: jeśli punkt jest do jednego środka dwa razy bliżej niż do drugiego, dostaje (przy m = 2) cztery razy większą przynależność.
Jm = ∑i=1n ∑j=1c uijm ‖xi − vj‖2, ∑j uij = 1
- Jm
- całkowity „koszt” podziału — algorytm go minimalizuje; jest mały, gdy punkty należą głównie do środków, które mają blisko
- ∑i ∑j
- każdy punkt liczy się do każdego skupienia — w odróżnieniu od k-means, gdzie brało się tylko jedno skupienie na punkt
- uij
- przynależność punktu i do skupienia j — waga, z jaką odległość wlicza się do kosztu
- m
- fuzyfikator — bez potęgi (m = 1) opłacałoby się dać całą jedynkę najbliższemu środkowi i wyszłoby znowu k-means; przy m > 1 dzielenie się opłaca: punkt równo odległy od dwóch środków płaci przy m = 2 i podziale na pół tylko (½2 + ½2) · d2 = ½d2 zamiast d2
- ‖xi − vj‖2
- kwadrat odległości — ile kosztuje mieć punkt „przy” tym środku; odległy środek wychodzi drogo
- ∑j uij = 1
- warunek — bez niego minimum byłoby trywialne: wszystkie uij = 0 i koszt zero
uij = 1 / ∑k=1c ( dij / dik )2/(m−1)
- uij
- nowa przynależność punktu i do skupienia j przy ustalonych środkach
- dij / dik
- stosunek odległości — ile razy środek j jest dalej niż środek k; stosunek (nie różnica) sprawia, że wynik nie zależy od skali danych
- 2/(m−1)
- jak ostro stosunek rozstrzyga — dla m = 2 to 2, więc dwa razy bliższy środek dostaje cztery razy więcej; dla m → 1 wykładnik rośnie nieograniczenie i wszystko dostaje najbliższy środek
- ∑k
- porównanie ze wszystkimi środkami łącznie z samym j (składnik k = j wynosi 1) — dzięki temu przynależności punktu sumują się dokładnie do 1
Twierdzenie — skąd biorą się oba kroki
Przynależności przy ustalonych środkach. Dla jednego punktu i minimalizujemy ∑j uijm dij2 przy warunku ∑j uij = 1. Funkcja Lagrange’a to L = ∑j uijm dij2 − λ (∑j uij − 1). Z ∂L/∂uij = m uijm−1 dij2 − λ = 0 wynika uij = (λ/m)1/(m−1) · dij−2/(m−1). Po podstawieniu do warunku sumy niewiadoma λ się skraca i zostaje
uij = dij−2/(m−1) / ∑k dik−2/(m−1) = 1 / ∑k (dij / dik)2/(m−1).
Wyszły liczby dodatnie, więc warunku uij ≥ 0 nie trzeba pilnować osobno. (Jeśli punkt leży dokładnie w środku, dij = 0, dostaje do tego skupienia przynależność 1; nasza implementacja rozwiązuje to tak, że odległość nigdy nie spada poniżej 10−12.)
Środki przy ustalonych przynależnościach. Jm jest względem vj wypukłą funkcją kwadratową, a ∂Jm/∂vj = −2 ∑i uijm (xi − vj) = 0 daje vj = ∑i uijm xi / ∑i uijm.
Każdy krok minimalizuje więc Jm przy ustalonej drugiej grupie zmiennych i nie może go zwiększyć — ten sam argument co przy k-means. Bezdek i in. (1987, poprawka pierwotnego twierdzenia Bezdeka z 1980 roku) wykazali, że ciąg ma punkty skupienia w punktach stacjonarnych Jm (niekoniecznie w minimum globalnym).
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)) # losowe przynależności, wiersz = 1
for _ in range(iteraci):
W = U ** m
V = (W.T @ X) / W.sum(axis=0)[:, None] # środki jako średnie ważone
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 na naszych danych
Kolor punktu jest teraz mieszanką kolorów skupień według przynależności: czysto zielony punkt należy tylko do A, punkt „pomiędzy” zielonym a pomarańczowym jest częściowo w A, a częściowo w B. Kropkowane linie pokazują, jak przesuwały się środki — algorytm ustabilizował się po dziewięciu iteracjach:
| Punkt | k-means | A | B | C |
|---|---|---|---|---|
| M1 (4,5; 2,5) | B | 0,41 | 0,45 | 0,15 |
| M2 (3,3; 4,5) | A | 0,43 | 0,18 | 0,38 |
| M3 (5,8; 5) | B | 0,12 | 0,44 | 0,45 |
| M4 (4,6; 4) | B | 0,28 | 0,40 | 0,32 |
Teraz widać, co k-means przemilczał. M1 jest niemal po połowie między A i B; M3 jest właściwie odrobinę bardziej w C niż w B, choć k-means dał go do B; a M4 w środku trójkąta należy trochę do wszystkich trzech. Punkty w jądrach skupień mają przynależność do swojego skupienia bliską jedności. Środki wyszły praktycznie tak samo jak przy k-means — fuzzy c-means nie zmienia tego, gdzie są skupienia, ale dodaje do nich informację, jak pewnie który punkt do nich należy.
Przykład — przynależności punktu M1 = (4,5; 2,5)
Środki po dziewięciu iteracjach: A ≈ (1,73; 2,31), B ≈ (7,12; 2,87), C ≈ (4,51; 7,11). Dla m = 2 wystarczą odwrotności kwadratów odległości:
| Skupienie | d2 | 1/d2 | u = (1/d2) / 0,3190 |
|---|---|---|---|
| A | 2,772 + 0,192 ≈ 7,72 | 0,1296 | 0,41 |
| B | 2,622 + 0,372 ≈ 7,03 | 0,1423 | 0,45 |
| C | 0,012 + 4,612 ≈ 21,25 | 0,0471 | 0,15 |
| suma | 0,3190 | 1,00 |
M1 jest od środków A i B prawie tak samo daleko (7,72 wobec 7,03), dlatego dzieli się między nie niemal po połowie; C jest trzy razy dalej (w kwadracie), więc dostaje tylko resztę.
4. Fuzyfikator m
Definicja — współczynnik podziału
Współczynnik podziału (partition coefficient) to PC = (1/n) ∑i ∑j uij2. Wynosi 1 dla podziału ostrego i 1/c, gdy każdy punkt należy do wszystkich skupień jednakowo.
Jedna liczba, która mówi, jak „ostry” jest podział. Dla trzech skupień leży między 1/3 (wszystko jest rozmyte) a 1 (każdy punkt ma wyraźny dom).
PC = (1/n) ∑i ∑j uij2
- PC
- ostrość całego podziału, liczba z [1/c; 1]
- (1/n) ∑i
- średnia po punktach — żeby dało się porównywać zbiory danych różnej wielkości
- ∑j uij2
- ostrość jednego punktu — kwadrat „nagradza” skupioną przynależność: (1, 0, 0) daje 1, (⅓, ⅓, ⅓) tylko ⅓; przy ustalonej sumie 1 suma kwadratów jest najmniejsza, gdy wszystkie części są równe
Dla m bliskiego 1 fuzzy c-means zbliża się do k-means: współczynnik podziału wynosi 0,98, a punkt M4 należy do B w 0,79. Dla m = 2 współczynnik wynosi 0,84, a dla m = 5 tylko 0,42 — kolory się zlewają i nawet punkt z jądra skupienia A ma przynależność do A tylko 0,45. Dla m → ∞ wszystkie przynależności dążyłyby do 1/3. Najczęściej stosuje się m = 2: wystarczająco miękkie, żeby punkty na granicy były widoczne, i dość ostre, żeby skupienia pozostały wyraźne.
Przykład — punkt dwa razy bliżej jednego z dwóch środków
Punkt ma do środka 1 odległość 1, a do środka 2 odległość 2. Według wzoru u1 = 1 / (1 + (1/2)2/(m−1)):
- m = 1,2: wykładnik 10, u1 = 1 / (1 + 1/1 024) ≈ 0,999 — praktycznie ostre przypisanie,
- m = 2: wykładnik 2, u1 = 1 / (1 + 1/4) = 0,8,
- m = 5: wykładnik 0,5, u1 = 1 / (1 + 0,707) ≈ 0,586,
- m → ∞: wykładnik → 0, (1/2)0 = 1 i u1 → 1/2.
Ogólnie: dla m → 1+ wykładnik 2/(m − 1) dąży do nieskończoności, stosunki dij/dik < 1 dążą do zera, a te > 1 do nieskończoności, więc najbliższy środek dostaje 1, a pozostałe 0 (k-means). Dla m → ∞ wykładnik dąży do zera, wszystkie c składników sumy dążą do 1 i uij → 1/c.
5. Ile skupień?
Liczbę skupień musimy algorytmowi podać. Gdy jej nie znamy, uruchamiamy go dla różnych c i porównujemy jakość podziałów. Przydają się do tego współczynnik podziału i indeks Xie–Beniego.
Definicja — indeks Xie–Beniego
XB = ∑i ∑j uijm ‖xi − vj‖2 / (n · minj ≠ k ‖vj − vk‖2) — im mniejszy, tym lepszy.
Licznik mierzy, jak ciasno punkty skupiają się przy swoich środkach; mianownik — jak daleko od siebie są dwa najbliższe środki. Dobry podział ma zwarte skupienia, które są od siebie daleko.
XB = ∑i ∑j uijm ‖xi − vj‖2 / ( n · minj ≠ k ‖vj − vk‖2 )
- XB
- stosunek „rozrzut wewnątrz skupień / odległość między nimi” — mniejszy jest lepszy
- ∑ ∑ uijm ‖xi − vj‖2
- zwartość — dokładnie wartość Jm, którą algorytm minimalizował
- n
- liczba punktów — z licznika robi średnią na punkt, żeby indeks nie rósł z wielkością danych
- minj ≠ k ‖vj − vk‖2
- separacja — rozstrzyga najbliższa para środków; samo Jm wraz z przybywaniem skupień tylko maleje, a ten składnik karze podział, który jedno prawdziwe skupienie rozszczepia na dwa bliskie
Przykład — indeks Xie–Beniego dla c = 3
Po zakończeniu algorytmu J2 ≈ 166,73. Kwadraty odległości środków: A–B ≈ 29,4, A–C ≈ 30,8, B–C ≈ 24,79 (najbliżej są B i C). Dla n = 126 punktów:
XB = 166,73 / (126 · 24,79) = 166,73 / 3 124 ≈ 0,053.
| Liczba skupień c | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|
| Współczynnik podziału (większy jest lepszy) | 0,745 | 0,841 | 0,748 | 0,661 | 0,609 |
| Indeks Xie–Beniego (mniejszy jest lepszy) | 0,228 | 0,053 | 0,298 | 0,682 | 0,529 |
Oba wskaźniki zgadzają się co do trzech skupień, które włożyliśmy do danych. W prawdziwych danych taka zgodność nie jest oczywista, a wskaźniki są raczej drogowskazem niż werdyktem.
6. Gdzie fuzzy c-means zawodzi
Spójrz na punkty odstające: O1 w prawym górnym rogu ma przynależność do C 0,45 i do B 0,39; O2 w lewym górnym rogu nawet 0,58 do C. A przecież do żadnego skupienia nie należą. Winny jest warunek ∑j uij = 1: punkt musi komuś rozdać swoją jedynkę, nawet jeśli jest daleko od wszystkich. Przynależność oznacza tu raczej „do kogo ma najbliżej” niż „jak dobrze tu pasuje”.
Przykład — dlaczego O2 = (0,2; 9,5) „należy” do C
Kwadraty odległości do środków: A ≈ 54,07, B ≈ 91,88, C ≈ 24,29. Nawet od najbliższego środka C jest więc oddalony o 4,9 — ponad sześciokrotność odchylenia standardowego 0,8, z jakim punkty skupień są rozrzucone wokół środków. Odwrotności 0,0185, 0,0109 i 0,0412 dają sumę 0,0706 i przynależności 0,26, 0,15 i 0,58. Wzór widzi tylko stosunki odległości, nie ich wielkość: im dalej leżałby punkt, tym bardziej stosunki zbliżałyby się do 1, a przynależności do ⅓ — ale do zera nie dążyłyby nigdy.
Definicja — posybilistyczne c-means (Krishnapuram i Keller, 1993)
Warunek sumy się pomija, a do kosztu dodaje się składnik, który zapobiega trywialnemu rozwiązaniu u = 0:
J = ∑i ∑j uijm dij2 + ∑j ηj ∑i (1 − uij)m, skąd uij = 1 / (1 + (dij2 / ηj)1/(m−1)).
ηj to „promień” skupienia j: punkt w odległości d2 = ηj ma przynależność ½, dla m = 2 punkt z d2 = 9ηj tylko 0,1. Przynależność zależy teraz od odległości do jednego środka, a nie od stosunku do pozostałych — punkt odstający dostaje wszędzie małe wartości.
- Posybilistyczne c-means (Krishnapuram i Keller, 1993) znosi warunek sumy — punkt odstający dostaje wtedy małe przynależności do wszystkich skupień.
- Kształt skupień. Odległość euklidesowa daje okrągłe skupienia. Algorytm Gustafsona i Kessela (1979) nadaje każdemu skupieniu własną macierz odległości i znajduje też wydłużone elipsy.
- Położenie początkowe. Tak samo jak k-means może skończyć w gorszym minimum lokalnym — w praktyce uruchamia się go kilka razy z różnych punktów startowych.
7. Klasteryzacja rozmyta w praktyce
- Obrazy medyczne. Segmentacja obrazów mózgu z rezonansu magnetycznego na istotę szarą, istotę białą i płyn mózgowo-rdzeniowy to klasyczne zastosowanie: piksel na granicy tkanek naprawdę zawiera obie.
- Segmentacja klientów. Klient może należeć częściowo do kilku grup, a marketing może to uwzględnić.
- Probabilistyczny krewny. Mieszaniny gaussowskie uczone algorytmem EM również przypisują punkty do skupień „miękko” — tyle że prawdopodobieństwem, a nie przynależnością. Wyniki bywają podobne, interpretacja różni się dokładnie tak, jak opisała to część o logice rozmytej i prawdopodobieństwie.
- Embeddingi. Teksty zamienione przez model językowy na wektory można klasteryzować tak samo; miękkie przypisanie pokaże wtedy dokumenty, które leżą między tematami.
8. Podsumowanie
- K-means przypisuje każdy punkt do dokładnie jednego skupienia i o punktach na granicy nic nie mówi.
- Fuzzy c-means szuka przynależności uij o sumie 1 i środków jako średnich ważonych; przeplata dwa proste kroki.
- Na naszych danych znalazł te same środki co k-means, a ponadto pokazał, że punkty M1–M4 należą do dwóch lub trzech skupień jednocześnie.
- Fuzyfikator m steruje tym, jak miękki jest podział; współczynnik podziału i indeks Xie–Beniego pomagają wybrać liczbę skupień.
- Warunek sumy 1 daje punktom odstającym wysokie przynależności; warianty posybilistyczne to rozwiązują.
Chcesz to wypróbować na własnej skórze? Poproś agenta AI, żeby uruchomił fuzzy c-means na kolorach pikseli twojego zdjęcia i pokolorował je według skupień — i zobacz, które piksele leżą „pomiędzy” kolorami.
Masz inne zdanie? Napisz na support@coden-app.com.