Kontakt z nami
Kurs mistrzowski AI:

AI 101

Co to są maszyny wektorów nośnych?

mm
Zaktualizowano on

Co to są maszyny wektorów nośnych?

Maszyny wektorów nośnych to rodzaj klasyfikatora uczenia maszynowego, prawdopodobnie jeden z najpopularniejszych rodzajów klasyfikatorów. Maszyny wektorów nośnych są szczególnie przydatne do zadań przewidywania numerycznego, klasyfikacji i rozpoznawania wzorców.

Maszyny wektorów nośnych działają poprzez rysowanie granic decyzyjnych pomiędzy punktami danych, dążąc do granicy decyzyjnej, która najlepiej dzieli punkty danych na klasy (lub jest najbardziej uogólnialna). Celem korzystania z maszyny wektorów nośnych jest możliwie jak największa granica decyzyjna między punktami, tak aby zmaksymalizować odległość między dowolnym punktem danych a linią graniczną. Oto krótkie wyjaśnienie, jak to zrobić maszyny wektorów nośnych (SVM) działają, ale poświęćmy trochę czasu na głębsze przyjrzenie się działaniu maszyn SVM i zrozumienie logiki ich działania.

Celem maszyn wektorowych wsparcia

Wyobraź sobie wykres zawierający pewną liczbę punktów danych w oparciu o cechy określone przez osie X i Y. Punkty danych na wykresie można luźno podzielić na dwa różne klastry, a klaster, do którego należy punkt danych, wskazuje klasę punktu danych. Załóżmy teraz, że chcemy narysować linię na wykresie oddzielającą obie klasy od siebie, tak aby wszystkie punkty danych w jednej klasie znalazły się po jednej stronie linii, a wszystkie punkty danych należące do innej klasy po drugiej stronie linii. Ta linia oddzielająca nazywana jest hiperpłaszczyzną.

Maszynę wektorów nośnych można traktować jako tworzącą „drogi” w całym mieście, dzielącą miasto na dzielnice po obu stronach drogi. Wszystkie budynki (punkty danych) znajdujące się po jednej stronie drogi należą do jednej dzielnicy.

Celem maszyny wektorów nośnych jest nie tylko rysowanie hiperpłaszczyzn i dzielenie punktów danych, ale także rysowanie hiperpłaszczyzny oddzielających punkty danych z największym marginesem lub z największą przestrzenią między linią podziału a dowolnym danym punktem danych. Wracając do metafory „drogi”, jeśli urbanista rysuje plany autostrady, nie chce, aby autostrada znajdowała się zbyt blisko domów lub innych budynków. Im większy margines między autostradą a budynkami po obu stronach, tym lepiej. Im większy ten margines, tym bardziej „pewny” może być klasyfikator co do swoich przewidywań. W przypadku klasyfikacji binarnej narysowanie właściwej hiperpłaszczyzny oznacza wybranie hiperpłaszczyzny znajdującej się dokładnie pośrodku dwóch różnych klas. Jeśli granica/hiperpłaszczyzna decyzyjna jest dalej od jednej klasy, będzie bliżej innej. Dlatego hiperpłaszczyzna musi równoważyć margines między dwiema różnymi klasami.

Obliczanie hiperpłaszczyzny oddzielającej

W jaki sposób maszyna wektorów nośnych wyznacza najlepszą granicę hiperpłaszczyzny/decyzji oddzielającej? Osiąga się to poprzez obliczenie możliwych hiperpłaszczyzn za pomocą wzoru matematycznego. Nie będziemy omawiać wzoru na obliczanie hiperpłaszczyzn niezwykle szczegółowo, ale linia jest obliczana przy użyciu słynnego wzoru nachylenie/linię:

Y = topór + b

Tymczasem linie składają się z punktów, co oznacza, że ​​dowolną hiperpłaszczyznę można opisać jako: zbiór punktów biegnących równolegle do proponowanej hiperpłaszczyzny, zgodnie z wagami modelu pomnożonymi przez zbiór cech zmodyfikowanych przez określone przesunięcie/odchylenie ("D").

Maszyny SVM rysują wiele hiperpłaszczyzn. Na przykład linia graniczna jest jedną hiperpłaszczyzną, ale punkty danych uwzględniane przez klasyfikator również znajdują się na hiperpłaszczyznach. Wartości x są określane na podstawie cech w zbiorze danych. Na przykład, jeśli masz zbiór danych zawierający wzrost i wagę wielu osób, cechy „wzrost” i „waga” będą cechami używanymi do obliczenia „X”. Marginesy pomiędzy proponowaną hiperpłaszczyzną a różnymi „wektorami nośnymi” (punktami danych) znajdującymi się po obu stronach hiperpłaszczyzny dzielącej są obliczane za pomocą następującego wzoru:

