**Atraminių vektorių klasifikatorius** (ang. support vector machine, SVM)  - sistemos mokymosi (machine learning) algoritmas skirtas klasifikuoti duomenims. Tai prižiūrimo mokymosi (supervised learning) metodas, kuomet siekiama suklasifikuoti jau pažymėtus (t. y. skirtingų, iš anksto žinomų klasių) duomenis.

Duomenų klasifikavimo problema
------------------------------

Skirtingi būdai nubrėžti sprendimo ribą tarp dviejų klasių. Intuityviai, tiesė {\displaystyle y\_{2}} padalija duomenis geriau, nei tiesė {\displaystyle y\_{1}}.
Dažnai duomenų analizėje sutinkama problema − žinant dvi skirtingas klases kurioms priklauso turimi duomenys, priskirti naują duomenų tašką kažkuriai iš klasių. Šią problemą galima nesunkiai išspręsti, jeigu duomenys yra vienmačiai arba dvimačiai. Tačiau esant daugiau matmenų bei siekiant automatizuoti procesą reikalingi sudėtingesni algoritmai. Šie algoritmai kiekvieną turimų duomenų tašką priskiria kuriai nors (prižiūrimo mokymosi atveju žinomai) klasei. Tarp skirtingų klasių atsiranda taip vadinama sprendimo riba (decision boundary), kuri visus duomenis suskaido į sritis, priklausančias skirtingoms klasėms (žr. paveikslą dešinėje).

Apibrėžimas
-----------

Klasifikavimas atraminiais vektoriais. Algoritmas maksimizuoja atstumą tarp punktyrinių linijų. Taškai, per kuriuos eina šios linijos vadinami atraminiais vektoriais. Atraminių vektorių klasifikatorius (AVK) siekia surasti tiesę (sprendimo ribą) tokią, kad atstumas nuo jos iki dviejų taškų (tiesių einančių per juos), priklausančių skirtingoms klasėms būtų didžiausias (esant daugiau matmenų ši tiesė pavirsta hiperplokštuma). Šie ypatingi taškai nusako vektorius, vadinamus atraminiais vektoriais, nes jie vieninteliai daro įtaką sprendimo ribai. Formaliai sprendimo riba nusakoma vektoriumi {\displaystyle {\vec {\omega }}} ir skaliaru {\displaystyle b} taip, jog galioja nelygybė 


c

i

(

ω
→

⋅

v

i

→

+
b
)
>
1

{\displaystyle c\_{i}({\vec {\omega }}\cdot {\vec {v\_{i}}}+b)>1}

{\displaystyle c_{i}({\vec {\omega }}\cdot {\vec {v_{i}}}+b)>1} i-ajam duomenų taškui. 

Čia {\displaystyle c\_{i}} yra *i-*ojo taško klasė ({\displaystyle +1} arba {\displaystyle -1}), {\displaystyle {\vec {v\_{i}}}=(x\_{i},y\_{i})} yra vektorius nukreiptas į *i*-ąjį tašką. Pagal šią formuluotę, kiekvienas naujas taškas nusakomas vektoriumi {\displaystyle {\vec {v}}} yra klasifikuojamas surandant šio vektoriaus projekciją į {\displaystyle {\vec {w}}} ir pridedant skaliarą {\displaystyle b}. Jei {\displaystyle {\vec {w}}\cdot {\vec {c}}+b>0}, taškas priskiriamas klasei {\displaystyle +1}, jei {\displaystyle {\vec {w}}\cdot {\vec {c}}+b<0}, taškas priskiriamas klasei {\displaystyle -1}.

Žinoma, norint taikyti AVK, reikia nustatyti vektoriaus {\displaystyle {\vec {w}}} ir skaliaro {\displaystyle b} reikšmes. Tam pasinaudojama jau turimais duomenimis, žinant kuriai klasei priklauso kiekvienas taškas. Atstumas tarp tiesių, einančių per atraminius vektorius (punktyrinės linijos paveiksle dešinėje) išreiškiamas dydžiu {\displaystyle {\frac {1}{||{\vec {w}}||}}.} Atraminių vektorių nustatymas susiveda į dydžio {\displaystyle ||{\vec {w}}||^{2}/2} minimizavimą. Šis uždavinys sprendžiamas Lagranžo daugiklių metodu, kuomet ieškoma funkcijos {\displaystyle {\mathcal {L}}} ekstremumo daugiklių {\displaystyle \alpha \_{i}} atžvilgiu. Ši funkcija lygi



L

(
α
)
=

|

|

w
→

|

|

2

2

−

∑

i

α

i

⋅

[

c

i

(

w
→

⋅

v

i

→

+
b

)

−
1

]

,

{\displaystyle {\mathcal {L}}(\alpha )={\frac {||{\vec {w}}||^{2}}{2}}-\sum \_{i}\alpha \_{i}\cdot \left[c\_{i}\left({\vec {w}}\cdot {\vec {v\_{i}}}+b\right)-1\right],}

