Klasyfikacja (uczenie nadzorowane)

Poznaj podstawy klasyfikacji w uczeniu nadzorowanym – od metryk skuteczności po przykłady praktyczne i porównanie algorytmów.
18 kwietnia 2025
blog
Poziom: Średnio zaawansowany

Artykuł przeznaczony dla osób uczących się uczenia maszynowego oraz analityków danych, którzy chcą zrozumieć podstawy klasyfikacji, metryki oceny i popularne algorytmy.

Z tego artykułu dowiesz się

  • Czym jest uczenie nadzorowane i jak działa klasyfikacja w uczeniu maszynowym?
  • Jakie są różnice między metrykami accuracy, precision i recall oraz kiedy je stosować?
  • Jak działają najpopularniejsze algorytmy klasyfikacyjne (drzewa decyzyjne, SVM, k-NN) i jakie mają zalety oraz wady?

Wprowadzenie do uczenia nadzorowanego i klasyfikacji

Uczenie maszynowe (ang. machine learning) to dziedzina sztucznej inteligencji, której celem jest tworzenie modeli potrafiących uczyć się na podstawie danych. Jednym z głównych podejść w uczeniu maszynowym jest uczenie nadzorowane (ang. supervised learning), w którym model uczy się na podstawie zbioru danych zawierającego pary wejściowych przykładów oraz odpowiadających im etykiet (czyli oczekiwanych wyników).

W ramach uczenia nadzorowanego wyróżniamy dwa podstawowe typy zadań: regresję i klasyfikację. Klasyfikacja dotyczy problemów, w których model ma przewidzieć, do której z wcześniej zdefiniowanych kategorii należy dany przykład. Przykładem może być rozpoznawanie wiadomości jako „spam” lub „nie spam” albo przypisanie gatunku do zdjęcia zwierzęcia.

W klasyfikacji model jest „trenowany” na podstawie przykładowych danych, aby nauczyć się wzorców pozwalających na przypisywanie prawidłowych etykiet nowym, nieznanym wcześniej danym. Kluczowe jest więc to, że podczas treningu dostępne są zarówno cechy opisujące dane, jak i przypisane do nich klasy.

Klasyfikacja znajduje zastosowanie w wielu dziedzinach, m.in. w:

  • analizie tekstu – rozpoznawanie tematu dokumentu lub emocji w recenzji,
  • medycynie – diagnozowanie chorób na podstawie objawów,
  • finansach – ocena zdolności kredytowej klienta,
  • informatyce – wykrywanie spamu i złośliwego oprogramowania.

Podstawową cechą klasyfikacji jest to, że wynik modelu to zawsze wybór jednej z kilku (czasem dwóch) możliwych klas. W przypadku problemów binarnych mamy do czynienia z tylko dwiema klasami, np. „tak” lub „nie”, natomiast klasyfikacja wieloklasowa obejmuje więcej możliwości.

Uczenie nadzorowane, a w szczególności klasyfikacja, stanowi fundament wielu rozwiązań wykorzystywanych w codziennym życiu, od filtrów antyspamowych po systemy rekomendacyjne. Zrozumienie zasad działania klasyfikatorów jest kluczowe dla efektywnego projektowania inteligentnych systemów.

Podstawowe pojęcia: zbiór uczący, etykiety i metryki oceny

Uczenie nadzorowane, którego częścią jest klasyfikacja, opiera się na analizie danych, w których każdemu przykładowi przypisana jest znana odpowiedź, zwana etykietą. Dzięki temu model może uczyć się na podstawie już oznaczonych danych i próbować przewidywać etykiety dla nowych, nieznanych przykładów.

Podstawowym elementem procesu klasyfikacji jest zbiór uczący – zestaw danych zawierających obserwacje (np. wiadomości e-mail, obrazy, rekordy pacjentów) wraz z przypisanymi do nich etykietami (np. „spam” lub „nie spam”, „choroba” lub „brak choroby”). Model uczy się na podstawie tego zbioru, starając się znaleźć zależności między cechami wejściowymi a etykietą.

Etykiety są kategoriami, które chcemy przewidywać. W klasyfikacji binarnej mamy dwie możliwe etykiety (np. tak/nie), natomiast w klasyfikacji wieloklasowej – więcej niż dwie (np. kot, pies, ptak). Ich reprezentacja w danych może być tekstowa lub numeryczna, w zależności od potrzeb modelu.

Po wytrenowaniu modelu, jego skuteczność należy ocenić. W tym celu stosuje się różne metryki oceny, które analizują, jak trafne są przewidywania względem rzeczywistych etykiet. Do najważniejszych metryk należą:

  • Dokładność (accuracy) – procent poprawnych przewidywań w stosunku do wszystkich przypadków.
  • Precyzja (precision) – jak wiele spośród przewidzianych pozytywnych przypadków jest rzeczywiście pozytywnych.
  • Czułość (recall) – jak wiele rzeczywistych pozytywnych przypadków zostało poprawnie wykrytych przez model.

Wybór odpowiednich metryk zależy od konkretnego zastosowania i charakteru danych. W kolejnych częściach omówione zostaną szczegółowo ich interpretacje oraz wpływ na ocenę działania klasyfikatora.

Dokładność, precision i recall – jak mierzyć skuteczność klasyfikatora

Ocena jakości modelu klasyfikacyjnego jest kluczowa, by zrozumieć, jak dobrze radzi sobie z przypisywaniem etykiet do nowych danych. Istnieje kilka podstawowych metryk, które służą do oceny skuteczności klasyfikatora. Wśród nich najbardziej popularne to: dokładność (accuracy), precyzja (precision) i czułość (recall). Każda z nich mierzy inny aspekt działania modelu i może być bardziej odpowiednia w zależności od kontekstu problemu. Jeśli chcesz pogłębić swoją wiedzę praktyczną na temat tych metryk i ich zastosowania, sprawdź nasze szkolenie: Klasyfikacja i ocena modeli ML w praktyce.

  • Dokładność (Accuracy) – określa, jaki procent wszystkich przewidywań był poprawny. Sprawdza się dobrze, gdy klasy są zrównoważone.
  • Precyzja (Precision) – mierzy, jaki procent przykładów zaklasyfikowanych jako pozytywne rzeczywiście nimi jest. Jest szczególnie ważna, gdy koszt fałszywie pozytywnych wyników jest wysoki.
  • Czułość (Recall) – pokazuje, jaki procent rzeczywistych pozytywnych przypadków został poprawnie wykryty przez model. Przydatna, gdy ważne jest wychwycenie jak największej liczby przypadków pozytywnych.

Przykładowa tabela porównawcza metryk (przy założeniu klasyfikacji binarnej):

Metryka Wzór Opis
Accuracy (TP + TN) / (TP + TN + FP + FN) Ogólny procent poprawnych przewidywań
Precision TP / (TP + FP) Procent trafnych pozytywnych przewidywań
Recall TP / (TP + FN) Procent wykrytych przypadków pozytywnych

Gdzie:

  • TP – True Positives (prawdziwie pozytywne)
  • TN – True Negatives (prawdziwie negatywne)
  • FP – False Positives (fałszywie pozytywne)
  • FN – False Negatives (fałszywie negatywne)

Poniżej prosty przykład w Pythonie z użyciem biblioteki scikit-learn:

from sklearn.metrics import accuracy_score, precision_score, recall_score

y_true = [1, 0, 1, 1, 0, 1, 0]
y_pred = [1, 0, 0, 1, 0, 1, 1]

print("Accuracy:", accuracy_score(y_true, y_pred))
print("Precision:", precision_score(y_true, y_pred))
print("Recall:", recall_score(y_true, y_pred))

W praktyce dobór odpowiedniej metryki zależy od charakterystyki problemu. W przypadku wykrywania rzadkich przypadków (np. chorób, oszustw), większe znaczenie może mieć recall niż accuracy. W kolejnych częściach zostaną zaprezentowane konkretne przypadki użycia metryk oraz strategie ich optymalizacji.

💡 Pro tip: Dobieraj metrykę do kosztów błędów – przy niezbalansowanych danych zamiast accuracy używaj PR AUC i raportuj macierz pomyłek. Zamiast sztywnego progu 0,5 dostrajaj próg pod wybraną metrykę i kalibruj prawdopodobieństwa (Platt lub isotonic).

Najpopularniejsze algorytmy klasyfikacyjne: drzewa decyzyjne, SVM, k-NN

Uczenie nadzorowane wykorzystuje różne algorytmy klasyfikacji, które różnią się podejściem do analizy danych, złożonością obliczeniową oraz skutecznością w zależności od rodzaju problemu. Poniżej przedstawiono trzy najczęściej stosowane metody: drzewa decyzyjne, maszyny wektorów nośnych (SVM) oraz k-NN (k-Nearest Neighbors).

Drzewa decyzyjne