W*X – ur

Chociaż możesz przeczytać więcej o matematyce stojącej za SVM, jeśli szukasz bardziej intuicyjnego zrozumienia ich, po prostu wiedz, że celem jest maksymalizacja odległości między proponowaną oddzielającą hiperpłaszczyzną/linią graniczną a innymi hiperpłaszczyznami biegnącymi równolegle do niej ( i na którym znajdują się punkty danych).

Zdjęcie: ZackWeinberg za pośrednictwem Wikimedia Commons, CC BY SA 3.0 (https://commons.wikimedia.org/wiki/File:Svm_separating_hyperplanes_(SVG.svg)

Klasyfikacja wieloklasowa

Opisany dotychczas proces dotyczy zadań klasyfikacji binarnej. Jednak klasyfikatorów SVM można również używać do zadań klasyfikacji niebinarnej. Podczas klasyfikacji SVM na zbiorze danych zawierającym trzy lub więcej klas używanych jest więcej linii granicznych. Na przykład, jeśli zadanie klasyfikacyjne ma trzy klasy zamiast dwóch, do podzielenia punktów danych na klasy zostaną użyte dwie linie podziału, a obszar obejmujący pojedynczą klasę znajdzie się pomiędzy dwiema liniami podziału zamiast jednej. Zamiast po prostu obliczać odległość między zaledwie dwiema klasami a granicą decyzyjną, klasyfikator musi teraz wziąć pod uwagę marginesy między granicami decyzyjnymi a wieloma klasami w zbiorze danych.

Separacje nieliniowe

Opisany powyżej proces dotyczy przypadków, w których dane są liniowo separowalne. Należy zauważyć, że w rzeczywistości zbiorów danych prawie nigdy nie da się całkowicie liniowo oddzielić, co oznacza, że ​​podczas korzystania z klasyfikatora SVM często trzeba będzie użyć dwie różne techniki: miękkie marginesy i sztuczki jądra. Rozważmy sytuację, w której punkty danych różnych klas są ze sobą mieszane, a niektóre instancje należą do jednej klasy w „klastrze” innej klasy. W jaki sposób klasyfikator mógłby obsługiwać takie przypadki?

Jedną z taktyk, którą można zastosować do obsługi nieliniowo separowanych zbiorów danych, jest zastosowanie klasyfikatora SVM z „miękkim marginesem”. Klasyfikator miękkiego marginesu działa w oparciu o akceptowanie kilku błędnie sklasyfikowanych punktów danych. Spróbuje narysować linię, która najlepiej oddziela skupienia punktów danych od siebie, ponieważ zawierają one większość instancji należących do odpowiednich klas. Klasyfikator SVM z miękkim marginesem próbuje utworzyć linię podziału, która równoważy dwa wymagania klasyfikatora: dokładność i margines. Będzie starała się zminimalizować błędną klasyfikację, jednocześnie maksymalizując marżę.

Tolerancję SVM na błąd można regulować poprzez manipulację hiperparametrem zwanym „C”. Wartość C kontroluje ile wektorów wsparcia uwzględnia klasyfikator przy wyznaczaniu granic decyzyjnych. Wartość C jest karą nakładaną za błędne klasyfikacje, co oznacza, że ​​im większa wartość C, tym mniej wektorów wsparcia bierze pod uwagę klasyfikator i tym węższy margines.

Jądro oszukuje dane i przekształca je w sposób nieliniowy. Zdjęcie: Shiyu Ju za pośrednictwem Wikmedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Kernel_trick_idea.svg)

Trick jądra działa poprzez zastosowanie nieliniowych transformacji do cech w zbiorze danych. Kernel Trick wykorzystuje istniejące cechy zbioru danych i tworzy nowe poprzez zastosowanie nieliniowych funkcji matematycznych. W wyniku zastosowania tych nieliniowych przekształceń powstaje nieliniowa granica decyzyjna. Ponieważ klasyfikator SVM nie jest już ograniczony do rysowania liniowych granic decyzyjnych, może rozpocząć rysowanie zakrzywionych granic decyzyjnych, które lepiej odwzorowują prawdziwy rozkład wektorów wsparcia i ograniczają do minimum błędne klasyfikacje. Dwa najpopularniejsze jądra nieliniowe SVM to radialna funkcja podstawowa i wielomian. Funkcja wielomianu tworzy wielomianowe kombinacje wszystkich istniejących cech, podczas gdy radialna funkcja bazowa generuje nowe cechy poprzez pomiar odległości pomiędzy centralnym punktem/punktami a wszystkimi innymi punktami.

Bloger i programista specjalizujący się w Nauczanie maszynowe i głęboki Learning tematy. Daniel ma nadzieję pomóc innym wykorzystać moc sztucznej inteligencji dla dobra społecznego.