кочан Какво представляват опорните векторни машини? - Обединете.AI
Свържете се с нас
AI майсторски клас:

AI 101 г

Какво представляват опорните векторни машини?

mm
Обновено on

Какво представляват опорните векторни машини?

Машините за поддържащи вектори са вид класификатор за машинно обучение, може би един от най-популярните видове класификатори. Машините за поддържащи вектори са особено полезни за числени прогнози, класификация и задачи за разпознаване на образи.

Машините за поддържащи вектори работят чрез чертане на граници на решенията между точките от данни, като се стремят към границата на решение, която най-добре разделя точките от данни в класове (или е най-обобщаваща). Целта при използване на опорна векторна машина е границата на решението между точките да е възможно най-голяма, така че разстоянието между всяка дадена точка от данни и граничната линия да бъде максимално увеличено. Това е бързо обяснение как поддържащи векторни машини (SVM) работят, но нека отделим малко време, за да се задълбочим в това как работят SVM и да разберем логиката зад тяхната работа.

Целта на поддържащите векторни машини

Представете си графика с редица точки от данни върху нея, базирани на характеристики, определени от осите X и Y. Точките от данни на графиката могат свободно да бъдат разделени на два различни клъстера, а клъстерът, към който принадлежи дадена точка от данни, показва класа на точката от данни. Сега приемете, че искаме да начертаем линия надолу по графиката, която разделя двата класа един от друг, като всички точки от данни в един клас се намират от едната страна на линията, а всички точки от данни, принадлежащи към друг клас, се намират от другата страна на линията. Тази разделителна линия е известна като хиперравнина.

Можете да мислите за опорна векторна машина като за създаване на „пътища“ в целия град, разделяйки града на квартали от двете страни на пътя. Всички сгради (точки с данни), които се намират от едната страна на пътя, принадлежат към един район.

Целта на опорната векторна машина е не само да начертае хиперравнини и да раздели точки от данни, но и да начертае хиперравнината на отделните точки от данни с най-голямо поле или с най-голямо разстояние между разделителната линия и всяка дадена точка от данни. Връщайки се към метафората за „пътищата“, ако градоустроител чертае планове за магистрала, той не иска магистралата да е твърде близо до къщи или други сгради. Колкото по-голямо е разстоянието между магистралата и сградите от двете страни, толкова по-добре. Колкото по-голям е този марж, толкова по-„уверен“ може да бъде класификаторът относно своите прогнози. В случай на двоична класификация, изчертаването на правилната хиперравнина означава избор на хиперравнина, която е точно в средата на двата различни класа. Ако границата/хиперравнината на решение е по-далече от един клас, тя ще бъде по-близо до друг. Следователно хиперравнината трябва да балансира разликата между двата различни класа.

Изчисляване на разделителната хиперравнина

И така, как една опорна векторна машина определя най-добрата разделяща хиперравнина/граница на решение? Това се постига чрез изчисляване на възможни хиперравнини с помощта на математическа формула. Няма да разглеждаме формулата за изчисляване на хиперравнини в изключителни детайли, но линията се изчислява с известната формула за наклон/линия:

Y = брадва + b

Междувременно линиите са направени от точки, което означава, че всяка хиперравнина може да бъде описана като: набор от точки, които вървят успоредно на предложената хиперравнина, както е определено от теглата на модела, умножени по набора от характеристики, модифицирани от определено отместване/отклонение ("д").

SVM чертаят много хиперравнини. Например граничната линия е една хиперравнина, но точките от данни, които класификаторът разглежда, също са върху хиперравнини. Стойностите за x се определят въз основа на характеристиките в набора от данни. Например, ако имате набор от данни с ръстовете и теглото на много хора, характеристиките „височина“ и „тегло“ ще бъдат характеристиките, използвани за изчисляване на „X“. Границите между предложената хиперравнина и различните „опорни вектори“ (точки от данни), открити от двете страни на разделителната хиперравнина, се изчисляват по следната формула:

