• No results found

Support Vector Machines

In document Strojov´e uˇcen´ı a Datamining (Page 26-30)

Autory algoritmu Support Vector Machines (SVM) jsou Vapnik a Cortes, kteˇr´ı ho publikovali v roce 1995 [6]. ˇCesky se d´a volnˇe pˇreloˇzit jako metoda podp˚urn´ych vektor˚u. M˚uˇze b´yt vyuˇzit jak pro regresn´ı, tak i klasifikaˇcn´ı anal´yzu. Stejnˇe jako pˇredchoz´ı algoritmy m˚uˇze b´yt klasifikaˇcn´ı SVM pouˇzit pro rozliˇsov´an´ı v´ıce neˇz dvou tˇr´ıd. V pˇr´ıpadˇe klasifik´atoru, kter´y rozdˇeluje data pouze na dvˇe mnoˇziny, v´ystupn´ı objekt nab´yv´a hodnot y ∈ {−1, 1}.

SVM se pouˇz´ıv´a jak pro separaci line´arn´ıch, tak i neline´arn´ıch dat. V obou pˇr´ıpadech se snaˇz´ı naj´ıt takovou kˇrivku (v line´arn´ım pˇr´ıpadˇe pˇr´ımku), kter´a mnoˇziny rozdˇel´ı co nejvˇetˇs´ı mezerou (angl. margin). Takovou kˇrivku nelze vˇzdy nal´ezt.

Zab´yvat se ale budu pouze line´arn´ım pˇr´ıpadem. Vapnik a spol. v [6] pro tuto pˇr´ıleˇzitost zav´ad´ı pojem soft margin. Takov´a mezera st´ale rozdˇeluje obˇe mnoˇziny v co nejvˇetˇs´ım mˇeˇr´ıtku, ale dovoluje ˇspatnou klasifikaci nˇekter´ych vzork˚u (napˇr.

outlier˚u1).

M´ısto parametr˚u θ se v SVM pracuje s parametry w, b a hypot´eza vypad´a jako

hw,b(x) = g(wTx + b). (11)

Parametr b zde nahrazuje θ0 a parametr w nahrazuje zbyl´y vektor [θ1, . . . , θn] [13, s. 3]. K nalezen´ı parametru w lze dospˇet vyˇreˇsen´ım [13, s. 13]

w =

m

X

i=1

αiy(i)x(i), (12)

kde je ´ukolem nalezen´ı parametr˚u αi. Vˇetˇsina z tˇechto parametr˚u bude nulov´ych a ty, kter´e budou nenulov´e, urˇcuj´ı podp˚urn´e vektory (angl. support vectors). To jsou takov´e vzorky, kter´e jsou pobl´ıˇz pˇr´ımky rozdˇeluj´ıc´ı obˇe skupiny [13, s. 11]. Po nalezen´ı parametr˚u αi a w jiˇz jen staˇc´ı zjistit posledn´ı parametr b z rovnice

wTx + b = 0, (13)

kter´a oznaˇcuje body na pˇr´ımce rozdˇeluj´ıc´ı obˇe mnoˇziny bod˚u [13, s. 5]. V sa-motn´em algoritmu se vyskytuje velmi d˚uleˇzit´y parametr C, kter´y ovlivˇnuje chov´an´ı rohoduj´ıc´ı pˇr´ımky. Umoˇzˇnuje vyuˇzit´ı zm´ınˇen´eho soft marginu. Pˇri mal´ych hodnot´ach

v ˇr´adech desetin jednotek aˇz jednotek se chov´a tak, ˇze zanedb´av´a outliery. Jakmile se hodnota C zvyˇsuje, tak se snaˇz´ı naj´ıt mnoˇziny rozdˇelit co nejpˇresnˇeji, vˇcetnˇe outlier˚u.