Drzewa decyzyjne to struktury przypominające drzewo, w których każdy węzeł reprezentuje pytanie dotyczące jednej z cech, a każda gałąź – możliwą odpowiedź. Proces klasyfikacji polega na "przechodzeniu" od korzenia do liścia na podstawie wartości cech wejściowych.

  • Zalety: intuicyjne, łatwe do wizualizacji, działają bez potrzeby skalowania danych
  • Zastosowania: systemy wspomagania decyzji, diagnoza medyczna, klasyfikacja klientów
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()
model.fit(X_train, y_train)

Maszyna wektorów nośnych (SVM)

SVM to algorytm, który szuka granicy decyzyjnej maksymalizującej margines między klasami. Może być rozszerzony o jądra (kernel), co pozwala na radzenie sobie z danymi nieliniowymi.

  • Zalety: skuteczny w przestrzeniach wielowymiarowych, dobrze radzi sobie z danymi liniowo separowalnymi
  • Zastosowania: rozpoznawanie obrazów, klasyfikacja tekstu, bioinformatyka
from sklearn.svm import SVC
model = SVC(kernel='linear')
model.fit(X_train, y_train)

k-Nearest Neighbors (k-NN)

Algorytm k-NN klasyfikuje nowy punkt danych na podstawie większościowej klasy jego k najbliższych sąsiadów w przestrzeni cech. Nie wymaga trenowania – cała wiedza jest zawarta w zbiorze danych.

  • Zalety: prosty do zaimplementowania, nie wymaga modelu parametrycznego
  • Zastosowania: rekomendacje produktów, analiza zachowań użytkowników, rozpoznawanie pisma
from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)

Porównanie podstawowych cech

Algorytm Typowy czas działania Wrażliwość na skalowanie Przyjazność interpretacji
Drzewo decyzyjne Niski Niska Wysoka
SVM Średni/Wysoki Wysoka Średnia
k-NN Wysoki (dla predykcji) Wysoka Średnia

Porównanie algorytmów – zalety i wady

W uczeniu nadzorowanym istnieje wiele algorytmów klasyfikacyjnych, z których każdy ma swoje mocne i słabe strony. Wybór odpowiedniego modelu zależy od charakterystyki danych, dostępnych zasobów obliczeniowych oraz wymagań dotyczących interpretowalności i skuteczności. Poniżej przedstawiamy porównanie najczęściej stosowanych algorytmów: drzew decyzyjnych, SVM (maszyny wektorów nośnych) oraz k-NN (k najbliższych sąsiadów).

Algorytm Zalety Wady Typowe zastosowania
Drzewa decyzyjne
  • Łatwe do interpretacji i wizualizacji
  • Minimalne wymagania dotyczące przygotowania danych
  • Dobrze radzą sobie z danymi kategorycznymi
  • Podatne na przeuczenie (overfitting)
  • Niestabilne – małe zmiany w danych mogą prowadzić do różnych drzew
Klasyfikacja klientów, analiza ryzyka kredytowego
SVM
  • Skuteczne w przestrzeniach o dużej liczbie cech
  • Dobrze radzą sobie z problemami liniowo separowalnymi
  • Odporność na przeuczenie (przy odpowiednim doborze parametrów)
  • Wymagają starannego doboru parametrów i funkcji jądra
  • Słabo skalują się przy dużych zbiorach danych
Rozpoznawanie obrazów, klasyfikacja tekstu
k-NN
  • Prosty w implementacji i intuicyjny
  • Nie wymaga uczenia (działa na podstawie całego zbioru treningowego)
  • Wysokie koszty obliczeniowe przy dużych zbiorach danych
  • Wrażliwy na cechy niemające znaczenia (brak wbudowanej selekcji cech)
Rekomendacje produktów, klasyfikacja obrazów

Dla przykładu, poniżej znajduje się uproszczony fragment kodu w Pythonie ilustrujący użycie trzech omawianych algorytmów z wykorzystaniem biblioteki scikit-learn:

from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.neighbors import KNeighborsClassifier

# Przykładowe dane
X_train, y_train = [[0, 1], [1, 1], [0, 0]], [0, 1, 0]

# Inicjalizacja i trenowanie modeli
clf_tree = DecisionTreeClassifier().fit(X_train, y_train)
clf_svm = SVC().fit(X_train, y_train)
clf_knn = KNeighborsClassifier(n_neighbors=3).fit(X_train, y_train)

W praktyce, wybór najlepszego algorytmu zależy od kontekstu zadania, dostępnych danych oraz wymagań użytkownika końcowego. W kolejnych etapach warto testować kilka podejść i wybierać model na podstawie empirycznej skuteczności. Jeśli chcesz pogłębić swoją wiedzę w tym obszarze, sprawdź szkolenie Klasyfikacja (uczenie nadzorowane).

