ML Atlas

02 · Dane · 4 min czytania · aktualizacja

Czym jest zbiór treningowy i dlaczego jego proporcje kształtują model?

W skrócie

Zbiór treningowy to przykłady z poprawnymi odpowiedziami, na których model dopasowuje wagi. Model zakłada, że nowe dane mają ten sam rozkład i proporcje klas.

Co to jest

Zbiór treningowy to zestaw przykładów (cechy plus poprawna odpowiedź), na którym algorytm uczący dopasowuje parametry modelu. Model nie wie nic poza tym, co w nim zobaczył: uczy się rozkładu danych treningowych i zakłada, że nowe dane pochodzą z tego samego rozkładu.

To założenie nazywa się i.i.d. (niezależne zmienne o tym samym rozkładzie). Pojęcie jest wspólne dla każdej metody nadzorowanej: sieci neuronowych, drzew, boostingu, dostrajania dużych modeli językowych.

Intuicja: student, który przygotowuje się do egzaminu wyłącznie z zadań z jednego działu, nauczy się tego działu — i będzie zakładał, że egzamin też jest z niego. Model działa tak samo: to, czego nie ma w treningu, dla niego nie istnieje, a to, czego jest dużo, uważa za typowe.

Mechanizm — dlaczego tak działa

Trening minimalizuje stratę na konkretnych przykładach, więc wszystko, co jest w nich regularne — prawdziwe reguły, ale też proporcje klas, szum i przypadkowe korelacje — trafia do wag. Trzy skutki są najważniejsze.

Proporcje klas stają się priorem modelu. Model uczony entropią krzyżową maksymalizuje wiarygodność danych, więc odtwarza częstości: przy 10 przykładach klasy A na 1 przykład klasy B, gdy cechy nie rozstrzygają, opłaca mu się mówić „A” prawie zawsze. Za mało przykładów jednej klasy to brak materiału do nauczenia się jej granicy; same przykłady jednej klasy to model, który tej klasy nigdy nie opuści. Niezbalansowanie szkodzi tym bardziej, im większy stosunek klas i im mniej danych (Buda i in. 2018). Środki zaradcze to wagi klas, nadpróbkowanie rzadkiej klasy lub przesunięcie progu decyzji.

Za mało danych to zgadywanie. Model o pojemności większej niż liczba przykładów dopasuje dowolne etykiety, więc wynik na treningu nic wtedy nie mówi. Liczy się pokrycie przestrzeni cech: kilka czystych, zróżnicowanych przykładów uczy więcej niż wiele powtórzeń tego samego.

Szum etykiet przesuwa granicę. Symetryczny szum poniżej 50% jest przy dużej próbie do pokonania, ale przy kilkunastu przykładach jedna zła etykieta potrafi obrócić granicę decyzji.

Zastrzeżenie: założenie i.i.d. jest kruche. Gdy świat się zmienia (dryf, inna pora roku, inny szpital), model uczony na starym zbiorze traci ważność, a wynik na starej walidacji tego nie pokaże. Osobny problem to wyciek: nic, co model „widział” w treningu, nie może trafić do sprawdzianu — inaczej wynik jest zawyżony (Kaufman i in. 2012).

Na przykładzie

Breast Cancer Wisconsin ma 212 guzów złośliwych i 357 łagodnych. Podzieliłem go 75/25 z warstwowaniem (random_state=0), wystandaryzowałem cechy i trenowałem LogisticRegression, za każdym razem zostawiając w treningu wszystkie 267 guzów łagodnych, ale coraz mniej złośliwych. Test był zawsze ten sam: 53 złośliwe i 90 łagodnych.

Przy pełnych 159 złośliwych model wykrywał 94,3% złośliwych guzów w teście (czułość). Przy 80 — 86,8%, przy 8 — już tylko 75,5%, choć trafność ogólna spadła mniej (z 95,8% do 90,9%), bo łagodnych jest więcej. Średnie przewidywane prawdopodobieństwo złośliwości spadło z 0,38 do 0,28: model przejął nowe proporcje jako prior. Wagi klas (class_weight='balanced') przy 8 złośliwych przywróciły czułość do 86,8% — korekta pomaga, ale nie zastąpi brakujących danych.

Dane: Breast Cancer Wisconsin (diagnostyka raka piersi)

W praktyce

  • scikit-learn: train_test_split(stratify=y) zachowuje proporcje klas w obu częściach; class_weight='balanced' koryguje niezbalansowanie w treningu.
  • Sprawdź y.value_counts() przed treningiem — stosunek klas 1:10 i większy wymaga świadomej decyzji (wagi, próg, metryka BA/AUC zamiast accuracy).
  • Standaryzację, imputację i selekcję cech dopasowuj tylko na treningu (Pipeline), by nie wyciekły do walidacji.
  • W LLM „zbiór treningowy” to korpus pretreningu i zbiory instrukcji; ich proporcje (języki, domeny) stają się priorem modelu dokładnie tak samo.
  • Typowy błąd: dobór danych treningowych „jak było wygodnie” (np. tylko łatwe przypadki) i oczekiwanie, że model poradzi sobie z resztą.

Najczęstsze pytania

Ile danych potrzeba, żeby wytrenować sieć neuronową?
Rzędu liczby wag podzielonej przez akceptowany błąd (reguła Bauma–Hausslera), a w praktyce: tyle, by krzywa uczenia na walidacji przestała rosnąć. Dla małych tabel to setki–tysiące wierszy; dla obrazów i tekstu — miliony, chyba że dostrajasz gotowy model.
Co to jest zbiór treningowy, walidacyjny i testowy?
Treningowy: model dopasowuje na nim wagi. Walidacyjny: model się na nim nie uczy, służy do wyboru hiperparametrów i momentu zatrzymania. Testowy: używany raz, na końcu, do uczciwej oceny. Każda decyzja podjęta na zbiorze „zużywa” go jako miarę.
Co zrobić, gdy jedna klasa jest dużo rzadsza od drugiej?
Mierz balanced accuracy lub AUC zamiast accuracy; w treningu użyj wag klas albo nadpróbkowania rzadkiej klasy; po treningu dobierz próg decyzji na walidacji. Nie stosuj wag i przesuniętego progu naraz bez sprawdzenia — podwójna korekta przesuwa za daleko.

Źródła

  • Goodfellow, Bengio, Courville (2016). Deep Learning, rozdz. 5.1 "Learning algorithms", 5.2 "Capacity, overfitting and underfitting". https://www.deeplearningbook.org/contents/ml.html
  • He, H., Garcia, E. (2009). "Learning from imbalanced data". IEEE TKDE 21(9), 1263–1284. doi:10.1109/TKDE.2008.239
  • Buda, M., Maki, A., Mazurowski, M. (2018). "A systematic study of the class imbalance problem in convolutional neural networks". Neural Networks 106, 249–259. arXiv:1710.05381
  • Kaufman, Rosset, Perlich, Stitelman (2012). "Leakage in data mining: formulation, detection, and avoidance". ACM TKDD 6(4).
  • Baum, E. B., Haussler, D. (1989). "What size net gives valid generalization?". Neural Computation 1(1), 151–160.

Zobacz też