W * X – b

Въпреки че можете да прочетете повече за математиката зад SVM, ако търсите по-интуитивно разбиране за тях, просто знайте, че целта е да се увеличи максимално разстоянието между предложената разделителна хиперравнина/гранична линия и другите хиперравнини, които вървят успоредно на нея ( и на които се намират точките от данни).

Снимка: ZackWeinberg чрез Wikimedia Commons, CC BY SA 3.0 (https://commons.wikimedia.org/wiki/File:Svm_separating_hyperplanes_(SVG).svg)

Многокласова класификация

Процесът, описан дотук, се прилага за задачи за двоична класификация. SVM класификаторите обаче могат да се използват и за задачи за недвоична класификация. Когато правите SVM класификация върху набор от данни с три или повече класа, се използват повече гранични линии. Например, ако задача за класификация има три класа вместо два, две разделителни линии ще бъдат използвани за разделяне на точките от данни на класове и регионът, който се състои от един клас, ще попадне между две разделителни линии вместо една. Вместо просто да изчислява разстоянието между само два класа и граница на решение, класификаторът трябва да вземе предвид границите между границите на решението и множеството класове в набора от данни.

Нелинейни разделяния

Процесът, описан по-горе, се прилага за случаи, когато данните са линейно разделими. Имайте предвид, че в действителност наборите от данни почти никога не са напълно линейно разделими, което означава, че когато използвате SVM класификатор, често ще трябва да използвате две различни техники: мек марж и трикове на ядрото. Помислете за ситуация, при която точки от данни от различни класове са смесени заедно, като някои екземпляри принадлежат към един клас в „клъстера“ на друг клас. Как бихте могли да накарате класификатора да се справи с тези случаи?

Една тактика, която може да се използва за обработка на нелинейно разделими набори от данни, е прилагането на SVM класификатор с „мек марж“. Класификаторът с мек марж работи, като приема няколко неправилно класифицирани точки от данни. Той ще се опита да начертае линия, която най-добре разделя клъстерите от точки от данни една от друга, тъй като те съдържат по-голямата част от екземплярите, принадлежащи към съответните им класове. SVM класификаторът с мек марж се опитва да създаде разделителна линия, която балансира двете изисквания на класификатора: точност и марж. Той ще се опита да сведе до минимум грешната класификация, като същевременно увеличи маржа.

Толерантността на SVM към грешки може да се регулира чрез манипулиране на хиперпараметър, наречен „C“. Стойността C контролира колко опорни вектора взема предвид класификаторът, когато чертае граници на решение. Стойността C е наказание, прилагано за грешни класификации, което означава, че колкото по-голяма е стойността C, толкова по-малко опорни вектори взема предвид класификаторът и толкова по-тясна е границата.

Ядрото измамва данните и ги трансформира по нелинеен начин. Снимка: Shiyu Ju чрез Wikmedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Kernel_trick_idea.svg)

Трикът на ядрото работи чрез прилагане на нелинейни трансформации към характеристиките в набора от данни. Трикът на ядрото взема съществуващите функции в набора от данни и създава нови функции чрез прилагането на нелинейни математически функции. Това, което се получава от прилагането на тези нелинейни трансформации, е нелинейна граница на решение. Тъй като SVM класификаторът вече не е ограничен до чертане на линейни граници за вземане на решения, той може да започне да чертае извити граници за вземане на решения, които по-добре капсулират истинското разпределение на опорните вектори и свеждат погрешните класификации до минимум. Две от най-популярните SVM нелинейни ядра са радиална базисна функция и полином. Полиномиалната функция създава полиномиални комбинации от всички съществуващи функции, докато радиалната базова функция генерира нови характеристики чрез измерване на разстоянието между централна точка/точки до всички останали точки.

Блогър и програмист със специалности в Machine Learning намлява Дълбоко обучение теми. Даниел се надява да помогне на другите да използват силата на ИИ за социално благо.