02 · Dane · 4 min czytania · aktualizacja
Jak działa SMOTE i czy oversampling naprawdę pomaga przy niezrównoważonych klasach?
W skrócie
SMOTE tworzy syntetyczne przykłady rzadkiej klasy między jej sąsiadami. Przesuwa granicę decyzji podobnie jak wagi klas, ale psuje kalibrację prawdopodobieństw.
Co to jest
Resampling klas to zmiana proporcji klas w zbiorze treningowym, zwykle po to, by rzadka klasa nie ginęła w danych. Losowe nadpróbkowanie (random oversampling) powiela przykłady rzadkiej klasy, podpróbkowanie (undersampling) usuwa część przykładów klasy częstej. SMOTE (Synthetic Minority Over-sampling Technique, Chawla i in., 2002) tworzy nowe, syntetyczne przykłady rzadkiej klasy, interpolując między istniejącymi.
SMOTE stał się jedną z najczęściej cytowanych metod w uczeniu na danych niezrównoważonych. Jego realna przydatność jest jednak przedmiotem dyskusji: w wielu porównaniach daje podobne efekty jak prostsze środki — wagi klas czy przesunięcie progu decyzji.
Intuicja: zamiast kserować te same 30 ankiet osób z rzadką chorobą, SMOTE „dorysowuje” wiarygodnych pacjentów pomiędzy prawdziwymi — o wartościach cech leżących na odcinku między dwoma podobnymi chorymi.
Mechanizm — dlaczego tak działa
Algorytm SMOTE dla każdego nowego przykładu: (1) losuje przykład x z rzadkiej klasy, (2) wybiera losowo jednego z jego k najbliższych sąsiadów z tej samej klasy (zwykle k = 5), (3) tworzy punkt x_new = x + λ·(x_sąsiad − x), gdzie λ jest losowane z przedziału [0, 1]. Nowy punkt leży więc na odcinku między dwoma prawdziwymi przykładami. Powtarza się to aż do uzyskania żądanej proporcji, często 1 : 1.
Dlaczego miałoby to pomagać? Losowe powielanie sprawia, że model widzi te same punkty wiele razy i łatwo się do nich przeucza — zwłaszcza drzewa, które tworzą wtedy bardzo małe liście wokół kopii. SMOTE rozprowadza rzadką klasę na obszar między przykładami, więc region decyzyjny tej klasy staje się szerszy i gładszy.
Ale główny efekt każdego resamplingu jest prostszy: zmienia częstość a priori klas widzianą przez model. Model nauczony na zbiorze 50/50 „wierzy”, że klasa rzadka występuje w połowie przypadków, więc częściej ją przewiduje. To przesuwa granicę decyzji — dokładnie to samo, co robią wagi klas w funkcji straty albo obniżenie progu. Zdolność modelu do porządkowania przypadków od najmniej do najbardziej prawdopodobnych zwykle zmienia się niewiele.
Koszty i pułapki. Przewidywane prawdopodobieństwa przestają odpowiadać rzeczywistości — model jest systematycznie zbyt pewny rzadkiej klasy (van den Goorbergh i in., 2022). SMOTE interpoluje w przestrzeni cech, więc wymaga sensownej metryki odległości: przy cechach kategorycznych tworzy wartości bez sensu (potrzebny wariant SMOTE-NC), przy nieskalowanych cechach sąsiedztwo wyznacza cecha o największym zakresie. Gdy klasy się nakładają, syntetyczne punkty lądują na terytorium drugiej klasy i dodają szum. Najpoważniejszy błąd praktyczny: wykonanie SMOTE przed podziałem na foldy. Syntetyczne punkty w zbiorze walidacyjnym są wtedy interpolacjami punktów treningowych, a wynik jest zawyżony.
Na przykładzie
Zbiór Breast Cancer Wisconsin ograniczony do 357 guzów łagodnych i 30 losowych złośliwych (7,8%), regresja logistyczna z regularyzacją, 10-krotna walidacja krzyżowa z resamplingiem tylko wewnątrz foldów treningowych, średnia z 20 losowań. SMOTE zaimplementowano zgodnie z opisem Chawli (k = 5) i doprowadzono klasy do równowagi. Bez korekty model przeocza średnio 6,9 z 30 złośliwych guzów i nie daje prawie żadnych fałszywych alarmów. Z SMOTE przeocza 2,0 i daje 4,1 fałszywego alarmu; z wagami klas — 1,6 przeoczenia i 5,4 fałszywego alarmu.
Średnia precyzja, mierząca jakość porządkowania, jest praktycznie taka sama: 0,966 bez korekty, 0,970 z wagami i 0,971 z SMOTE. Zmieniła się kalibracja: przeciętne przewidywane prawdopodobieństwo złośliwości dla guzów łagodnych wynosi 2,0% bez korekty, 5,0% po SMOTE i 6,9% z wagami, a wynik Briera pogarsza się z 0,0138 do 0,0154 (SMOTE) i 0,0195 (wagi). SMOTE i wagi przesuwają granicę w podobny sposób; różnice między nimi to ułamki przypadku na fold.
Dane: Breast Cancer Wisconsin (diagnostyka raka piersi)
W praktyce
- Biblioteka imbalanced-learn:
SMOTE(k_neighbors=5),RandomOverSampler,RandomUnderSampler, wariantyBorderlineSMOTE,ADASYN,SMOTENC(cechy kategoryczne). - Zawsze w
imblearn.pipeline.Pipelinerazem z modelem — resampling wykonuje się wtedy tylko podczasfit, na foldzie treningowym. - Cechy skaluj przed SMOTE, bo algorytm korzysta z odległości.
- Porównuj z prostszymi metodami:
class_weight='balanced'i strojeniem progu; wybieraj walidacją krzyżową na właściwej metryce. - Jeśli potrzebne są prawdopodobieństwa, po resamplingu skalibruj model (
CalibratedClassifierCV) lub skoryguj prawdopodobieństwa do prawdziwej częstości klas. - Typowy błąd:
SMOTE().fit_resample(X, y)na całym zbiorze przedtrain_test_split.
Najczęstsze pytania
- Czy SMOTE jest lepszy od wag klas?
- Często daje podobne wyniki. Wagi klas są prostsze, nie tworzą sztucznych danych i nie wymagają metryki odległości. SMOTE bywa pomocny przy modelach, które nie obsługują wag, albo przy drzewach, które przeuczają się na powielonych kopiach.
- Oversampling czy undersampling?
- Undersampling wyrzuca dane, ale przyspiesza uczenie na bardzo dużych zbiorach i bywa skuteczny w zespołach modeli trenowanych na różnych podpróbkach. Oversampling zachowuje wszystkie dane, ale wydłuża trening i zwiększa ryzyko przeuczenia na kopiach.
- Czy resamplować zbiór testowy?
- Nigdy. Zbiór testowy ma odzwierciedlać rzeczywiste proporcje klas, bo na takich danych model będzie działał. Resampling testu zmienia metryki, takie jak precyzja, i daje obraz niezgodny z rzeczywistością.
Źródła
- Chawla N. V., Bowyer K. W., Hall L. O., Kegelmeyer W. P. (2002). „SMOTE: Synthetic Minority Over-sampling Technique”. Journal of Artificial Intelligence Research, 16, 321–357.
- He H., Garcia E. A. (2009). „Learning from Imbalanced Data”. IEEE Transactions on Knowledge and Data Engineering, 21(9), 1263–1284.
- van den Goorbergh R., van Smeden M., Timmerman D., Van Calster B. (2022). „The harm of class imbalance corrections for risk prediction models: illustration and simulation using logistic regression”. Journal of the American Medical Informatics Association, 29(9).
- Fernández A., García S., Galar M., Prati R. C., Krawczyk B., Herrera F. „Learning from Imbalanced Data Sets”. Springer, 2018.
- Dokumentacja imbalanced-learn: Over-sampling, https://imbalanced-learn.org/stable/over_sampling.html