Uczenie maszynowe od zera: mapa pojęć i narzędzi

0
83
Rate this post

Od intuicji do definicji: czym jest uczenie maszynowe

Prosta intuicja: z czego „uczy się” model

Uczenie maszynowe to sposób tworzenia programów, w których zamiast ręcznie wypisywać reguły, pozwala się komputerowi nauczyć się wzorców z danych. Model ML to w najprostszej wersji funkcja: przyjmuje dane wejściowe i zwraca przewidywanie, ale jej wnętrze (parametry) nie jest ustawiane ręcznie, tylko dopasowywane na podstawie przykładów.

Jeśli masz tabelę z historią klientów: wiek, dochód, kraj, liczba zakupów i informację, czy zrezygnowali z usługi – model uczy się, jakie kombinacje tych cech prowadzą do rezygnacji. Nie dostaje reguły „jeśli wiek > 40 i liczba zakupów < 3, to…”, tylko wiele wierszy z przykładowymi przypadkami i informacją „co było na końcu”. Algorytm szuka ustawień parametrów, które jak najlepiej tłumaczą zaobserwowane dane.

Kluczowy jest tu związek między danymi wejściowymi (cechami) a wynikiem (etykietą). Jeśli w danych ten związek jest silny i w miarę stabilny w czasie, model ma szansę uogólnić to, czego „nauczył się” na historii, na przyszłe przypadki. Jeśli dane są losowe, sprzeczne lub bardzo mało ich jest, żaden wyrafinowany algorytm nie pomoże.

Uczenie odbywa się poprzez minimalizację błędu. Algorytm patrzy, jak bardzo myli się na danych treningowych, i krok po kroku zmienia parametry modelu, aby ten błąd zmniejszać. Różne algorytmy robią to na różne sposoby, ale idea jest ta sama: znajdź takie ustawienie funkcji, żeby przewidywania były jak najbliżej rzeczywistych wartości.

Uczenie maszynowe a klasyczne programowanie

W klasycznym programowaniu analityk lub developer tworzy reguły: ciągi instrukcji, warunki if-else, pętle, które dokładnie opisują, co program ma zrobić. Logika powstaje w głowie człowieka i jest „wlana” do kodu. To podejście jest świetne, gdy:

  • zasady są jasne i można je zapisać (np. naliczanie VAT, walidacja numeru PESEL),
  • przypadków brzegowych jest niewiele,
  • łatwo jest zdefiniować co jest „poprawnym” wynikiem.

Uczenie maszynowe stosuje się tam, gdzie reguły są niejawne lub tak złożone, że spisanie ich ręcznie byłoby praktycznie niemożliwe. Klasyczny przykład to klasyfikacja maili na „spam” i „nie-spam”. Człowiek nie jest w stanie wypisać wszystkich kombinacji słów, struktur, nagłówków, po których można rozpoznać spam. Jednak dysponując tysiącami oznaczonych maili, model ML może wyciągnąć z nich wspólne wzorce.

Porównanie można zobrazować tak:

CechaKlasyczne programowanieUczenie maszynowe
Źródło logikiReguły wymyślone przez człowiekaWzorce wyuczone z danych
ElastycznośćZmiana wymaga modyfikacji koduZmiana możliwa przez ponowne trenowanie na nowych danych
Przykładowe zastosowaniaObliczanie podatków, walidacja formularzaRozpoznawanie obrazu, przewidywanie zachowań klientów
WymaganiaDobra znajomość procesu biznesowegoDużo jakościowych danych + podstawowa teoria

Granica między tymi światami bywa płynna. Często sensowne jest połączenie: część logiki w regułach (np. walidacje, filtry), a część w modelu ML (np. scoring, priorytetyzacja). Świadomy wybór podejścia na podstawie złożoności zadania i dostępnych danych to ważna kompetencja przy projektowaniu rozwiązań opartych o uczenie maszynowe.

Typy problemów rozwiązywanych przez ML

Większość zadań w uczeniu maszynowym można w praktyce przypisać do kilku kategorii. Zrozumienie, z jakim typem problemu masz do czynienia, pomaga dobrać algorytm, metryki i sposób przygotowania danych.

  • Regresja – przewidywanie liczby (wartości ciągłej).
    • Przykłady: cena mieszkania, prawdopodobieństwo rezygnacji klienta wyrażone w procentach, przewidywana sprzedaż w danym tygodniu.
  • Klasyfikacja – przewidywanie kategorii.
    • Przykłady: czy klient odejdzie (tak/nie), jakie jest prawdopodobne ryzyko kredytowe (niski/średni/wysoki), jaki to gatunek kwiatu.
  • Grupowanie (klasteryzacja) – znajdowanie naturalnych grup w danych bez znanych z góry etykiet.
    • Przykłady: segmentacja klientów według zachowań zakupowych, grupowanie produktów według podobieństwa.
  • Wykrywanie anomalii – wyłapywanie obserwacji „nietypowych”.
    • Przykłady: wykrywanie transakcji fraudowych, błędów w pomiarach, awarii maszyn.
  • Systemy rekomendacyjne – sugerowanie, co użytkownik prawdopodobnie polubi lub kupi.
    • Przykłady: filmy polecane na platformie streamingowej, produkty „podobne do oglądanych”, artykuły „dla Ciebie”.

