Nowości w SPSS Modeler 18.1 – SMOTE

Start / Blog / Nowości w SPSS Modeler 18.1 – SMOTE

Zgodnie z zapowiedziami z poprzedniego artykułu rozpoczynamy serię artykułów opisujących zaimplementowane w języku Python algorytmy, które pojawiły się w najnowszej wersji narzędzia IBM SPSS Modeler. Na początek algorytm SMOTE.           SMOTE (z ang. Synthetic Minority-class Oversampling Technique) to algorytm służący do balansowania niezrównoważonych próbek danych poprzez zbudowanie sztucznych obserwacji klasy mniejszościowej.

Dlaczego niezrównoważone dane stanowią problem?

Większość algorytmów uczących zakłada zrównoważenie danych. W rzeczywistości nie unikniemy danych niezrównoważonych, chociażby przy detekcji fraudów czy analizie rezygnacji klientów (ang. churn).

Mówimy, że dane są niezrównoważone, gdy mamy do czynienia z wyraźną przewagą występowania jednej klasy nad drugą. Rozważmy klasyczny przypadek binarnej klasyfikacji z niezrównoważonym zbiorem danych na przykładzie detekcji fraudów. Fraud jest zdarzeniem relatywnie rzadkim, ale stanowiącym poważne obciążenie dla biznesu. Przyjmijmy, że 99% naszych obserwacji należy do klasy „Non Fraud”, a 1% do interesującej nas klasy „Fraud”.  Drzewo decyzyjne może nauczyć się, że wszystkie nasze obserwacje należą do klasy większościowej „Nie Fraud” z dokładnością 99%, a  żadna z obserwacji nie zostanie zakwalifikowana jako „Fraud”. Model taki będzie bezużyteczny.

Do tej pory narzędzie IBM SPSS Modeler pozwalało na zrównoważenie obserwacji przy pomocy węzła „Zrównoważenie”, gdzie mogliśmy zredukować liczbę obserwacji klasy większościowej lub rozmnożyć obserwacje klasy mniejszościowej . Przy budowie niektórych modeli (np. Lasów Losowych) można było również odznaczyć możliwość obsługi niezrównoważonych danych.

Zarówno rozmnażanie obserwacji z klasy mniejszościowej, jak i odrzucanie obserwacji z klasy większościowej może mieć negatywny wpływ na jakość modelu predykcyjnego. W tym momencie z pomocą przychodzi nam algorytm SMOTE.

Jak działa algorytm?

Algorytm wyszukuje dla każdej obserwacji P, K najbliższych sąsiadów z klasy. Dla każdego sąsiada wyznacza losowo punkt leżący na odcinku między sąsiadem, a obserwacją P (jeśli potraktujemy odległość między obserwacją P, a sąsiadem jako wektor, to nową –  syntetyczną obserwację otrzymujemy wymnażając wektor przez losową wartość X z przedziału (0;1)). Utworzone w ten sposób punkty dodawane są do zbioru uczącego jako nowe, syntetyczne obserwacje z klasy mniejszościowej, czyli klasy do której należy obserwacja P. Logikę działania algorytmu obrazuje poniższy schemat:

Dzięki algorytmowi SMOTE uzyskujemy obserwacje klasy mniejszościowej, które nie są duplikatami już istniejących obserwacji, co prowadzi do obniżenia prawdopodobieństwa przeuczenia modelu.

Wersje Algorytmu: Regular/Borderline 1/Borderline 2

Ryzyko błędnej klasyfikacji dotyczy przede wszystkim obserwacji znajdujących się na granicy klasy mniejszościowej i większościowej. Dlatego powstały wariacje algorytmu SMOTE: Borderline 1 i Borderline 2. Algorytmy graniczne (Borderline) typują najpierw obserwacje „zagrożone” błędną klasyfikacją i tylko z nich tworzą nowe obserwacje. Obserwacje zagrożone, to takie obserwacje z klasy mniejszościowej, które spośród M najbliższych sąsiadów, mają przynajmniej połowę sąsiadów z klasy większościowej i przynajmniej jednego sąsiada z klasy mniejszościowej.

Na rysunku (a) czerwonymi krzyżykami oznaczono obserwacje z klasy mniejszościowej, na rys. (b) niebieskimi kwadratami oznaczono obserwacje „zagrożone” błędną klasyfikacją, na rys. (c) niebieskimi pustymi kwadratami oznaczono nowe/syntetyczne obserwacje wygenerowane przez algorytm SMOTE.

Algorytm Borderline 1 dla obserwacji zagrożonych z klasy mniejszościowej wyznacza K najbliższych sąsiadów z klasy mniejszościowej i syntetyzuje nowe obserwacje, tak jak klasyczny SMOTE („Regular”).

Algorytm Borderline 2 odróżnia się tym, iż syntetyzowane są nie tylko obserwacje klasy mniejszościowej ale i większościowej. Po wytypowaniu obserwacji zagrożonych, Borderline 2 wyznacza K najbliższych sąsiadów (bez względu na klasę) i syntetyzuje nowe obserwacje jak Regular SMOTE, z tą różnicą, że obserwacje z klasy większościowej wymnażane jest przez zmienną X z przedziału (0; 0,5). W rezultacie otrzymane syntetyczne obserwacje klasy większościowej znajdują się bliżej obserwacji z klasy mniejszościowej, niż większościowej.

Opcje węzła

Węzeł SMOTE możemy znaleźć w palecie węzłów zarówno w zakładce Rekordy, jak i w nowej zakładce Python.

Po otwarciu węzła wskazujemy następujące parametry:

a) Zmienna celu – obsługiwane są wszystkie typy pomiaru zmiennej: flaga, nominalne, porządkowe i jakościowe;

b) Współczynnik próbek syntetycznych – stosunek liczby obserwacji klasy mniejszościowej do liczby obserwacji klasy większościowej. Wartość współczynnika może być ustalona ręcznie z przedziału (0;1> lub automatycznie;

c) Sposób działania algorytmu – Regular, Borderline 1, Borderline 2;

d) Liczbę K -najbliższych sąsiadów do wygenerowania obserwacji syntetycznych;

e) Liczbę M -najbliższych sąsiadów do typowania obserwacji „zagrożonych”;

f) Partycje, które mają być poddane działaniu algorytmu;