ML Atlas

10 · Praktyka · 4 min czytania · aktualizacja

Jak dobrze sformułować problem uczenia maszynowego?

W skrócie

Formułowanie problemu to decyzja, co dokładnie przewidujemy, na jakich danych dostępnych w chwili predykcji i jaką metryką mierzymy sukces modelu.

Co to jest

Formułowanie problemu (problem framing) to przełożenie potrzeby biznesowej lub naukowej na precyzyjne zadanie uczenia maszynowego: co jest zmienną docelową, jaka jest jednostka obserwacji, które cechy są znane w chwili predykcji, jaki typ wyniku jest potrzebny (klasa, prawdopodobieństwo, ranking, liczba) i jaką metryką ocenimy sukces.

To najtańszy etap projektu i zarazem ten, którego błędy kosztują najwięcej. Model może być technicznie bezbłędny i całkowicie bezużyteczny, jeśli odpowiada na złe pytanie. „Przewidzieć rezygnację klienta” brzmi jasno, dopóki ktoś nie zapyta: rezygnację w jakim horyzoncie, wśród których klientów i co zrobimy z tą informacją?

Mechanizm — dlaczego tak działa

Algorytm optymalizuje dokładnie to, co mu podasz — funkcję straty na wybranej zmiennej docelowej — i nic więcej. Jeśli zmienna docelowa jest tylko przybliżeniem prawdziwego celu (kliknięcia zamiast zadowolenia, aresztowania zamiast przestępczości), model nauczy się przybliżenia ze wszystkimi jego skrzywieniami. To jest uczenie maszynowe w wersji prawa Goodharta: miara, którą optymalizujesz, przestaje dobrze mierzyć to, na czym ci zależało.

Drugie źródło błędów to czas. Każda cecha musi być dostępna w momencie, w którym model będzie podejmował decyzję. Kolumna wypełniana po fakcie (status zwrotu, kod diagnozy wpisany po wypisie) robi z modelu wróżkę w walidacji i bezużyteczne narzędzie w produkcji. To najczęstsza postać wycieku danych i wykrywa się ją pytaniem „kiedy ta wartość powstaje?”, a nie analizą statystyczną.

Trzecia decyzja to typ wyniku. Klasyfikacja „tak/nie” wystarcza, gdy decyzja jest binarna, a koszty błędów stałe. Gdy wynik zasila dalsze obliczenia — wycenę ryzyka, kolejkę priorytetów, próg zmieniany przez biznes — potrzebne jest dobrze skalibrowane prawdopodobieństwo. Te dwa zadania nagradzają różne modele, więc wybór metryki to część definicji problemu, nie szczegół techniczny.

Wreszcie jednostka i populacja: czy przewidujemy dla klienta, transakcji czy sesji, i czy dane uczące pochodzą z tej samej populacji, na której model będzie działał. Jeśli w danych są tylko klienci, którym kiedyś przyznano kredyt, model nie wie nic o tych, którym odmówiono.

Na przykładzie

Titanic, 891 pasażerów, 5-krotna walidacja krzyżowa. Gdy zadanie sformułujemy jako klasyfikację z metryką dokładności, las losowy bez ograniczeń głębokości (81,3%) i gradient boosting (81,5%) wyglądają na równorzędne. Gdy to samo zadanie sformułujemy jako przewidywanie prawdopodobieństwa przeżycia z log-loss, ranking się odwraca: boosting ma log-loss 0,42, a nieograniczony las 0,81 — gorzej niż stała predykcja 38,4% dla wszystkich (0,67). Las zbyt często daje prawdopodobieństwa bliskie 0 lub 1 i kiedy się myli, myli się bardzo pewnie.

Drugi test to pytanie o czas. Zbiór zawiera kolumnę alive („yes”/„no”). Dodanie jej do cech daje regresji logistycznej dokładność 100%. To nie jest sukces, tylko sygnał, że kolumna jest zmienną docelową zapisaną innymi słowami — w chwili „predykcji” nikt by jej nie znał.

Dane: Titanic

W praktyce

  • Zapisz w jednym zdaniu: „Dla [jednostki] w chwili [moment decyzji] przewidujemy [cel] w horyzoncie [okres], żeby [decyzja]”.
  • Dla każdej cechy ustal, kiedy powstaje jej wartość. Wszystko, co powstaje po momencie decyzji, wypada.
  • Dobierz metrykę do decyzji: dokładność lub balanced_accuracy_score dla twardych decyzji, log_loss lub brier_score_loss gdy liczą się prawdopodobieństwa, roc_auc_score gdy liczy się ranking.
  • Zdefiniuj model bazowy jeszcze przed modelowaniem — to on mówi, czy problem w ogóle wymaga ML.
  • Sprawdź, czy dane uczące pochodzą z populacji, na której model będzie działał.
  • Typowy błąd: wybór zmiennej docelowej, bo „akurat jest w bazie”, zamiast tej, która odpowiada decyzji.

Najczęstsze pytania

Klasyfikacja czy regresja — jak wybrać?
Patrz na decyzję, nie na dane. Jeśli liczba (np. dni do odejścia klienta) jest potem progowana do „tak/nie”, często prościej i stabilniej jest od razu klasyfikować. Jeśli wartość liczbowa sama zasila decyzję (wycena, zapas magazynowy), potrzebna jest regresja.
Skąd wiadomo, że cecha powoduje wyciek?
Zapytaj, w którym momencie i przez kogo jest zapisywana. Sygnałem ostrzegawczym jest też podejrzanie wysoka ważność jednej cechy albo wynik walidacji, który bije wszystko, co znane w dziedzinie. Statystyka może wyciek zasugerować, ale rozstrzyga wiedza o procesie powstawania danych.
Czy każdy problem wymaga uczenia maszynowego?
Nie. Jeśli prosta reguła osiąga wynik bliski najlepszemu modelowi (na Titanicu reguła płci daje 78,7% wobec około 81–82% najlepszych modeli), warto rozważyć, czy dodatkowe punkty są warte kosztu utrzymania modelu.

Źródła

  • Provost F., Fawcett T. „Data Science for Business”, O'Reilly 2013, rozdz. 2.
  • Kaufman S., Rosset S., Perlich C., Stitelman O. „Leakage in Data Mining: Formulation, Detection, and Avoidance”, ACM Transactions on Knowledge Discovery from Data 6(4), 2012.
  • Gneiting T., Raftery A. E. „Strictly Proper Scoring Rules, Prediction, and Estimation”, Journal of the American Statistical Association 102(477), 2007.
  • Géron A. „Hands-On Machine Learning”, 3rd ed., O'Reilly 2022, rozdz. 2 (Frame the Problem).

Zobacz też