Wiele złożonych rozwiązań (np. personalizacja oferty) jest w praktyce kombinacją powyższych zadań. Początkujący często chcą zaczynać od systemów rekomendacyjnych czy sieci neuronowych, ale dużo lepiej zrozumieć najpierw regresję i klasyfikację – to one stanowią fundament większości zastosowań.

Gdzie uczenie maszynowe ma sens, a gdzie nie

Uczenie maszynowe ma największą wartość tam, gdzie:

  • jest sporo danych historycznych o dobrym pokryciu problemu,
  • reguły są niejasne, zmienne lub bardzo liczne,
  • niedokładność jest akceptowalna (np. model może się mylić w 5–10% przypadków),
  • zysk z lepszej predykcji przewyższa koszt budowy i utrzymania modelu.

Z kolei klasyczne podejście (ręczne reguły, raporty BI, proste statystyki) bywa lepsze, gdy:

  • problem jest prosty i dobrze rozumiany (np. odrzucanie zamówień bez adresu),
  • danych jest mało lub są słabej jakości,
  • konieczna jest pełna deterministyczność i możliwość wyjaśnienia każdego wyniku co do zasady (np. proste reguły zgodności z przepisami).

Dobrym filtrem jest pytanie: czy ten problem można uczciwie rozwiązać kilkoma jasnymi regułami? Jeśli tak – zaczynaj od reguł. Jeśli nie – dopiero wtedy wchodzi w grę uczenie maszynowe.

Studentka rysuje na białej tablicy schematy bramek logicznych
Źródło: Pexels | Autor: Jeswin Thomas

Kluczowe pojęcia bez żargonu: dane, cechy, etykiety, model

Zbiór danych i obserwacja

Większość praktycznych projektów ML operuje na danych tabelarycznych. Każdy wiersz w tabeli to obserwacja (lub przykład), a każda kolumna to zmienna opisywana również jako cecha. Jeden wiersz może reprezentować np. jednego klienta, zamówienie, transakcję albo jedną godzinę pomiarów z czujnika.

Zbiór danych dzieli się zwykle na trzy części:

  • zbiór treningowy – na nim model się „uczy”, dopasowując parametry,
  • zbiór walidacyjny – na nim dobiera się konfigurację modelu (hiperparametry),
  • zbiór testowy – służy do końcowej, obiektywnej oceny modelu, tak jakby widział te dane po raz pierwszy.

Rozdzielanie danych ma jeden cel: rzetelnie ocenić, jak model radzi sobie na nowych przypadkach. Jeśli użyjesz tych samych danych do nauki i do oceny, możesz mieć złudzenie świetnej jakości, podczas gdy model tak naprawdę tylko „nauczył się na pamięć” przykładów (overfitting).

Cechy (features) i ich typy

Cechy (features) to wszystkie te kolumny, które wykorzystujesz do przewidywania wyniku. To surowiec, z którego model wyciąga wzorce. Jakość i sensowność cech często decyduje o tym, czy model osiągnie dobre wyniki.

Podstawowe typy cech:

  • Numeryczne – liczby, na których można sensownie liczyć (dodawać, uśredniać).
    • Przykłady: wiek, dochód, liczba logowań w ostatnim miesiącu.
  • Kategoryczne – opisują przynależność do grup, a nie wielkość.
    • Przykłady: kraj, typ urządzenia, kanał pozyskania klienta.
  • Tekstowe – długi lub krótki tekst.
    • Przykłady: opis produktu, opinia klienta, tytuł artykułu.
  • Czasowe – daty i czasy.
    • Przykłady: data rejestracji, godzina transakcji, dzień tygodnia.

Różne algorytmy różnie „trawią” te typy. Klasyczne modele liniowe oczekują zwykle cech numerycznych, więc zmienne kategoryczne trzeba zakodować (np. one-hot encoding), a daty rozbić na komponenty (dzień tygodnia, miesiąc, godzina). Drzewa decyzyjne i lasy losowe radzą sobie lepiej z mieszanką typów, ale nadal wymagają sensownego przygotowania.