Zastosowanie klasyfikacji w praktyce: przykład rozpoznawania spamu

Jednym z klasycznych i powszechnie znanych zastosowań klasyfikacji jest rozpoznawanie spamu w wiadomościach e-mail. W tym przypadku celem modelu klasyfikacyjnego jest przypisanie wiadomości do jednej z dwóch kategorii: spam lub nie-spam (tzw. ham). To zadanie jest typowym przykładem uczenia nadzorowanego, gdzie algorytm uczy się na podstawie wcześniej oznaczonych wiadomości, czyli takich, które mają przypisaną etykietę: spam lub nie-spam.

W procesie wykrywania spamu, każdy e-mail jest najpierw przetwarzany, a z jego treści wydobywane są istotne cechy, takie jak:

  • obecność konkretnych słów kluczowych (np. „darmowy”, „promocja”, „kliknij tutaj”)
  • częstotliwość występowania linków
  • liczba załączników
  • adres nadawcy (czy pochodzi z zaufanego źródła)

Na tej podstawie klasyfikator podejmuje decyzję, do której kategorii przypisać wiadomość. Poniżej znajduje się uproszczony przykład kodu w Pythonie z użyciem klasyfikatora Naive Bayes oraz biblioteki scikit-learn:

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split

# Przykładowe dane
emails = ["Get cheap meds now", "Meeting tomorrow at 10am", "Win a free iPhone", "Lunch with team"]
labels = [1, 0, 1, 0]  # 1 = spam, 0 = nie-spam

# Przekształcenie tekstu na wektor cech
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(emails)

# Podział na zbiory uczący i testowy
X_train, X_test, y_train, y_test = train_test_split(X, labels, test_size=0.25)

# Trening modelu
model = MultinomialNB()
model.fit(X_train, y_train)

# Przykład predykcji
print(model.predict(X_test))

W praktyce, systemy filtrujące spam wykorzystują znacznie bardziej złożone modele i większe zbiory danych, często uwzględniające setki tysięcy przykładów. Dodatkowo, klasyfikacja spamu musi być stale aktualizowana, ponieważ nadawcy niechcianych wiadomości ciągle zmieniają swoje techniki w celu ominięcia filtrów.

Poniżej przedstawiono krótkie porównanie podstawowych podejść do klasyfikacji spamu:

Metoda Zalety Wady
Naive Bayes Szybki, prosty, dobrze działa dla danych tekstowych Zakłada niezależność cech, co nie zawsze jest prawdą
Drzewa decyzyjne Łatwe do interpretacji, mogą wykrywać nieliniowe zależności Skłonność do przeuczenia przy małej ilości danych
Sieci neuronowe Wysoka skuteczność przy dużej ilości danych Wymagają dużych zasobów i dłuższego czasu uczenia

Rozpoznawanie spamu jest więc doskonałym przykładem praktycznego zastosowania klasyfikacji, który pokazuje, jak złożone dane tekstowe mogą być przekształcane w wartościową informację decyzyjną.

💡 Pro tip: Użyj pipeline’u tekstowego z TF-IDF i n-gramami (ew. lematyzacja, czyszczenie, filtry domen) oraz walidacji czasowej, bo wzorce spamu zmieniają się w czasie. Regularnie aktualizuj model i słowniki/zasady, monitorując precision/recall per źródło oraz drift słów kluczowych.

Wyzwania i dobre praktyki w budowie modeli klasyfikacyjnych

Tworzenie skutecznych modeli klasyfikacyjnych w uczeniu nadzorowanym to proces wymagający dokładności, znajomości danych i odpowiedniego podejścia do inżynierii cech. Wyzwania mogą pojawić się na różnych etapach procesu – od przygotowania danych po ocenę końcowego modelu. Poniżej przedstawiamy najczęstsze trudności oraz sprawdzone praktyki, które pomagają je przezwyciężać.

Najczęstsze wyzwania

  • Nieodpowiednie dane wejściowe: Dane mogą być niekompletne, zawierać błędy lub cechy niemające wartości predykcyjnej. Jakość danych ma bezpośredni wpływ na końcowy wynik klasyfikatora.
  • Niezrównoważone klasy: W wielu przypadkach (np. wykrywanie oszustw) dane są silnie niezbalansowane – jedna klasa dominuje. Może to prowadzić do myląco wysokiej dokładności i słabej skuteczności w wykrywaniu rzadkich przypadków.
  • Przeuczenie (overfitting): Model zbyt dobrze dopasowuje się do danych treningowych, tracąc zdolność generalizacji do nowych danych.
  • Zbyt duża liczba cech: Wysoka liczba zmiennych niezależnych może prowadzić do nadmiarowości lub szumu, co utrudnia naukę i zwiększa ryzyko przeuczenia.
  • Problemy z interpretowalnością: Niektóre modele (np. lasy losowe, sieci neuronowe) mogą być skuteczne, ale trudne do zrozumienia dla użytkowników końcowych lub analityków.

