Maszyna wektorów nośnych (SVM) to potężny algorytm uczenia maszynowego używany do zadań klasyfikacji liniowej i nieliniowej, regresji, a nawet wykrywania wartości odstających. Maszyny SVM można wykorzystywać do różnych zadań, takich jak klasyfikacja tekstu, klasyfikacja obrazów, wykrywanie spamu, identyfikacja pisma ręcznego, analiza ekspresji genów, wykrywanie twarzy i wykrywanie anomalii. Maszyny SVM można przystosować i są wydajne w różnych zastosowaniach, ponieważ potrafią zarządzać danymi wielowymiarowymi i relacjami nieliniowymi.
Algorytmy SVM są bardzo skuteczne, gdy próbujemy znaleźć maksymalną hiperpłaszczyznę oddzielającą pomiędzy różnymi klasami dostępnymi w obiekcie docelowym.
regexp_like w mysql
Maszyna wektorów nośnych
Maszyna wektorów nośnych (SVM) to: nadzorowane uczenie maszynowe algorytm używany zarówno do klasyfikacji, jak i regresji. Chociaż mówimy również o problemach regresyjnych, najlepiej nadają się one do klasyfikacji. Głównym celem algorytmu SVM jest znalezienie optymalnej hiperpłaszczyzny w przestrzeni N-wymiarowej, która może oddzielić punkty danych w różnych klasach w przestrzeni cech. Hiperpłaszczyzna stara się, aby margines między najbliższymi punktami różnych klas był jak maksymalny. Wymiar hiperpłaszczyzny zależy od liczby cech. Jeśli liczba cech wejściowych wynosi dwa, wówczas hiperpłaszczyzna jest po prostu linią. Jeśli liczba obiektów wejściowych wynosi trzy, wówczas hiperpłaszczyzna staje się płaszczyzną 2-D. Trudno sobie wyobrazić, gdy liczba funkcji przekracza trzy.
Rozważmy dwie niezależne zmienne x1, X2,i jedną zmienną zależną, którą jest albo niebieskie kółko, albo czerwone kółko.

Liniowo separowane punkty danych
Z powyższego rysunku jasno wynika, że istnieje wiele linii (nasza hiperpłaszczyzna jest tutaj linią, ponieważ rozważamy tylko dwie cechy wejściowe x1, X2), które segregują nasze punkty danych lub dokonują klasyfikacji pomiędzy czerwonymi i niebieskimi okręgami. Jak więc wybrać najlepszą linię lub ogólnie najlepszą hiperpłaszczyznę, która segreguje nasze punkty danych?
Jak działa SVM?
Rozsądnym wyborem najlepszej hiperpłaszczyzny jest ta, która reprezentuje największą separację lub margines między dwiema klasami.

Wiele hiperpłaszczyzn oddziela dane od dwóch klas
Wybieramy zatem hiperpłaszczyznę, której odległość od niej do najbliższego punktu danych po każdej stronie jest maksymalna. Jeśli taka hiperpłaszczyzna istnieje, nazywa się ją hiperpłaszczyzna/twardy margines z maksymalnym marginesem . Zatem z powyższego rysunku wybieramy L2. Rozważmy scenariusz pokazany poniżej

Wybieranie hiperpłaszczyzny dla danych z wartością odstającą
Tutaj mamy jedną niebieską kulę w granicy czerwonej kuli. Jak zatem SVM klasyfikuje dane? To proste! Niebieska kula znajdująca się na granicy czerwonych jest odstającą kulką niebieską. Algorytm SVM ma tę cechę, że ignoruje wartość odstającą i znajduje najlepszą hiperpłaszczyznę, która maksymalizuje margines. SVM jest odporny na wartości odstające.

Hyperplane, który jest najbardziej zoptymalizowany
Zatem w przypadku tego typu punktu danych SVM znajduje maksymalny margines, podobnie jak w przypadku poprzednich zestawów danych, a także dodaje karę za każdym razem, gdy punkt przekroczy margines. Tak nazywane są marginesy w tego typu przypadkach miękkie marginesy . Gdy w zestawie danych występuje miękki margines, SVM próbuje go zminimalizować (1/marża+∧(∑kara)) . Utrata zawiasów jest powszechnie stosowaną karą. Jeśli nie ma naruszeń, nie ma utraty zawiasów. W przypadku naruszeń utrata zawiasów jest proporcjonalna do odległości naruszenia.
Do tej pory mówiliśmy o danych separowalnych liniowo (grupę kulek niebieskich i kulek czerwonych można oddzielić linią prostą/linią liniową). Co zrobić, jeśli danych nie można liniowo oddzielić?

Oryginalny zbiór danych 1D do klasyfikacji
Powiedzmy, że nasze dane pokazano na powyższym rysunku. SVM rozwiązuje ten problem, tworząc nową zmienną za pomocą a jądro . Nazywamy punkt xIna linii i tworzymy nową zmienną yIjako funkcję odległości od początku o. więc jeśli to wykreślimy, otrzymamy coś takiego, jak pokazano poniżej
pytania do rozmowy kwalifikacyjnej w języku Java

