ML Atlas

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, warianty BorderlineSMOTE, ADASYN, SMOTENC (cechy kategoryczne).
  • Zawsze w imblearn.pipeline.Pipeline razem z modelem — resampling wykonuje się wtedy tylko podczas fit, 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 przed train_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

Zobacz też