Dobór cech to inżynieria cech (feature engineering). Przykład: zamiast używać surowej daty pierwszego zakupu, można dodać cechę „liczba dni od pierwszego zakupu do dziś”. Taki opis ma zwykle dużo większą wartość informacyjną dla modelu niż sama data kalendarzowa.

Etykieta (label) i cel modelu

Etykieta (label) to ta kolumna, którą model próbuje przewidzieć. Jest znana w danych historycznych i nieznana dla przyszłych przypadków. Dla problemu przewidywania rezygnacji klienta etykietą będzie np. churned o wartościach 0/1 (nie odszedł/odszedł).

Bardzo ważne jest precyzyjne zdefiniowanie etykiety. Przykład z praktyki: jeśli celem jest przewidywanie, czy klient odejdzie w ciągu najbliższych 3 miesięcy, trzeba jasno ustalić, po ilu dniach bez aktywności uznajesz, że „odszedł” i jaką datę przyjmujesz jako punkt odniesienia. Niejasna definicja prowadzi do rozmytej etykiety, a to z kolei do modelu, który uczy się wzorców z definicji, której nikt do końca nie rozumie.

W uczeniu nadzorowanym relacja jest prosta: cechy → etykieta. W uczeniu nienadzorowanym etykiety nie ma – model ma za zadanie tylko uporządkować lub skompresować dane wejściowe.

Zbiory treningowy, walidacyjny i testowy – po co całe to dzielenie

Minimalny, zdroworozsądkowy podział to:

  • train – ~60–80% danych,
  • validation – ~10–20%,
  • test – ~10–20%.

Dokładne proporcje zależą od wielkości zbioru, ale zasada jest jedna: dane testowe trzymasz „w zamrażarce” aż do końca. Nie zaglądasz do nich przy doborze hyperparametrów czy wyborze cech. W przeciwnym razie grozi ci optymalizacja „pod testy” i utrata wiarygodności oceny.

Przy małych zbiorach stosuje się często walidację krzyżową (cross-validation), która polega na wielokrotnym dzieleniu danych na różne zestawy treningowe i walidacyjne, a potem uśrednianiu wyników. To jeden z najważniejszych mechanizmów obrony przed przypadkowymi fluktuacjami i overfittingiem.

Główne rodziny algorytmów: mapa, nie encyklopedia

Uczenie nadzorowane – gdy znamy odpowiedzi

W uczeniu nadzorowanym każdy przykład w zbiorze treningowym ma formę: (cechy, etykieta). Algorytm ma za zadanie znaleźć funkcję, która dla nowych zestawów cech będzie jak najlepiej przewidywać etykiety. To właśnie tu mieszczą się zadania regresji i klasyfikacji.

Najczęściej spotykane algorytmy:

  • Regresja liniowa – prosty model regresyjny, który zakłada liniową zależność między cechami a wynikiem. Świetny jako punkt odniesienia (baseline).
  • Regresja logistyczna – mimo nazwy, służy do klasyfikacji binarnej (tak/nie). Daje w wyniku prawdopodobieństwo przynależności do klasy „1”.
  • Najczęściej zadawane pytania (FAQ)

    Czym dokładnie różni się uczenie maszynowe od klasycznego programowania?

    W klasycznym programowaniu człowiek zapisuje reguły krok po kroku: jeśli spełniony jest warunek A, zrób B, w innym przypadku zrób C. Logika powstaje w głowie analityka lub developera, a kod jest tylko jej wiernym odwzorowaniem. Taki styl sprawdza się tam, gdzie zasady są jasne, stabilne i dają się wypisać, np. naliczanie podatków czy walidacja formularza.

    W uczeniu maszynowym zamiast ręcznie definiować reguły, dostarczasz przykłady: dane wejściowe i oczekiwane wyniki. Algorytm szuka takich ustawień parametrów modelu, które najlepiej tłumaczą zaobserwowane dane. Logika powstaje więc „z danych”, a nie z kodu. Zmiana zachowania modelu wymaga zwykle nowych danych i ponownego trenowania, a nie przepisywania reguł.

    Kiedy lepiej zastosować uczenie maszynowe, a kiedy proste reguły biznesowe?

    Jeśli problem można uczciwie opisać kilkoma jasnymi regułami, szybciej i taniej będzie użyć klasycznego podejścia. Dotyczy to zadań typu: odrzucanie zamówień bez adresu, wyliczanie prostych wskaźników czy sprawdzanie zgodności z przepisami, gdzie liczy się pełna przewidywalność i łatwość wyjaśnienia każdego wyniku.

    Uczenie maszynowe ma przewagę, gdy reguły są niejawne, bardzo złożone albo zmienne w czasie. Przykład: przewidywanie rezygnacji klientów, scoring ryzyka czy klasyfikacja maili na spam i nie-spam. Jeśli dysponujesz dużą liczbą sensownych danych historycznych, akceptujesz pewien poziom błędu i zysk z lepszej predykcji jest większy niż koszt budowy modelu, wtedy ML jest właściwym narzędziem.

    Jakie są podstawowe typy problemów w uczeniu maszynowym?

    W praktyce większość zadań ML da się przypisać do kilku kategorii:

  • Regresja – przewidywanie liczby, np. ceny mieszkania czy przewidywanej sprzedaży.
  • Klasyfikacja – przewidywanie kategorii, np. czy klient odejdzie (tak/nie), do którego segmentu ryzyka należy.
  • Grupowanie (klasteryzacja) – szukanie naturalnych grup bez etykiet, np. segmentacja klientów po zachowaniach.
  • Wykrywanie anomalii – identyfikacja nietypowych zdarzeń, np. podejrzanych transakcji.
  • Systemy rekomendacyjne – sugerowanie produktów, treści lub ofert dopasowanych do użytkownika.

