SVM w Sklearn

SVM w Sklearn
Maszyny wektorowe wsparcia (SVM, znane również jako sieci wsparcia) w uczeniu maszynowym są nadzorowane modele uczenia się z odpowiednimi algorytmami, które oceniają dane do regresji i klasyfikacji. SVM, oparte na statystycznych ramach uczenia się lub teorii VC wydanej przez Chervonenkis i Vapnik, należą do najbardziej niezawodnych technik prognoz (1974). Wdrożenie SVMS w Sklearn, a także jej korzyści i wady, zostanie omówione w tym artykule.

Co to jest SVM?

SVM lub maszyna wektorowa wsparcia to nadzorowana technika uczenia maszynowego do analizy danych w celu regresji i klasyfikacji. Celem algorytmu SVM jest zdefiniowanie optymalnej granicy lub linii decyzyjnej, która może sklasyfikować przestrzeń N-Dimensional, umożliwiając nam szybkie sklasyfikowanie nowych punktów danych. Ta granica decyzji jest znana jako rozrost. Umożliwia to modelowi sortowanie etykietowanego zestawu danych i kategoryzację nieznakowanych danych wejściowych. Jest to jeden z najpopularniejszych nadzorowanych algorytmów uczenia się i jest często używany do klasyfikowania obrazów przy użyciu funkcji odzyskanych przez głęboką konwencjonalną sieć neuronową.

Załóżmy, że masz w swoim artykule kilka liniowych punktów, które są różnych rodzajów. SVM zlokalizuje linię prostą, która, o ile jest to możliwe, dzieli te punkty na dwie kategorie. Wyobraź sobie dwie pary punktów leżących w samolocie. Pierwsze są czerwone, a reszta jest niebieska. Aby zoptymalizować odległość od obu klas punktów, maszyna wektorowa wspornika szuka linii, która dzieli czerwone punkty od niebieskich. Jest to znane jako Największy margines różnicy. Ważne jest, aby zmierzyć odległość od linii do punktów na granicach dwóch punktów, aby określić margines z największą różnicą. Nazywają je jako Wektory wspierające. Punkty muszą być rozdzielone przez linię, ponieważ muszą być oddzielone przez jedną. Termin to jest liniowa rozdzielność. Sztuczka jądra jest kluczowym dodatkiem do algorytmu maszyny wektorowej wsparcia w celu przezwyciężenia tego ograniczenia. To przenosi dane do przestrzeni o wyższej wymiaru i wykorzystuje funkcję liniową do ich segregowania. Przez tak zwane jądro transformacja jest przeprowadzana. Jest to możliwe tylko dlatego, że obliczenia funkcji liniowej w celu oddzielenia danych zależy od produktu DOT wektorów wsparcia. Mówiąc wprost: Aby zapobiec użyciu linii do podzielenia czerwieni z niebieskich punktów, wymieszaj je w płaszczyźnie.

Podnieś czerwone, pozostawiając niebieskie za sobą. Teraz jest oczywiste, że możesz oddzielić punkty za pomocą płaszczyzny. Technika jądra to osiąga. Zmienia dane w wyższym wymiarze, aby prawdopodobnie być liniowo rozdzielone. Podnoszenie dodało trzeci wymiar (trzy wymiary), który oddzielił punkty linią w trzech wymiarach, płaszczyznę, podczas gdy punkty na podłodze (dwa wymiary) nie były.

Zalety SVM

  1. W przestrzeni o wysokości wymiarowej bardziej skuteczne jest wystarczająco dobrze użycie ich pamięci.
  2. Odpowiednie dla klas o wyraźnych marginesach rozróżnienia. Dodatkowo skuteczne, gdy wielkości próbek przekraczają ogólne wymiary.

Wady SVM

  1. Gdy całkowite cechy każdego punktu danych są większe niż próbki danych szkoleniowych, nie działa dobrze. Ponadto jego technika nie jest odpowiednia dla większych zestawów danych.
  2. Zestaw danych zaczyna się opóźniać, gdy klasy docelowe nakładają się na siebie lub występuje więcej szumów. Dodatkowo klasyfikacja wytwarzana przez klasyfikator wektora wsparcia nie ma probabilistycznego uzasadnienia.

Wdrożenie SVM w Sklearn

Importowanie bibliotek
ze Sklearn.Zestawy danych importuj Make_classification
ze sklearn import SVM
Tworzenie zestawu danych
X, y = Make_classification (Random_State = 42)
print („Dane pociągu to”, x)
print („Dane testowe to”, y)

Wyjście

Dane pociągu to [[-2.02514259 0.0291022 -0.47494531… -0.33450124 0.86575519
-1.20029641]
[1.61371127 0.65992405 -0.15005559… 1.37570681 0.70117274
-0.2975635]
[0.16645221 0.95057302 1.42050425… 1.18901653 -0.55547712
-0.63738713]

[-0.03955515 -1.60499282 0.22213377… -0.30917212 -0.46227529
-0.43449623]
[1.08589557 1.2031659 -0.6095122… -0.3052247 -1.31183623
-1.06511366]
[-0.00607091 1.30857636 -0.17495976… 0.99204235 0.32169781
-0.66809045]]
Dane testowe to [0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0
0 1 1 1 0 1 0 1 1 0 0 1 1 1 0 1 0 0 1 1 0 1 1 1 1 0 1 0 0 1 0 1 0 1 0
1 1 1 0 0 0 1 0 1 0 1 1 1 1 1 0 0 1 0 1 1 0 1 1 0 0]
Tworzenie modelu SVM
Model = SVM.Svc ()
Model.Fit (x, y)
Drukuj („Wektory wsparcia są”, model.support_vectors_)
Drukuj („indeksy dla wektorów wsparcia to”, model.wsparcie_)

Wyjście

Wektory wsparcia to [[-2.02514259 0.0291022 -0.47494531… -0.33450124 0.86575519
-1.20029641]
[0.17989415 -0.22210005 0.10537551… -0.96834445 -0.22463315
0.5500521]
[-1.22576566 0.80742726 0.65232288… 0.88365994 -0.03850847
-0.1726273]

[0.2005692 -0.24878048 -1.07213901… 0.08614388 -0.36702784
-0.82759022]
[-0.6115178 -1.22532865 -0.85835778… 0.18483612 2.63238206
0.4933179]
[-0.22096417 -0.54561186 -0.57117899… 0.64084286 -0.28110029
1.79768653]]
Wskaźniki wektorów wsparcia to [0 4 5 6 8 11 12 13 18 21 22 23 24 27 29 30 31 32 33 34 36 47 52 54
58 67 73 78 79 81 83 89 92 95 2 3 7 9 10 14 25 35 35 39 40 42 45 49
51 57 59 60 61 62 63 68 72 74 75 76 80 85 86 88 91 93 94 96]

Wniosek

Przeszliśmy przez wyjaśnienie maszyn wektorowych wsparcia (SVM) wraz z ich zaletami, wadami i wdrażaniem. SVM rysuje hiperploniaki między punktami z największym marginesem i może być używany do klasyfikacji i regresji. Widzieliśmy, jak Sklearn zapewnia nam łatwy sposób na wdrożenie SVM i uzyskanie szczegółów na temat wektorów wsparcia.