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.