V pˇr´ıpadˇe neline´arn´ıho SVM se d´a uplatnit tzv. kernel trick. Spoˇc´ıv´a v tom, ˇze se nevyuˇzij´ı p˚uvodn´ı vstupn´ı hodnoty x, ale zobraz´ı se do jin´eho prostoru (s vyso-kou dimenz´ı), d´ıky kter´emu se ulehˇc´ı v´ypoˇcetn´ı n´aroˇcnost. Zobrazen´ı prov´ad´ı tzv.

kernel funkce, kter´a m˚uˇze b´yt definov´ana r˚uznˇe. Pˇri nepouˇzit´ı kernelu v pˇr´ıpadˇe line´arn´ıho SVM se mluv´ı o line´arn´ım kernelu. Dalˇs´ımi pˇr´ıklady jsou napˇr. RBF nebo Gaussi´ansk´y kernel [13, s. 16].

4 V´ yukov´ y program pro experimentov´ an´ı s algoritmem SVM

Kdyˇz jsem se poprv´e setkal s dataminingem, tak jsme zkoumali r˚uzn´e pˇr´ıpadov´e studie. Jedn´ım z ´ukol˚u, kter´y n´as v kurzu ˇcekal, bylo vytvoˇren´ı vlastn´ı pˇr´ıpadov´e studie na n´ami zvolen´em datasetu. Vyuˇcovan´ym a doporuˇcovan´ym n´astrojem na vytvoˇren´ı studie byl program IBM SPSS Modeler. Ten obsahuje sadu n´astroj˚u pro celkovou anal´yzu dat vˇcetnˇe algoritm˚u strojov´eho uˇcen´ı. Kaˇzd´y takov´y algoritmus ale funguje jako black box1. Dˇelalo mi probl´em pochopit, jak´y algoritmus pouˇz´ıt a pˇredevˇs´ım s jak´ymi parametry. Z tohoto d˚uvodu jsme doˇsli k z´avˇeru, ˇze by bylo vhodn´e vytvoˇrit v´yukov´y program, kter´y by pomohl student˚um pochopit, jak tyto algoritmy funguj´ı. V r´amci t´eto pr´ace jsme zvolili implementaci line´arn´ıho SVM.

4.1 Pouˇ zit´ e technologie

Pˇri tvorbˇe v´yukov´eho programu se rozhodovalo mezi implementac´ı desktopov´e a webov´e aplikace. Nakonec byla kv˚uli snadn´e pˇrenositelnosti a dostupnosti i na mobiln´ıch platform´ach zvolena webov´a aplikace. Velmi obl´ıben´y jazyk pro progra-mov´an´ı webov´ych aplikac´ı je PHP. Ten ale nebyl shled´an jako vhodn´y pro imple-mentaci tˇechto v´ypoˇcetnˇe n´aroˇcnˇejˇs´ıch algoritm˚u. V kurzu Machine learning (viz 2.3) jsme pouˇz´ıvali program Octave a programovali jsme tam nˇekolik algoritm˚u strojov´eho uˇcen´ı vˇcetnˇe line´arn´ıho SVM. Byl proto zvolen jazyk, kter´y um´ı velmi dobˇre zpracov´avat vektory a matice a nav´ıc je schopn´y vytvoˇrit webovou aplikaci – Python. M´a k dispozici knihovny numpy a matplotlib, kter´e ho velmi pˇribliˇzuj´ı k funkˇcnosti matlabu. D´ıky v´ybornˇe popsan´ym tutori´al˚um webov´eho frameworku Django byl v´yvoj aplikace bezprobl´emov´y.

1Nen´ı zn´am´a jeho implementace ani zp˚usob, jak´ym funguje.

4.1.1 Python Django framework

Django framework [8] umoˇzˇnuje rychlou a snadnou tvorbu webov´ych aplikac´ı. Volnˇe se drˇz´ı n´avrhov´eho vzoru MVC2. Oproti ostatn´ım framework˚um nen´ı Django o nic ochuzen. Zaj´ımavost´ı navrch je napˇr. automatick´e vygenerov´an´ı administraˇcn´ıho rozhran´ı, kter´e se vytvoˇr´ı z definovan´ych model˚u. To ale nebylo v aplikaci nevyuˇzil, protoˇze nebylo potˇreba pracovat s datab´az´ı ani vytv´aˇret datov´e modely.

