Vektoriaus palaikymo mašina

Kažkodėl nusprendžiau, kad seniai berašiau įrašų, kurių niekas nesuprato. Šiandien su plačia tauta norėčiau pasidalinti maža teorijos ir praktikos samprata apie Support Vector Machine (SVM) (lietuviškai galima versti įvairiai, tačiau, kadangi niekur jokio vertimo nerandu, tai sugalvojau savo variantą – Vektoriaus palaikymo mašina); Labiausiai man patiko Christopher J.C. Burgers parašytas įvadas “A Tutorial on Support Vector Machines for Pattern Recognition“. Nors, aišku, galite bandyti skaityti originalų Vapnik straipsnį “An overview of statistical learning theory“. Ten daugiau matematikos, bet ir aišku mažiau.

Įžanga

SVM sprendžia klasifikavimo problemas. Turim tam tikrą savybių erdvę ir mums reikia toje savybių erdvėje gražiai `padalinti` duomenis. SVM genialumas yra tai, kad jis naudoja pačius `duomenis` duomenų praskyrimo erdvei rasti. Daug žada, ne?

Gražioji pusė

Pavyzdį galima paimti iš wiki.

Grafike X_1 ir X_2 suformuoja dvi dimensijas, kur SVM ieško linijinio jų tarpusavio prasiskyrimo. Ryškiau apibrėžti tuščiaviduriai taškai ir pilkai apvesti juodi taškai yra ne kas kitas kaip palaikymo vektoriai. Tai jie pagrindinė priežastis kodėl įmanomas toks duomenų prasiskyrimas. Labai nesigilinant į SVM matematiką (ribinės klaidos radimas ir kt.), tai mes turime dvi linijines lygtis. Viskas ko mums reikia, tai rasti dvi linijinės funkcijas. Mums šiuo klausimu dar padeda ir ta sąlyga, kad nagrinėjamos lygtis turi būti viena kitai lygiagrečios. Nėra jokio Gauso (NaiveBayes), nėra jokios gausios ir gan sunkios matematikos PMM (HMM) atveju. Juk nuostabu, ne? Iš teigiamų savybių galima paminėti ir išgirtą jo naudojimą izoliuotų raidžių atpažinime. Yra pateikiamas net visas projektas su kodu (.NET) (dėl .NET jo net nežiūrėjau).

Negražioji pusė

Tačiau SVM turi ir blogų savybių. Kas nutiks, jeigu po apmokymo, testavimo fazėje savybių erdvėje koks nors taškas pateks tarp dviejų linijų? SVM neturi jokio Gauso (bent jau originalas), todėl atsakymo paprasčiausiai nebus. Kokia loginė funkcija tai gali paaiškinti? Kur `uncertainty` principas? Sekantis SVM trūkumas – tai jo įvairumas. Jeigu prisiminti mokyklinę matematiką, tai visos matematinės plokštumos ir figūros kaip tik ir prasidėdavo tašku ir tiese. Taip pat ir SVM atveju – galime prigalvoti begalės jo variantu ir ieškoti tinkamo iki kol pati saulė sudegs. Žinoma, yra keli populiarūs, oficialiai naudojami sprendimai. Kita neigiama savybė – SVM sugebėjimas vienu laiko momentu klasifikuoti tik du duomenų debesis savybių danguje. Yra, tiesa, neblogas popierius šia tema. Siūlau pasiskaityti, kada nors. Iš praktikos dar galima paminėti, kad SVM apmokymas yra labai lėtas ir nervų reikalaujantis procesas. Stebuklus su juo galima daryti ir neturint baigtinį dimensijų skaičių, tačiau `gyvai` treniruoti klasifikatoriaus tiesiog neįmanoma.

Išvados

Taip ir nesupratau kodėl SVM tapo toks populiarus. Yra geresnių ir greitesnių klasifikavimo metodų (kad ir stebuklingas PMM (HMM), nors ir reikia turėti baigtinį dimensijų skaičių). Reiks gal kada parašyti įžangą į SVM lietuvių kalba. Tiek, trumpai.

Advertisements

One comment


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s