Klastrowanie

Nienadzorowane grupowanie danych w zbiory podobnych elementów, bez wcześniej zdefiniowanych etykiet. Częste w analizie segmentów i wzorców.

Klastrowanie (ang. clustering) to technika uczenia nienadzorowanego, w której algorytm sam grupuje dane w zbiory podobnych elementów — bez podawania mu z góry żadnych etykiet. Nie mówisz mu „to są koty, a to psy”. Dajesz mu surowe punkty i pytasz: „które z nich są do siebie podobne?”. Reszta to matematyka odległości i podobieństwa.

To odróżnia klastrowanie od klasyfikacji. W klasyfikacji masz dane z gotowymi etykietami i uczysz model je przewidywać. W klastrowaniu etykiet nie ma — algorytm dostaje cechy (np. wiek, wartość zakupów, częstotliwość logowań) i odkrywa strukturę, której ty z marszu nie widzisz w arkuszu z milionem wierszy.

Jak to działa

Większość algorytmów opiera się na pojęciu odległości w przestrzeni cech (najczęściej euklidesowej). Punkty blisko siebie trafiają do jednego klastra, te daleko — do osobnych. Najpopularniejszy k-means losuje k środków (centroidów), przypisuje każdy punkt do najbliższego, przelicza nowe środki jako średnią klastra i powtarza, aż przestaną się ruszać. Inne podejścia: hierarchiczne (buduje drzewo zagnieżdżonych grup) i DBSCAN, który grupuje po gęstości i — co ważne — sam wykrywa szum oraz nie wymaga podawania liczby klastrów z góry.

Do czego się to przydaje? Segmentacja klientów, wykrywanie anomalii (transakcje odstające od każdego klastra), grupowanie dokumentów po tematach, kompresja kolorów w obrazach, a w ML także „feature engineering” — etykieta klastra bywa nową cechą.

Przykład z praktyki

W Pythonie wystarczy scikit-learn. Masz tabelę klientów sklepu i chcesz ich pogrupować:

from sklearn.cluster import KMeans

model = KMeans(n_clusters=4, random_state=42).fit(X)

Po treningu model.labels_ da ci numer klastra dla każdego rekordu, a model.cluster_centers_ — środki grup. Ważne: dane przedtem przeskaluj (np. StandardScaler), bo inaczej cecha „wartość zakupów w złotych” zdominuje „liczbę wizyt” tylko dlatego, że ma większe liczby.

Częste błędy i mity

  • Zgadywanie k na oko. Liczbę klastrów dobierasz, np. metodą łokcia (elbow) albo wskaźnikiem silhouette — nie „bo cztery ładnie brzmi”.
  • Brak skalowania. k-means liczy odległości, więc cechy w różnych jednostkach trzeba znormalizować.
  • Wiara, że klastry coś znaczą. Algorytm zawsze coś pogrupuje — nawet czysty szum. To, czy podział ma sens biznesowy, musisz ocenić ty.
  • k-means na dziwnych kształtach. Zakłada okrągłe, podobnej wielkości grupy. Dla wydłużonych lub gęstościowych struktur lepszy bywa DBSCAN.

Pojęcia powiązane

Uczenie nienadzorowane, k-means, DBSCAN, klastrowanie hierarchiczne, centroid, klasyfikacja (jako przeciwieństwo), redukcja wymiarowości (PCA, t-SNE), segmentacja klientów, wykrywanie anomalii.