Z bezpeˇcnostn´ıho hlediska je framework tak´e velmi dobˇre vybaven. Souˇc´ast´ı je syst´em autentifikace uˇzivatel˚u. Jsou oˇsetˇreny nejbˇeˇznˇejˇs´ı bezpeˇcnostn´ı slabiny jako je SQL injection, cross-site scripting, cross-site request forgery nebo clickjacking. D´ıky tomu, ˇze je Django open source projekt, tak do nˇej existuje cel´a ˇrada jiˇz vytvoˇren´ych komponent, pom˚ucek a dalˇs´ıch vˇec´ı, kter´e dok´aˇz´ı urychlit a usnadnit v´yvoj webu.

Volba Djanga se uk´azala jako velmi vhodn´a pro dan´y probl´em a tak´e pˇrinesla znalost nov´e technologie.

4.1.2 NumPy

NumPy je knihovna jazyka Python [14]. NumPy se vyuˇz´ıv´a ve vˇedeck´e oblasti k so-fistikovanˇej´ım v´ypoˇct˚um. Souˇc´ast´ı jsou vˇsechny moˇzn´e matematick´e funkce, kter´e jsou potˇreba k poˇc´ıt´an´ı libovoln´ych probl´em˚u. Hlavn´ı v´ysadou je vˇsak podobnost s matlabem. Vˇetˇsina funkc´ı, kter´e jsou v matlabu, jsou i v NumPy se stejn´ymi n´azvy. Hlavn´ı v´yhodou je zpracov´an´ı N–rozmˇern´ych pol´ı, kter´e se velmi jednoduˇse pouˇz´ıv´a. Pro vektory i matice jsou implementov´any vˇsechny z´akladn´ı matematick´e operace. Stejnˇe jako v matlabu zde funguje maticov´e n´asoben´ı i n´asoben´ı po prvc´ıch (i ostatn´ı operace jako sˇc´ıt´an´ı apod.). Knihovna tak´e dovoluje vyuˇzit´ı zdrojov´eho k´odu v jazyce C/C++ nebo Fortran. Nakonec nechyb´ı ani dalˇs´ı n´astroje z line´arn´ı algebry, Fourierova transformace nebo pr´ace s pseudon´ahodn´ymi ˇc´ısly.

4.1.3 Matplotlib

Dalˇs´ı pouˇzitou knihovnou je Matplotlib [11]. Je to siln´y n´astroj, kter´y slouˇz´ı k vy-kreslov´an´ı 2D graf˚u. Jej´ı s´ıla a obl´ıbenost spoˇc´ıv´a v tom, ˇze obsahuje n´astroj pyplot, kter´y m´a syntax velmi podobn´y matlabu. Uˇzivatel m´a moˇznost nastaven´ı veˇsker´ych vykreslovan´ych informac´ı. Jako datov´e vstupy pro grafy je moˇzn´e vyuˇz´ıvat i objekty

2Model View Controller je architektura, kter´a rozdˇeluje aplikaci na tˇri ˇasti – data (model), zobrazen´ı pomoc´ı ˇsablon (view) a propojovac´ı vrstvu (controller).

pol´ı z knihovny NumPy 4.1.2. Grafy lze exportovat do soubor˚u, zobrazovat skrze konzoli a tak´e odes´ılat ve spr´avn´em form´atu prohl´ıˇzeˇci. D´ıky tomu se d´a zobrazen´ı vypoˇcten´ych graf˚u implementovat do webov´e aplikace. Napˇr. vyuˇzit´ım zmiˇnovan´eho Django frameworku4.1.1. Export je moˇzn´y do rastrov´ych, ale i vektorov´ych form´at˚u (napˇr. SVG). Pouˇzit´ı je velmi snadn´e a ovl´ad´an´ı z´akladn´ıch funkc´ı je t´emˇeˇr totoˇzn´e s matlabem.

In document Strojov´e uˇcen´ı a Datamining (Page 26-30)

Related documents