Mapowanie danych 1D na 2D, aby móc oddzielić dwie klasy
W tym przypadku nowa zmienna y tworzona jest jako funkcja odległości od początku. Funkcja nieliniowa tworząca nową zmienną nazywana jest jądrem.
Terminologia dotycząca maszyn wektorowych
- Hiperpłaszczyzna: Hiperpłaszczyzna to granica decyzyjna używana do oddzielania punktów danych różnych klas w przestrzeni cech. W przypadku klasyfikacji liniowych będzie to równanie liniowe, tj. wx+b = 0. Wektory podporowe: Wektory podporowe to punkty danych znajdujące się najbliżej hiperpłaszczyzny, co odgrywa kluczową rolę w podejmowaniu decyzji o hiperpłaszczyźnie i marginesie. Margines: Margines to odległość między wektorem nośnym a hiperpłaszczyzną. Głównym celem algorytmu maszyny wektorów nośnych jest maksymalizacja marginesu. Szerszy margines wskazuje na lepszą wydajność klasyfikacji. Jądro: Jądro jest funkcją matematyczną używaną w SVM do mapowania oryginalnych punktów danych wejściowych na wielowymiarowe przestrzenie cech, dzięki czemu można łatwo znaleźć hiperpłaszczyznę, nawet jeśli punkty danych nie są liniowo separowalne w oryginalnej przestrzeni wejściowej. Niektóre z typowych funkcji jądra to liniowa, wielomianowa, radialna funkcja bazowa (RBF) i sigmoida. Twardy margines: Hiperpłaszczyzna maksymalnego marginesu lub hiperpłaszczyzna twardego marginesu to hiperpłaszczyzna, która prawidłowo oddziela punkty danych różnych kategorii bez żadnych błędnych klasyfikacji. Miękki margines: Gdy danych nie można idealnie rozdzielić lub zawierają wartości odstające, SVM pozwala na zastosowanie techniki miękkiego marginesu. Każdy punkt danych ma zmienną luzu wprowadzoną przez formułę SVM z miękką marżą, która łagodzi rygorystyczne wymagania dotyczące depozytu zabezpieczającego i pozwala na pewne błędne klasyfikacje lub naruszenia. Odkrywa kompromis pomiędzy zwiększeniem marży a ograniczeniem naruszeń.C: Maksymalizacja marży i kary za błędną klasyfikację są równoważone przez parametr regularyzacji C w SVM. O karze za przekroczenie marginesu lub błędną klasyfikację danych decyduje ona. Nakładana jest bardziej rygorystyczna kara z większą wartością C, co skutkuje mniejszym marginesem i być może mniejszą liczbą błędnych klasyfikacji. Strata zawiasów: Typową funkcją straty w maszynach SVM jest utrata zawiasów. Karze nieprawidłowe klasyfikacje lub naruszenia marży. Funkcja celu w SVM jest często tworzona przez połączenie jej ze składnikiem regularyzacji. Problem podwójny: Do rozwiązania SVM można zastosować podwójny problem problemu optymalizacji, który wymaga zlokalizowania mnożników Lagrange'a związanych z wektorami wsparcia. Podwójna formuła umożliwia zastosowanie sztuczek jądra i bardziej efektywne przetwarzanie.
Intuicja matematyczna maszyny wektorów nośnych
Rozważmy problem klasyfikacji binarnej z dwiema klasami oznaczonymi jako +1 i -1. Mamy zbiór danych szkoleniowych składający się z wejściowych wektorów cech X i odpowiadających im etykiet klas Y.
Równanie liniowej hiperpłaszczyzny można zapisać jako:
Wektor W reprezentuje wektor normalny do hiperpłaszczyzny. tj. kierunek prostopadły do hiperpłaszczyzny. Parametr B w równaniu reprezentuje przesunięcie lub odległość hiperpłaszczyzny od początku wzdłuż wektora normalnego w .
Odległość między punktem danych x_i a granicą decyzyjną można obliczyć jako:
gdzie ||w|| reprezentuje normę euklidesową wektora wagi w . Norma euklidesowawektora normalnego W
Dla klasyfikatora liniowego SVM:
Optymalizacja:
- Dla liniowego klasyfikatora SVM z twardym marginesem:
alternatywa dla xamppa
Zmienna docelowa lub etykieta dla itinstancja ucząca jest oznaczona symbolem tIw tym oświadczeniu. Oraz TI=-1 dla zdarzeń negatywnych (kiedy yI= 0) i tI=1 pozytywne przypadki (kiedy yI= 1). Ponieważ wymagamy granicy decyzyjnej spełniającej ograniczenie:
- Dla liniowego klasyfikatora SVM z miękkim marginesem:
- Problem podwójny: Do rozwiązania SVM można zastosować podwójny problem problemu optymalizacji, który wymaga zlokalizowania mnożników Lagrange'a związanych z wektorami nośnymi. Optymalne mnożniki Lagrange'a α(i), które maksymalizują następującą podwójną funkcję celu
Gdzie,
- AIjest mnożnikiem Lagrange'a powiązanym z i-tą próbą treningową.
- K(xI, XJ) to funkcja jądra, która oblicza podobieństwo między dwiema próbkami xIi xJ. Umożliwia SVM radzenie sobie z nieliniowymi problemami klasyfikacji poprzez pośrednie mapowanie próbek w wielowymiarową przestrzeń cech.
- Termin ∑αIreprezentuje sumę wszystkich mnożników Lagrange'a.
Granicę decyzyjną SVM można opisać za pomocą optymalnych mnożników Lagrange'a i wektorów wsparcia po rozwiązaniu problemu podwójnego i odkryciu optymalnych mnożników Lagrange'a. Próbki szkoleniowe, które mają i> 0, są wektorami wsparcia, natomiast granicę decyzyjną wyznacza:
Rodzaje maszyn wektorów nośnych
W zależności od charakteru granicy decyzyjnej maszyny wektorów nośnych (SVM) można podzielić na dwie główne części:
- Liniowy SVM: Liniowy SVM wykorzystuje liniową granicę decyzyjną do oddzielania punktów danych różnych klas. Gdy dane można precyzyjnie oddzielić liniowo, bardzo odpowiednie są liniowe maszyny SVM. Oznacza to, że pojedyncza linia prosta (w 2D) lub hiperpłaszczyzna (w wyższych wymiarach) może całkowicie podzielić punkty danych na odpowiadające im klasy. Granicą decyzyjną jest hiperpłaszczyzna maksymalizująca margines pomiędzy klasami. Nieliniowy SVM: Nieliniowy SVM może być użyty do klasyfikacji danych, gdy nie można ich rozdzielić linią prostą na dwie klasy (w przypadku 2D). Korzystając z funkcji jądra, nieliniowe maszyny SVM mogą obsługiwać nieliniowo separowane dane. Oryginalne dane wejściowe są przekształcane przez te funkcje jądra w wielowymiarową przestrzeń cech, w której punkty danych można liniowo oddzielić. Liniowa SVM służy do zlokalizowania nieliniowej granicy decyzyjnej w tej zmodyfikowanej przestrzeni.
Popularne funkcje jądra w SVM
Jądro SVM to funkcja, która pobiera niskowymiarową przestrzeń wejściową i przekształca ją w przestrzeń wyżej wymiarową, tj. przekształca problemy nierozdzielne w problemy rozłączne. Jest to przydatne głównie w przypadku problemów z separacją nieliniową. Mówiąc najprościej, jądro wykonuje niezwykle złożone transformacje danych, a następnie znajduje proces oddzielania danych w oparciu o zdefiniowane etykiety lub dane wyjściowe.
Zalety SVM
- Skuteczny w przypadkach wielowymiarowych.
- Jego pamięć jest wydajna, ponieważ wykorzystuje podzbiór punktów szkoleniowych w funkcji decyzyjnej, zwanych wektorami wsparcia.
- Dla funkcji decyzyjnych można określić różne funkcje jądra i możliwe jest określenie jąder niestandardowych.
Implementacja SVM w Pythonie
Przewiduj, czy rak jest łagodny, czy złośliwy. Korzystanie z danych historycznych o pacjentach, u których zdiagnozowano nowotwór, umożliwia lekarzom różnicowanie przypadków złośliwych i nadawanie łagodnym cechom niezależnych cech.
Kroki
- Załaduj zestaw danych dotyczących raka piersi ze sklearn.datasets
- Oddzielne cechy wejściowe i zmienne docelowe.
- Kompiluj i trenuj klasyfikatory SVM przy użyciu jądra RBF.
- Narysuj wykres punktowy cech wejściowych.
- Wykreśl granicę decyzji.
- Wykreśl granicę decyzji
Python3
# Load the important packages> from> sklearn.datasets> import> load_breast_cancer> import> matplotlib.pyplot as plt> from> sklearn.inspection> import> DecisionBoundaryDisplay> from> sklearn.svm> import> SVC> # Load the datasets> cancer> => load_breast_cancer()> X> => cancer.data[:, :> 2> ]> y> => cancer.target> #Build the model> svm> => SVC(kernel> => 'rbf'> , gamma> => 0.5> , C> => 1.0> )> # Trained the model> svm.fit(X, y)> # Plot Decision Boundary> DecisionBoundaryDisplay.from_estimator(> > svm,> > X,> > response_method> => 'predict'> ,> > cmap> => plt.cm.Spectral,> > alpha> => 0.8> ,> > xlabel> => cancer.feature_names[> 0> ],> > ylabel> => cancer.feature_names[> 1> ],> > )> # Scatter plot> plt.scatter(X[:,> 0> ], X[:,> 1> ],> > c> => y,> > s> => 20> , edgecolors> => 'k'> )> plt.show()> |
>
>
Wyjście :

Klasyfikacje raka piersi z jądrem SVM RBF