Sztuczna inteligencja (AI) oraz powiązane z nią technologie zyskują na znaczeniu w naszym codziennym życiu, stając się jednym z najważniejszych tematów współczesnej technologii. Dzięki AI, maszyny zyskały zdolność uczenia się oraz podejmowania decyzji w sposób, który kiedyś był zarezerwowany tylko dla ludzi – umiejętność analizowania skomplikowanych problemów, rozumowania, logicznego wyciągania wniosków i podejmowania odpowiednich działań. Wykorzystanie AI sprawia, że wiele zadań, które wcześniej wymagały interwencji człowieka, mogą zostać automatycznie wykonane przez maszyny, co znacząco zwiększa efektywność i precyzję w wielu branżach. Rozwój technologii, w tym sztucznej inteligencji, zmienia nasze podejście do rozwiązywania problemów i wprowadzania innowacji w różnych dziedzinach.
Celem stworzenia tego podręcznika była potrzeba stworzenia kompleksowego, zrozumiałego dla studentów, podręcznika dotyczącego AI, który pozwala na opanowanie zarówno podstawowych, jak i bardziej zaawansowanych technik i algorytmów sztucznej inteligencji. W tym kontekście, wybranie MATLAB jako języka do nauki i implementacji okazało się być idealnym rozwiązaniem, biorąc pod uwagę jego silne wsparcie dla różnych metod i algorytmów AI, w tym maszynowego uczenia, systemów rozmytych, sieci neuronowych i wielu innych.
Podręcznik oferuje szeroką gamę materiałów, które obejmują zarówno teoretyczne podstawy, jak i praktyczne przykłady, pozwalając studentom na szybkie przyswajanie wiedzy i wdrażanie jej w praktyce. Wiedza teoretyczna jest niezbędna do zrozumienia fundamentów technologii, ale równie ważna jest możliwość pracy z rzeczywistymi projektami, które stanowią idealne narzędzie do nauki poprzez praktykę. W książce znajduje się aż 134 projekty – 77 projektów klasowych oraz 57 projektów laboratoryjnych – które pozwalają uczniom na głębsze zrozumienie omawianych algorytmów oraz zastosowanie ich w rzeczywistych przypadkach.
Warto zauważyć, że książka nie tylko omawia klasyczne algorytmy, takie jak sieci neuronowe, czy metody uczenia nadzorowanego i nienadzorowanego, ale także wprowadza zagadnienia związane z bardziej zaawansowanymi technologiami AI, takimi jak systemy rozmyte (FIS) oraz adaptacyjne neuro rozmyte systemy inferencyjne (ANFIS). To rozszerza horyzonty wiedzy, pozwalając na pełniejsze zrozumienie pełnej gamy technik stosowanych w dziedzinie AI. Praca z tymi narzędziami daje uczniom solidne podstawy do dalszego rozwoju umiejętności w tworzeniu złożonych aplikacji AI.
Dodatkowo, podręcznik zwraca uwagę na dwa główne podejścia do nauki i rozwoju aplikacji AI. Pierwsze z nich to wykorzystywanie aplikacji i graficznych interfejsów użytkownika (GUI), które umożliwiają początkującym szybkie tworzenie aplikacji AI bez konieczności pisania kodu. To podejście pozwala na skoncentrowanie się na ogólnych zasadach działania algorytmów i ich aplikacjach, co jest szczególnie cenne dla tych, którzy dopiero zaczynają swoją przygodę z AI. Drugie podejście to bardziej zaawansowane użycie bibliotek funkcji w MATLAB, które pozwalają na tworzenie bardziej złożonych i elastycznych aplikacji AI z wykorzystaniem większych bloków kodu. Oba podejścia są równie ważne, ponieważ pozwalają na naukę zarówno wstępnego, jak i zaawansowanego poziomu sztucznej inteligencji.
Każdy projekt omawiany w książce jest poparty rzeczywistymi danymi, które pozwalają na przetestowanie algorytmów w kontekście rzeczywistych aplikacji, takich jak analiza danych, rozpoznawanie obrazów, czy podejmowanie decyzji w warunkach niepewności. Dzięki temu studenci mogą nie tylko nauczyć się teorii, ale również zdobyć praktyczne doświadczenie, które będzie miało zastosowanie w ich przyszłej karierze zawodowej.
Istotnym aspektem tej książki jest także podejście do nauki, które stawia na interaktywność. Wbudowane interfejsy graficzne oraz narzędzia wspomagające pozwalają na szybsze przyswajanie wiedzy i umożliwiają naukę przez eksperymentowanie, co jest niezwykle ważne w kontekście tak skomplikowanej dziedziny, jaką jest sztuczna inteligencja. Praca z GUI pozwala na eksperymentowanie bez konieczności posiadania głębokiej wiedzy programistycznej, a dostęp do bibliotek MATLAB umożliwia budowanie bardziej złożonych aplikacji dla zaawansowanych użytkowników.
Wszystkie te elementy tworzą kompleksowy i przystępny podręcznik, który może stanowić podstawę nauki zarówno dla początkujących, jak i dla tych, którzy chcą rozwijać swoje umiejętności w dziedzinie AI. To książka, która nie tylko przekazuje teoretyczną wiedzę, ale również w pełni angażuje studentów w proces nauki poprzez praktyczne projekty i interaktywne narzędzia.
Sztuczna inteligencja nie jest już tylko domeną specjalistów. Dzięki narzędziom takim jak MATLAB, każdy może zacząć swoją przygodę z AI, niezależnie od poziomu zaawansowania. Kluczowe jest jednak, by nie poprzestawać na nauce teorii, ale angażować się w praktykę i eksperymentować z realnymi danymi, co pozwala na zdobycie umiejętności niezbędnych do tworzenia aplikacji AI w rzeczywistym świecie.
Jak przekształcać dane i budować reguły asocjacyjne na przykładzie zbioru danych o cukrzycy?
Proces analizy zbiorów danych wymaga często wstępnej obróbki cech, aby dostosować je do konkretnych metod analitycznych, takich jak modele reguł asocjacyjnych. Na przykładzie zbioru danych o cukrzycy można prześledzić krok po kroku, jak przygotować dane i wyciągnąć z nich istotne zależności.
Pierwszym etapem jest wybór i konwersja kluczowych kolumn danych, takich jak Glukoza, BMI, Ciśnienie krwi oraz Wiek, na postać numeryczną. W przypadku pracy z językiem MATLAB zastosowanie funkcji table2array() umożliwia pozyskanie wartości liczbowych z tabeli, co jest niezbędne do dalszego przetwarzania. Następnie, aby uprościć dane i nadać im formę binarną, wyznacza się medianę dla każdej z wybranych cech. Mediana pełni tutaj rolę progu decyzyjnego: każda wartość powyżej mediany jest oznaczana jako 1, a poniżej jako 0. Takie binarne kodowanie ułatwia interpretację oraz implementację reguł asocjacyjnych, zwłaszcza w kontekście danych medycznych, gdzie często interesuje nas rozróżnienie między wysokim a niskim ryzykiem.
Konwersja do wartości binarnych realizowana jest za pomocą pętli for(), która iteruje przez wszystkie obserwacje. Dla każdej cechy (Glukoza, BMI, Ciśnienie krwi, Wiek) sprawdzany jest warunek względem mediany i odpowiednio przypisywana jest wartość 0 lub 1. Po zakończeniu tej operacji dane są zapisywane do nowego zbioru, zachowując zarówno nazwy kolumn, jak i przetworzone dane, co umożliwia późniejsze wykorzystanie ich w modelach.
W kolejnym kroku budowany jest model reguł asocjacyjnych na podstawie przygotowanych danych. Reguła w tym kontekście przyjmuje postać {Glukoza, BMI} → {Wynik}, co oznacza, że jednoczesne wystąpienie wysokiej glukozy i BMI jest powiązane z diagnozą cukrzycy. Celem jest oszacowanie, jak często taka kombinacja warunków przekłada się na pozytywny wynik. W tym celu zlicza się liczbę przypadków, gdzie wszystkie trzy wartości (Glukoza, BMI i Wynik) są równe 1, oznaczającą zgodność reguły z rzeczywistością.
Analiza reguły bazuje na trzech wskaźnikach: wsparciu (Support), pewności (Confidence) oraz współczynniku podniesienia (Lift). Wsparcie to stosunek liczby przypadków spełniających regułę do całkowitej liczby obserwacji, pewność to stosunek liczby przypadków spełniających regułę do liczby przypadków, gdzie występuje tylko przesłanka (antecedent), a Lift porównuje wsparcie reguły z oczekiwaną wartością, jeśli przesłanka i skutek byłyby niezależne. Wartość Lift większa od 1 wskazuje na pozytywną korelację między przesłanką a skutkiem, co oznacza, że wystąpienie glukozy i BMI rzeczywiście ma znaczenie dla wyniku.
Podczas implementacji tych obliczeń, stosuje się pętlę iterującą po wszystkich obserwacjach, aby zliczyć odpowiednie zdarzenia i obliczyć wartości wskaźników zgodnie z definicjami matematycznymi. Tak przygotowane narzędzie pozwala na ocenę siły i trafności reguł asocjacyjnych, co jest szczególnie użyteczne w analizie danych medycznych, gdzie związki pomiędzy cechami mają kluczowe znaczenie diagnostyczne.
Ważne jest, aby zrozumieć, że wybór mediany jako punktu podziału jest metodą arbitralną, ale często praktyczną, pozwalającą na redukcję złożoności danych oraz ułatwiającą interpretację wyników. Ponadto, interpretacja wartości Lift wymaga ostrożności — wysoka wartość nie zawsze oznacza przyczynowość, lecz jedynie istotną korelację, która powinna być potwierdzona innymi metodami. Warto również pamiętać, że ograniczenie analizy do wybranych cech i liczby obserwacji może wpływać na wyniki, dlatego przy praktycznym zastosowaniu należy uwzględnić specyfikę i kompletność danych.
Jak działa proces klasyfikacji liniowej i jakie algorytmy można zastosować?
Proces klasyfikacji w uczeniu maszynowym opiera się na mapowaniu danych wejściowych na konkretne klasy w celu przewidywania wyników. Na przykład, jeśli chcemy rozpoznać, czy na zdjęciu znajduje się kot, pies, czy samochód, musimy przejść przez proces treningu modelu, który pozwoli na jak najlepsze dopasowanie wyników do prawdziwych danych. Ważnym etapem tego procesu jest minimalizacja wartości błędu (ang. loss) tak, aby osiągnąć akceptowalny poziom dokładności. Można to zrozumieć, patrząc na przykład klasyfikacji trzech klas: kot, pies i samochód.
W przykładzie tym dane wejściowe stanowią wektory, które przedstawiają obrazy zwierząt. Każdy obraz jest reprezentowany przez wektor 5-elementowy. Wagi (ang. weight matrix) są reprezentowane przez macierz 3×5, gdzie każdemu wektorowi wejściowemu przypisane są odpowiednie cechy. W procesie treningu oblicza się wynik, korzystając z funkcji mnożenia macierzy, a następnie porównuje go z oczekiwanym wynikiem, czyli wektorem Y, który w przypadku kota wynosi [1 0 0]. Błąd (lub stratę) oblicza się jako różnicę między wynikiem uzyskanym w trakcie treningu a pożądanym wynikiem, a następnie jest on wykorzystywany do aktualizacji wag i wektora bias w celu zmniejszenia tej różnicy.
Po uzyskaniu minimalnej straty, proces jest zakończony, a model uzyskuje wystarczającą dokładność. Ten sposób pracy jest podstawą wielu algorytmów klasyfikacji liniowej, które pozwalają na rozwiązywanie różnorodnych problemów klasyfikacyjnych.
Najpopularniejsze algorytmy klasyfikacji liniowej obejmują klasyfikatory oparte na regresji logistycznej, maszynach wektorów nośnych (SVM), metodzie najbliższych sąsiadów (KNN) oraz klasyfikację z wykorzystaniem jądra Gaussa. Każdy z tych algorytmów ma swoje specyficzne zastosowania i charakteryzuje się różnym podejściem do klasyfikacji.
Regresja logistyczna w klasyfikacji binarnej
Regresja logistyczna jest jednym z najczęściej stosowanych algorytmów do klasyfikacji binarnej, gdzie mamy do czynienia z dwiema klasami, np. prawdą lub fałszem. Zasada działania regresji logistycznej opiera się na przekształceniu wyników liniowego połączenia cech wejściowych do prawdopodobieństw, które są następnie wykorzystywane do przypisania danej obserwacji do jednej z dwóch klas. Wzór, który wykorzystywany jest w tym przypadku, to:
gdzie jest wynikiem liniowego połączenia cech, a jest przewidywaną wartością prawdopodobieństwa przynależności do jednej z klas.
Klasyfikacja z wykorzystaniem jądra Gaussa
W sytuacjach, gdy dane są nieliniowo separowalne, stosuje się metodę jądra Gaussa (Gaussian kernel). Funkcja jądra pozwala na mapowanie danych do wyższej wymiarowości, gdzie stają się one bardziej liniowo separowalne. Jądro Gaussa jest jednym z przykładów, które pozwalają na klasyfikację bardziej złożonych danych. Wzór matematyczny funkcji jądra Gaussa jest następujący:
gdzie jest odległością pomiędzy punktami danych i , a to parametr, który kontroluje szerokość jądra. Dzięki temu, dane, które w oryginalnej przestrzeni cech nie są łatwo separowalne, mogą stać się separowalne w przestrzeni wyższych wymiarów.
Maszyna wektorów nośnych (SVM)
Maszyna wektorów nośnych jest jednym z najpotężniejszych algorytmów do klasyfikacji. Działa na zasadzie znalezienia granicy (hiperpłaszczyzny) w przestrzeni cech, która najlepiej rozdziela dwie klasy danych. SVM maksymalizuje margines – odległość pomiędzy granicą decyzyjną a najbliższymi punktami z obu klas. SVM jest bardzo skuteczny w przypadku, gdy dane są dobrze separowalne, ale również dobrze radzi sobie z danymi nieliniowymi, zwłaszcza gdy zastosujemy funkcję jądra.
K-Nearest Neighbors (KNN)
Algorytm KNN jest jednym z najprostszych algorytmów klasyfikacyjnych, który polega na przypisaniu klasy nowemu punktowi na podstawie etykiet jego najbliższych sąsiadów w przestrzeni cech. Jest to metoda, która nie wymaga etapów trenowania, ponieważ cała baza danych jest używana podczas klasyfikacji. Pomimo swojej prostoty, algorytm KNN może być bardzo skuteczny, zwłaszcza w sytuacjach, gdzie klasy są wyraźnie skupione w różnych regionach przestrzeni cech.
Zastosowanie funkcji klasyfikacyjnych
W praktyce, implementacja tych algorytmów w różnych narzędziach programistycznych takich jak MATLAB czy Python jest dość prosta i wiąże się z wykorzystaniem odpowiednich funkcji, takich jak fitclinear(), fitckernel(), fitcsvm(), fitcknn(). Funkcje te umożliwiają szybkie tworzenie modeli klasyfikacyjnych, które po przeszkoleniu mogą być używane do przewidywania klasyfikacji na nowych danych. Zasadniczo, każda z tych funkcji pozwala na dopasowanie modelu na podstawie danych wejściowych, które są reprezentowane przez odpowiednie macierze cech.
Ważnym aspektem pracy z tymi algorytmami jest walidacja krzyżowa, która pozwala na ocenę, jak dobrze model generalizuje na nowych, niewidzianych wcześniej danych. Zastosowanie walidacji krzyżowej (np. K-fold cross-validation) jest dobrą praktyką, ponieważ pozwala uniknąć przeuczenia modelu (ang. overfitting).
Wszystkie te algorytmy, mimo że różnią się w szczegółach matematycznych, mają wspólny cel: dokładnie klasyfikować dane, minimalizując błąd klasyfikacji. Wybór algorytmu zależy od charakterystyki danych, takich jak ich liczba, separowalność czy wymiarowość.
Jak działa klasyfikacja wieloklasowa i jak wykorzystać do niej Classification Learner App w MATLAB?
Klasyfikacja wieloklasowa to proces przypisywania obiektów do jednej z wielu możliwych kategorii, w przeciwieństwie do klasyfikacji binarnej, gdzie są tylko dwie klasy. Przykłady zastosowań to rozpoznawanie różnych typów samochodów na podstawie ich zdjęć, klasyfikacja zwierząt lub diagnozowanie różnych chorób na podstawie danych medycznych. Co istotne, algorytmy wykorzystywane do klasyfikacji binarnej mogą być stosowane także w problemach wieloklasowych, jednak wymagają odpowiedniego dostosowania.
W środowisku MATLAB istnieje specjalna aplikacja — Classification Learner App, dostępna w Statistics and Machine Learning Toolbox, która pozwala na intuicyjne tworzenie modeli klasyfikacyjnych dla problemów zarówno binarnych, jak i wieloklasowych. Użytkownik może zaimportować swój zbiór danych, wybrać spośród szerokiej gamy algorytmów klasyfikacyjnych, przeprowadzić trening modeli oraz porównać ich skuteczność na podstawie walidacji. To narzędzie pozwala szybko wybrać najlepszy model do dalszej analizy.
Przykładem może być zastosowanie Classification Learner App do analizy danych medycznych pochodzących z badania populacji irackiej, dotyczących cukrzycy. W zbiorze znajdują się takie cechy jak poziom cukru we krwi, wiek, płeć, wskaźnik masy ciała czy profil lipidowy. Celem jest klasyfikacja pacjentów do jednej z trzech grup: zdrowi (N), cukrzycy przewidywanej (P) oraz chorzy na cukrzycę (Y).
Proces rozpoczyna się od importu danych do aplikacji i wydzielenia części zbioru na dane testowe (np. 10%). Następnie uruchamiamy automatyczny trening wszystkich dostępnych modeli, które obejmują m.in. drzewa decyzyjne, maszyny wektorów nośnych (SVM), regresję logistyczną, k-najbliższych sąsiadów (KNN), naiwny klasyfikator Bayesa, klasyfikatory zespołowe (ensemble) oraz sieci neuronowe (te ostatnie omówione będą osobno).
W analizowanym przykładzie najlepsze wyniki osiągnął model Fine Tree — drzewo decyzyjne, uzyskując dokładność walidacji na poziomie 98,2%. Warto zaznaczyć, że dokładności klasyfikacji poszczególnych klas (N, P, Y) wyniosły odpowiednio 95,5%, 97,9% i 98,8%, co jest bardzo satysfakcjonujące w zastosowaniach praktycznych. Alternatywnie można również ręcznie wybrać i wytrenować model typu Bagged Trees z grupy klasyfikatorów zespołowych, uzyskując niemal identyczną skuteczność.
Po wytrenowaniu modelu możliwe jest jego zapisanie i eksport do środowiska roboczego MATLAB, co umożliwia dalsze wykorzystanie do klasyfikacji nowych danych. Dzięki temu proces uczenia i oceny modeli jest w pełni powtarzalny i zautomatyzowany.
Klasyfikacja wieloklasowa w MATLAB można realizować również programowo za pomocą wbudowanych funkcji, takich jak fitcknn(), fitcnb() czy fitcecoc(). Każdy z tych algorytmów ma swoje specyficzne wymagania dotyczące formatu danych wejściowych i charakterystyki predyktorów, które należy odpowiednio przygotować. Przykładowo, k-NN wymaga, aby wszystkie predyktory były numeryczne, co często wymaga wstępnej obróbki danych.
Ważne jest, aby rozumieć, że skuteczność klasyfikacji zależy nie tylko od wyboru algorytmu, ale również od jakości danych, ich reprezentatywności i prawidłowej segmentacji na zbiór treningowy i testowy. Należy też mieć na uwadze balans klas – nierównomierne rozłożenie obserwacji w poszczególnych klasach może znacząco wpływać na wyniki klasyfikacji.
Ponadto, podczas pracy z danymi medycznymi, takimi jak w omawianym przykładzie cukrzycy, kluczowe jest zrozumienie, że modele klasyfikacyjne nie powinny być stosowane bezpośrednio jako ostateczne narzędzie diagnostyczne, lecz jako wsparcie dla specjalistów medycznych, pomagając w szybkim wstępnym rozpoznaniu i segregacji pacjentów.
Zastosowanie narzędzi takich jak Classification Learner App pozwala na efektywne eksperymentowanie z różnymi algorytmami i konfiguracjami bez konieczności pisania rozbudowanego kodu, co jest szczególnie cenne dla badaczy i praktyków mniej zaznajomionych z programowaniem. Jednak świadomość ograniczeń każdego modelu i zrozumienie danych pozostają fundamentem skutecznej analizy.

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