Dobór algorytmu, metryk i sposobu przygotowania danych zależy od tego, do której z tych kategorii należy Twój problem. Dlatego na starcie kluczowe jest poprawne sformułowanie zadania, a dopiero potem wybór narzędzi.

Co to są cechy (features) i etykiety w uczeniu maszynowym?

Cechy (features) to wszystkie informacje, które model dostaje „na wejściu” i na podstawie których ma coś przewidywać. W typowym zbiorze tabelarycznym każda kolumna opisująca klienta, transakcję czy produkt jest cechą: wiek, kraj, liczba logowań, kanał pozyskania itp. To surowiec, z którego model uczy się wzorców; ich jakość i sensowność często decydują o jakości całego rozwiązania.

Etykiety (labels) to to, co model ma przewidywać. W regresji będzie to np. cena mieszkania, w klasyfikacji – informacja, czy klient odszedł, a w wykrywaniu fraudów – flaga, czy transakcja była oszustwem. Na danych z etykietami model się uczy, porównując swoje przewidywania z rzeczywistością i minimalizując błąd.

Po co dzielić dane na zbiór treningowy, walidacyjny i testowy?

Podział danych ma jeden cel: sprawdzić, czy model faktycznie uogólnia wiedzę, a nie tylko „uczy się na pamięć” przykładów. Zbiór treningowy służy do dopasowania parametrów modelu, czyli właściwej nauki. Zbiór walidacyjny wykorzystuje się do doboru konfiguracji (hiperparametrów), np. głębokości drzewa czy współczynnika regularyzacji.

Zbiór testowy trzymany jest „na boku” aż do końca i służy do ostatecznej, obiektywnej oceny. Model nie powinien w żaden sposób „widzieć” tych danych wcześniej. Jeśli użyjesz tych samych danych jednocześnie do trenowania i oceny, ryzykujesz overfitting, czyli złudzenie wysokiej jakości, która nie powtórzy się na nowych przypadkach.

Jakiego typu dane są potrzebne, żeby uczenie maszynowe miało sens?

Najważniejsze są trzy rzeczy: ilość, jakość i pokrycie problemu. Model potrzebuje wystarczająco wielu przykładów, aby wychwycić stabilne wzorce; jeśli danych jest garstka, wynik będzie losowy, niezależnie od tego, jak zaawansowany algorytm zastosujesz. Dane muszą też być spójne i sensowne – dużo szumu, błędów i braków zwykle daje więcej szkody niż pożytku.

Istotne jest także to, czy dane faktycznie „zawierają” informację potrzebną do rozwiązania problemu. Jeśli próbujesz przewidywać rezygnację klienta, ale masz tylko jego wiek i kraj, bez historii zachowań, to model będzie zgadywał. Dopiero bogatszy zestaw cech – np. liczba logowań, rodzaj używanych funkcji, historia płatności – daje realną szansę na użyteczną predykcję.

Od czego zacząć naukę uczenia maszynowego od zera?

Najrozsądniej jest zacząć od zrozumienia prostych modeli regresji i klasyfikacji na danych tabelarycznych. W praktyce oznacza to: nauczyć się, jak przygotować zbiór danych (cechy i etykiety), jak go podzielić na trening/walidację/test i jak oceniać jakość modelu przy pomocy podstawowych metryk (np. accuracy, precision/recall, MSE).

Sieci neuronowe czy systemy rekomendacyjne bywają atrakcyjne na prezentacjach, ale bez solidnych fundamentów szybko stają się czarną skrzynką. Jeśli opanujesz proste modele i umiesz świadomie zdecydować, czy w ogóle ML jest potrzebne w danym zadaniu, dalsza nauka bardziej zaawansowanych technik będzie dużo łatwiejsza i bardziej praktyczna.