Uczenie nienadzorowane służy do wykrywania ukrytych struktur w danych bez potrzeby etykietowania próbek. Jednym z najczęściej stosowanych podejść jest analiza skupień, czyli klasteryzacja, której celem jest podział zbioru danych na grupy (klastry) tak, aby obiekty w obrębie jednej grupy były do siebie jak najbardziej podobne, a różniły się od obiektów z innych grup. Miara podobieństwa może być mierzona na różne sposoby, takie jak odległość euklidesowa, korelacja czy odległość kosinusowa.
W praktyce narzędzia takie jak MATLAB oferują funkcje do implementacji najpopularniejszych algorytmów klasteryzacji, które można wykorzystać do eksploracji danych, wykrywania anomalii oraz wstępnego przetwarzania danych do dalszych analiz nadzorowanych. Do najważniejszych metod należą klasteryzacja ekskluzywna (np. K-Means), hierarchiczna, nakładająca się oraz probabilistyczna.
K-Means to algorytm grupujący dane w k nieprzecinających się klastrów, gdzie każdy klaster reprezentowany jest przez centroid – punkt będący średnią wektorów w tym klastrze. Algorytm działa iteracyjnie, przypisując każdą obserwację do najbliższego centroidu i aktualizując jego pozycję, aż do spełnienia warunku zbieżności. MATLAB udostępnia funkcję kmeans(), która pozwala na elastyczne konfigurowanie procesu – od prostego przypisania do k klastrów, po zwracanie dodatkowych informacji takich jak centroidy czy sumy odległości punktów do centroidów.
Podobną rolę pełni klasteryzacja k-medoids, która zamiast średnich używa rzeczywistych punktów danych jako centrów klastrów, co może być korzystne przy obecności szumów lub wartości odstających. W MATLAB dostępna jest funkcja kmedoids() o podobnej składni co kmeans().
Interesującym narzędziem jest również funkcja mahal(), która wylicza odległość Mahalanobisa – miarę odległości punktu od rozkładu wielowymiarowego uwzględniającą korelacje pomiędzy zmiennymi. Odległość ta pomaga ocenić, jak bardzo dany punkt odbiega od średniej rozkładu, co jest istotne w wykrywaniu anomalii i ocenie podobieństwa punktów.
Ważnym elementem wizualizacji wyników uczenia nienadzorowanego są wykresy odległości pomiędzy neuronami czy centrów klastrów oraz mapy wag (weight planes) w przypadku sieci SOM (Self-Organizing Maps). Te wizualizacje pomagają zrozumieć rozkład danych i relacje pomiędzy cechami, wskazując np. na silną korelację pomiędzy wybranymi zmiennymi. Mapy trafień (sample hits) pokazują, jak rozłożone są obserwacje względem neuronów w siatce topologicznej, co pozwala ocenić gęstość i skupienie danych.
Przed rozpoczęciem analizy warto pamiętać, że uczenie nienadzorowane często jest etapem wstępnym w procesie analizy danych, umożliwiającym identyfikację istotnych cech i grup, które później mogą być wykorzystane w modelach nadzorowanych. Algorytmy takie jak K-Means czy klasteryzacja hierarchiczna pozostają niezwykle popularne dzięki swojej efektywności i prostocie implementacji, nawet w dużych zbiorach danych.
Przy pracy z klasteryzacją ważne jest także zrozumienie ograniczeń każdej metody – np. wymóg określenia liczby klastrów z góry w K-Means, czy wrażliwość na punkty odstające w przypadku centroidów. Warto również pamiętać o możliwości stosowania klasteryzacji do kompresji danych czy do efektywnej selekcji cech w dużych zbiorach danych, co może znacznie przyspieszyć dalsze analizy.
Jak działa algorytm grupowania obiektów przy użyciu metody hierarchicznej w MATLAB?
W procesie klastrowania, grupowanie obiektów odbywa się poprzez analizę odległości pomiędzy nimi, co pozwala na ich hierarchiczne łączenie. Algorytm ten, w szczególności metoda linkage() w MATLAB, tworzy drzewo hierarchiczn
Jak przygotować dane do procesu klasyfikacji: przekształcanie zbioru danych
W procesie uczenia maszynowego, jednym z kluczowych etapów jest przygotowanie danych, które będą używane do trenowania i testowania modelu klasyfikacyjnego. Przekształcanie danych polega na ich odpowiednim dostosowaniu, tak aby były one w odpowiedniej formie do analizy przez algorytmy. W tej części omówimy, jak dostosować zbiór danych dotyczący cukrzycy, który zawiera zarówno dane numeryczne, jak i tekstowe, oraz jak poradzić sobie z problemem nierównomiernego rozkładu klas w zbiorze danych.
Zbiór danych o cukrzycy zawiera zarówno tekstowe wartości (np. w kolumnie „Gender” – M/F), jak i numeryczne (takie jak wiek, poziom glukozy, cholesterol, itp.). W klasycznych algorytmach klasyfikacyjnych, jak np. KNN (k-Nearest Neighbors) czy Naive Bayes, wymagane jest, by dane były w pełni numeryczne. Dlatego konieczne jest przekształcenie wszystkich danych tekstowych na formę numeryczną. Przykład: kolumna „Gender” może zostać przekształcona na wartości binarne, gdzie „M” (mężczyzna) zostanie przypisane do 1, a „F” (kobieta) do 0. W ten sposób będziemy mieli pełen zestaw danych numerycznych.
Oprócz tego, w przypadku naszego zbioru danych, występuje problem nierównomiernego rozkładu klas w ostatniej kolumnie – „CLASS”. Zbiór danych zawiera tylko 107 przypadków klasy „N” (negatywne) w porównaniu do ponad 800 przypadków klasy „Y” (pozytywne). Tego rodzaju nierównomierność może znacząco wpłynąć na jakość modelu treningowego i prowadzić do zniekształconych wyników, dlatego konieczne jest przekształcenie danych, aby były one rozłożone bardziej równomiernie.
Aby poprawić ten problem, zastosujemy kilka kroków operacyjnych:
-
Otwórz oryginalny zbiór danych, zapisując go jako plik Excel (np. „Dataset of Diabetes_M.xlsx”). Zaletą tego formatu jest łatwość edytowania i manipulowania danymi w programie takim jak Excel.
-
Zbuduj mały skrypt w MATLABie, który przekształci nasz zbiór danych. W poniższym kodzie dokonamy m.in. konwersji danych z tekstu na liczby oraz losowego rozmieszczenia danych, aby rozwiązać problem nierównomiernego rozkładu klas.
Skrypt ten wykonuje kilka istotnych operacji:
-
Zmiana formatu danych tekstowych na liczbowe – Kolumna „Gender” zostaje przekształcona, gdzie „M” jest reprezentowane przez 1, a „F” przez 0. Dzięki temu zbiór danych staje się w pełni numeryczny, co jest wymagane przez algorytmy klasyfikacyjne.
-
Losowe rozmieszczenie danych – Zastosowanie funkcji
randi()umożliwia losowe przypisanie wierszy z oryginalnego zbioru danych do nowego, co pomaga w uzyskaniu bardziej równomiernego rozkładu danych, a tym samym lepszych wyników podczas trenowania modelu.
Po przeprowadzeniu tej modyfikacji, otrzymujemy nowy zbiór danych, który jest gotowy do dalszego przetwarzania w celu klasyfikacji przy użyciu algorytmów takich jak KNN, Naive Bayes czy ECOC.
Przykład wczytywania i trenowania modelu klasyfikacyjnego:
Podstawową ideą jest tutaj wykorzystanie algorytmu klasyfikacji KNN do przewidywania klasy na podstawie przygotowanego zbioru danych. Funkcja fitcknn() pozwala na stworzenie modelu klasyfikacyjnego, który na podstawie cech pacjenta przewiduje, do jakiej kategorii (klasy) należy on: zdrowy (N), chory na cukrzycę (P), czy z wysokim ryzykiem (Y). Następnie, po przeprowadzeniu klasyfikacji, wyświetlamy wykres przedstawiający skuteczność modelu.
Ważnym aspektem przy pracy z danymi jest odpowiednia ich modyfikacja przed procesem trenowania. Błędy w danych, takie jak nierównomierny rozkład klas, mogą prowadzić do zniekształconych wyników, co podkreśla konieczność wstępnej obróbki danych. Oprócz standardowych operacji, takich jak konwersja danych tekstowych na liczbowe, warto także rozważyć inne techniki, takie jak standaryzacja czy normalizacja danych, które pomagają w uzyskaniu bardziej efektywnych wyników klasyfikacji.
Jak wyjątki w prawie autorskim Japonii kształtują rozwój AI i przetwarzanie danych
Jak rotacja wpływa na turbulencje w nadciekłych płynach i ich zastosowanie w gwiazdach neutronowych?
Jak działa zautomatyzowany proces montażu w nowoczesnych maszynach przemysłowych?
Jak skutecznie zarządzać anestezją u noworodka z zwężeniem zastawki aortalnej?

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский