Nowości w SPSS Modeler 18.1 – SVM z jedną klasą

Start / Blog / Nowości w SPSS Modeler 18.1 – SVM z jedną klasą

Kolejnym algorytmem, który pojawił się w SPSS Modeler 18.1, a który postanowiliśmy Państwu przybliżyć jest metoda wektorów nośnych (ang. Support Vector Machines) z jedną klasą. Algorytm ten może służyć do wykrywania anomalii i detekcji nowości w zbiorze danych, co znajduje swe praktyczne zastosowanie m.in. przy wykrywaniu zmian treści internetowych, fraudów, różnic na zdjęciach satelitarnych, czy monitorowaniu pracy maszyn.

Czym jest wykrywanie anomalii?

Idea stojąca za wykrywaniem anomalii, polega na nauczeniu modelu, czym jest norma, a następnie weryfikacji, czy nowe obserwacje mieszczą się w tak określonej normie.
Zazwyczaj, gdy próbujemy zbudować model przewidujący jakieś zdarzenie, bierzemy przypadki jego wystąpienia i modelujemy czynniki, które mają na to zdarzenie wpływ (np. odejście klienta lub fraud). Są jednak przypadki, gdy zdarzenie, które chcemy przewidzieć nigdy się jeszcze nie wydarzyło, pojawia się niezwykle rzadko lub jest zbyt kosztowne aby je odtworzyć na potrzeby budowy modelu. Za przykład niech posłuży nienagannie pracujący ciężki sprzęt fabryczny, który generuje duży zbiór danych, zawierających obserwacje wskazujące nam, czym są normalne warunki pracy. Na podstawie tych danych uczymy model, czym jest „stan normalny” i przy pomocy tego modelu oceniamy nowe obserwacje. Każda obserwacja niepasująca do stworzonego modelu zostaje oznaczana, jako anomalia. W ten sposób możemy przewidzieć zbliżającą się awarię.

Czym jest SVM z jedną klasą?

Algorytm SVM (z ang. Support Vector Machine – metoda wektorów nośnych) to technika klasyfikacji mająca na celu wyznaczenie hiperpłaszczyzny rozdzielającej obserwacje dwóch klas z możliwie szerokim marginesem. Nadaje się do analizowania danych z dużą liczbą predyktorów i znajduje zastosowanie np. przy zarządzaniu relacjami z klientami (CRM), czy rozpoznawaniu cech biometrycznych. Algorytm mapuje obserwacje na wielowymiarową przestrzeń, umożliwiając w ten sposób rozdzielenie klas hiperpłaszczyzną.

Algorytm SVM z jedną klasą odróżnia się tym, że uczony jest na danych tylko z jedną klasą, co oznacza, że nie występuje zmienna celu. Algorytm wyznacza miękką granicę (ang. soft boundary) klasyfikacji, której używa do określenia czy nowa obserwacja mieści się w normie czy jest anormalna. Dodatkowo, obliczana jest też odległość od miękkiej granicy.
Poniżej przykład klasyfikacji algorytmem SVM z jedną klasą. Kolorem białym oznaczono obserwacje treningowe, niebieskim nowe obserwacje „normalne”, żółtym nowe obserwacje „anormalne”.

Źródło: http://scikit-learn.org/stable/auto_examples/svm/plot_oneclass.html

Opcje Węzła SVM z jedną klasą w SPSS Modeler 18.1.

Węzeł SVM z jedną klasą możemy znaleźć w palecie węzłów zarówno w zakładce Modelowanie, jak i w nowej zakładce Python. W zakładce Zaawansowane mamy do wyboru tryby: Prosty i Zaawansowany.

Tryb prosty domyślnie używa jądra RBF (sieć radialna). W trybie prostym możemy określić wielkość pamięci podręcznej jądra, która wpływa na czas potrzebny na wykonanie algorytmu. Maksymalnie pamięć można zwiększyć do 2000MB, co wynika z ograniczeń biblioteki scikit-learn. Użytkownik może też odznaczyć opcję Grid Search. Grid Search typuje parametry modelu z siatki, dla każdej kombinacji wylicza model, testuje i wyznacza najlepszy zestaw parametrów. Opcji tej należy używać jedynie do dostrojenia modelu, gdyż znacząco zwiększa zużycie zasobów i wydłuża czas budowania modelu.

W trybie zaawansowanym mamy znacznie szerszą paletę parametrów. Pierwszy z nich to Precyzja regresji (nu), czyli odsetek obserwacji które podejrzewamy o bycie nietypowymi. Jeżeli podejrzewamy, że 10% obserwacji będzie zawierać anomalie, wtedy parametr nu przyjmuje wartość 0,1. Przy takim ustawieniu powstanie model, który 90% obserwacji zaklasyfikuje jako normalne, natomiast pozostałe 10% będzie traktowane jako obserwacje nietypowe. Jeżeli szacowany przez nas odsetek obserwacji odstających jest znacząco różny od stanu faktycznego, zbudujemy model zbyt ogólny lub zbyt dopasowany.

Następnie należy określić typ jądra, którego użyje algorytm do transformacji obserwacji do wyższej przestrzeni. Dostępne typy to RBF (domyślny), Wielomianowe, Sigmoidalne, Liniowe i Wstępnie Obliczone. RBF uznawany jest za bardzo skuteczny, zaleca się natomiast ostrożność przy wyborze opcji „Wstępnie Obliczone” – w tym przypadku wymagany jest symetryczny zbiór danych, w którym liczba kolumn powinna odpowiadać liczbie wierszy.

Kolejny parametr to Gamma. Dostępny jest po wybraniu jądra RBF, Wielomianowego i Sigmoidalnego. Im wyższa Gamma, tym dane treningowe lepiej pasują do modelu. Im niższa, tym granica między stanem normalnym, a anormalnym jest bardziej wygładzona, a model mniej wrażliwy na zmianę danych. Rekomenduje się rozpoczęcie poszukiwań właściwej wartości Gamma od ilorazu 1/(liczba zmiennych opisujących obserwację), a następnie zmienianie tej wartości wykładniczo. Zaleca się ustalenie parametru Gamma na jak najniższym poziomie.

Opcja Używaj heurystyki z redukcją może przyspieszyć tworzenie modelu, gdyż korzysta z algorytmu redukcji zmiennych nieprzydatnych przy tworzeniu modelu.

SPSS Modeler prezentuje zbudowany model graficznie. Ustawienia wykresu znajdują się w zakładce Opcje węzła SVM z jedną klasą.

Odznaczenie opcji „włącz wyniki graficzne” skróci czas budowy modelu. Wyniki modelu prezentowane są w formie grafiki współrzędnych równoległych. W przypadku gdy wartości niektórych kolumn są znacznie większe od pozostałych, utrudnia to odczytanie wykresu. Remedium stanowi opcja „Niezależne opcje pionowe”. W celu uzyskania wspólnej skali na wszystkich osiach pionowych, należy natomiast zaznaczyć opcję „ogólne osie pionowe”.

Użytkownik może także wskazać maksymalną liczba linii w grafice (liczba obserwacji, dla których narysowany zostanie wykres – domyślnie 100), a także które kolumny wyświetlić na wykresie zaznaczając opcję „Zmienne niestandardowe do wyświetlenia”. Ze względów wydajnościowych przy tej opcji na wykresie może znaleźć się maksymalnie 20 kolumn.

Na koniec jedna uwaga praktyczna. Chociaż model SVM z jedną klasą może być uczony na zbiorze zawierającym anomalie, to doświadczenie pokazuje, że lepiej podzielić zbiór danych na cześć treningową zawierająca jedynie obserwacje „stanu normalnego” i przygotowany w ten sposób model użyć do oceny nowego zbioru danych zawierającego potencjalne anomalie.