Dobre praktyki

  • Staranna eksploracja danych: Przed rozpoczęciem modelowania należy dobrze poznać dane – zidentyfikować rozkłady cech, brakujące wartości i potencjalne anomalie.
  • Równoważenie zbioru danych: Stosowanie technik takich jak nadpróbkowanie (SMOTE), podpróbkowanie lub modyfikacja wag klas może poprawić wyniki w przypadku niezrównoważonych danych.
  • Walidacja krzyżowa: Zamiast oceny modelu na jednym podziale danych, warto używać k-krotnej walidacji krzyżowej, co zapewnia bardziej wiarygodny obraz skuteczności klasyfikatora.
  • Redukcja wymiarowości: Techniki takie jak PCA lub analiza istotności cech pozwalają ograniczyć liczbę zmiennych, co często przekłada się na lepszą efektywność modelu.
  • Monitorowanie metryk: Wybór odpowiednich miar oceny (np. precision, recall, F1-score) dostosowanych do konkretnego problemu pozwala na rzetelną ocenę skuteczności modelu.
  • Testowanie na danych produkcyjnych: Przed pełnym wdrożeniem modelu warto sprawdzić jego działanie na rzeczywistym strumieniu danych, aby wykryć ewentualne niespójności lub zmiany w rozkładzie danych (drift).

Budowa dobrego klasyfikatora to nie tylko kwestia wyboru algorytmu, ale przede wszystkim rezultat przemyślanego podejścia do danych oraz systematycznego testowania i dostrajania modelu.

💡 Pro tip: Zbuduj powtarzalny pipeline: audyt danych (EDA, imputacja, usuwanie przecieków), stratyfikowana walidacja krzyżowa, równoważenie klas oraz redukcja/regularizacja cech; dostrajaj próg decyzji pod wybraną metrykę zamiast polegać na samej accuracy. Monitoruj drift danych po wdrożeniu i planuj okresowe ponowne trenowanie.

Podsumowanie i kierunki dalszego rozwoju

Uczenie nadzorowane, a zwłaszcza klasyfikacja, jest jedną z najczęściej stosowanych technik w dziedzinie uczenia maszynowego. Polega ono na tworzeniu modeli, które na podstawie danych wejściowych potrafią przewidywać określone etykiety – np. rozpoznawać, czy e-mail jest spamem, czy też nie.

Klasyfikacja znajduje zastosowanie w wielu obszarach życia codziennego i biznesu: od wykrywania oszustw finansowych, przez diagnozowanie chorób, aż po analizę opinii klientów. Jej główną cechą jest to, że działa na danych wejściowych z przypisanymi już etykietami – czyli wymaga tzw. danych oznaczonych.

Na tle innych typów uczenia maszynowego, takich jak uczenie nienadzorowane czy uczenie ze wzmocnieniem, klasyfikacja wyróżnia się jasną strukturą problemu i możliwością precyzyjnej oceny wyników. Różne metody klasyfikacji – od prostych modeli jak k-NN po bardziej złożone jak SVM czy sieci neuronowe – oferują rozmaite podejścia do rozwiązania problemów predykcyjnych.

W miarę jak rośnie dostępność danych i moc obliczeniowa komputerów, pojawiają się nowe wyzwania i możliwości w zakresie klasyfikacji. Należą do nich m.in. klasyfikacja danych tekstowych i obrazowych, problemy zdefiniowane na dużych, niejednorodnych zbiorach danych oraz potrzeba interpretowalności wyników.

W przyszłości rozwój klasyfikacji będzie ściśle powiązany z postępem w dziedzinie obliczeń rozproszonych, przetwarzania języka naturalnego oraz automatyzacji procesu tworzenia modeli (AutoML). Kluczem do sukcesu będzie jednak nie tylko dobór odpowiedniego algorytmu, lecz także jakość danych, sposób ich przetwarzania oraz zrozumienie celu biznesowego.

icon

Formularz kontaktowyContact form

Imię *Name
NazwiskoSurname
Adres e-mail *E-mail address
Telefon *Phone number
UwagiComments