{\displaystyle {\mathcal {L}}(\alpha )={\frac {||{\vec {w}}||^{2}}{2}}-\sum _{i}\alpha _{i}\cdot \left[c_{i}\left({\vec {w}}\cdot {\vec {v_{i}}}+b\right)-1\right],}čia {\displaystyle \alpha \_{i}} - Lagranžo daugikliai lygūs 0 visiems *i*, išskyrus kai {\displaystyle {\vec {v\_{i}}}} yra atraminis vektorius. Šią išraišką įprasta perrašyti (remiantis Karush-Kuhn-Tucker sąlygomis) kaip 



L

(
α
)
=

∑

i

α

i



v

i

→


v

i

→

−

∑

i

∑

j

α

i

α

j

c

i

c

j



v

i

→


v

j

→

.

{\displaystyle {\mathcal {L}}(\alpha )=\sum \_{i}\alpha \_{i}{\vec {v\_{i}}}{\vec {v\_{i}}}-\sum \_{i}\sum \_{j}\alpha \_{i}\alpha \_{j}c\_{i}c\_{j}{\vec {v\_{i}}}{\vec {v\_{j}}}.}

{\displaystyle {\mathcal {L}}(\alpha )=\sum _{i}\alpha _{i}{\vec {v_{i}}}{\vec {v_{i}}}-\sum _{i}\sum _{j}\alpha _{i}\alpha _{j}c_{i}c_{j}{\vec {v_{i}}}{\vec {v_{j}}}.}
Apskaičiavus Lagranžo daugiklius {\displaystyle \alpha \_{i}}, vektorius {\displaystyle {\vec {\omega }}} ir skaliaras {\displaystyle b} išreiškiami pagal {\displaystyle {\vec {\omega }}=\sum \_{i=1}^{N}\alpha \_{i}c\_{i}{\vec {v\_{i}}}} ir {\displaystyle b={\frac {1}{N\_{A}}}\sum \_{i\in A}\left(c\_{i}-\sum \_{j\in A}\alpha \_{j}c\_{j}{\vec {v\_{i}}}{\vec {v\_{j}}}\right),} kur {\displaystyle {\vec {v\_{i}}}\in A} yra atraminiai vektoriai.

Netiesinis klasifikavimas transformacijos branduolių metodu
-----------------------------------------------------------

Tiesiškai neatskiriami taškai paveikus juos transformacija {\displaystyle x\rightarrow \phi (x)} tampa tiesiškai atskiriamais naujame atvaizdavime.
Dažnai neįmanoma nubrėžti tiesės (hiperplokštumos) taip, kad visi taškai būtų padalinti į dvi atskiras grupes. Tokiu atveju AVK metodas modifikuojamas, įvedant transformacijos funkciją {\displaystyle \phi ({\vec {v}})}, kuri kiekvieną tašką (nusakomą vektoriumi) transformuoja pagal {\displaystyle {\vec {v}}\rightarrow \phi ({\vec {v}})}. Tinkamai parinkus šią funkciją visi tiesiškai neatskiriami taškai įprastame atvaizdavime, taps tiesiškai atskiriamais funkcijos {\displaystyle \phi ({\vec {v}})} atvaizdavime. Dažnai įvedama taip vadinama transformacijos branduolio funkcija {\displaystyle {\mathcal {k}}(a,b)=\phi (a)\cdot \phi (b)}, kuria pakeičiamos visos vektorių skaliarinės sandaugos Lagranžiane {\displaystyle {\mathcal {L}}(\alpha )}. Šis virsta 


L

(
α
)
=

∑

i

α

i

k

(

v

i

→

,

v

i

→

)
−

∑

i

∑

j

α

i

α

j

c

i

c

j

k

(

v

i

→

,

v

j

→

)
.

{\displaystyle {\mathcal {L}}(\alpha )=\sum \_{i}\alpha \_{i}{\mathcal {k}}({\vec {v\_{i}}},{\vec {v\_{i}}})-\sum \_{i}\sum \_{j}\alpha \_{i}\alpha \_{j}c\_{i}c\_{j}{\mathcal {k}}({\vec {v\_{i}}},{\vec {v\_{j}}}).}

{\displaystyle {\mathcal {L}}(\alpha )=\sum _{i}\alpha _{i}{\mathcal {k}}({\vec {v_{i}}},{\vec {v_{i}}})-\sum _{i}\sum _{j}\alpha _{i}\alpha _{j}c_{i}c_{j}{\mathcal {k}}({\vec {v_{i}}},{\vec {v_{j}}}).} Transformacijos branduolio funkcijos gali būtų įvairių formų ir parenkamos pagal situaciją. Keletas pavyzdžių :

{\displaystyle {\mathcal {k}}(a,b)=a^{T}Mb,} kur {\displaystyle M} yra tam tikra matrica.

{\displaystyle {\mathcal {k}}(a,b)=\exp \left[d\cdot (a-b)^{m}\right],} kur {\displaystyle d} ir {\displaystyle m} yra tam tikri skaičiai.

Šaltiniai
---------

1. ↑
2. ↑
3. ↑  Bishop, Christopher M. (2006). Pattern Recognition and Machine Learning