**Машина со поддржувачки вектори** (англиски: *support-vector machine*, *SVM*) претставува метод на машинско учење, со соодветен алгоритам за учење, кој се употребува за анализа на податоци, за класификација и за регресија.

Опис
----

Машината со поддржувачки вектори (*SVM*) врши класификација така што ја пронаоѓа онаа права, рамнина или хиперрамнина што ја максимизира маргината помеѓу двете класи. Тоа се постигнува преку опишување на најширокиот канал помеѓу две класи. На пример, доколку имаме множество на податоци чии ентитети може да припаѓаат на две класи и притоа станува збор за линеарно-сепарабилно множество, оние ентитети (вектори) од множеството кои ја дефинираат таа правата (рамнината или хипер-рамнината) се нарекуваат „поддржувачки вектори" (*support vectors*). SVM функционираат така што ги пронаоѓаат двете најблиски точки кои припаѓаат на двете различни класи и ја дефинираат (поддржуваат) најдобрата права (рамнина, т.е. хипер-рамнина) која ги разделува класите. Дополнително, SVM цртаат линија која ги поврзува овие две точки. Понатаму, SVM одлучуваат дека најдобрата права која ги разделува класите е онаа која е нормална на отсечката која ги поврзува двете точки и ја дели на два еднакви дела.

Алгоритамот на машините со поддржувачки вектори
-----------------------------------------------

Алгоритамот на SVM работи на следниов начин:

1. Дефинира оптимална хипер-рамнина која ги разделува инстанциите во однос на класите на кои им припаѓаат, според нивните атрибути (својства). Оптималната хипер-рамнина се наоѓа на тој начин што се максимизира маргината помеѓу поддржувачките вектори.
2. Проширување на претходниот чекор со цел да се решат проблемите каде податоците не се линеарно сепарабилни – на тој начин што се даваат „пенали", односно казни при погрешно класифицирање.
3. Доколку станува збор за податоци кои не се линеарно сепарабилни, можно е тие имплицитно да се мапираат во повеќедимензионален простор во кој би биле линеарно сепарабилни и полесно би се направила класификацијата.

Доколку податоците се линеарно сепарабилни, докажано е дека решението сигурно ќе биде најдено, односно идеалната хипер-рамнина со максимална маргина ќе биде пронајдена. Идеалната SVM треба да создаде хипер-рамнина која целосно ги одвојува векторите во групи (класи) во кои нема преклопување на елементите. Сепак, идеално одвојување најчесто не е можно и тогаш SVM ја пронаоѓа онаа хипер-рамнина која ја максимизира маргината помеѓу инстанциите од групите на различните класи и ги минимизира погрешните класифицирања. Минимизирањето на погрешните класифицирања се прави со воведување на т.н. „slack" променлива, на тој начин што се дозволува некои случаи да ја преминат маргината, но таквите случаи се казнуваат.

Наједноставен начин да се разделат две групи на податоци е со помош на права линија, рамнина или N-димензионална хипер-рамнина. Сепак, постојат ситуации каде некој нелинеарен регион може да ги оддели групите поефикасно. SVM се справува со ваквите случаи со користење на т.н. „кернел функција" (*kernel function*), т.е. нелинеарна функција која ги мапира податоците во друг, различен простор (димензија). Ваквата постапка претпоставува постоење на кернел функција која ги трансформира податоците кои не се линеарно сепарабилни во простор со повеќе димензии (својства), каде е можно да се изврши линеарно раздвојување.

Наводи
------

1. 1 2  Bishop, C. M. (2006), *Pattern recognition and machine learning*, Springer.
2. 1 2 3  Witten, I. H. and Frank, E. (2005), *Data Mining: Practical machine learning tools and techniques*, Morgan Kaufmann.
3. 1 2  Han, J. Kamber, M. and Pei, J. (2011), *Data mining: concepts and techniques: concepts and techniques*, Elsevier.