1 Tukivektoriluokittelija Tukivektorikoneeseen (support vector machine) perustuva luoikittelija on tilastollisen koneoppimisen teoriaan perustuva lineaarinen luokittelija. Perusajatus on sovittaa kahden näytejoukon väliin sellainen taso, että sen kanssa yhdensuuntaisten marginaalitasojen välimatka on mahdollisimman suuri eikä yksikään näyte jää marginaalitasojen väliin. Marginaalitasojen välimatkaa rajoittavia näytevektoreita kutsutaan tukivektoreiksi. Luokittelun tulos riippuu ainoastaan näistä tukivektoreista (kuvassa ympyröity). Kaksiluokkainen tapaus, lineaarinen päätöspinta, lineaarisesti erottuvat luokat Olkoon data (xx ii, yy ii ) xx ii RR dd, yy ii { 1, +1}, ii = 1,,. x i on näytteen piirrevektori ja y i sen luokka. Luokkia erottavan hypertason (päätöstaso) yhtälö on ww TT xx + bb = 0, jossa siis w on tason normaalivektori. Haluamme valita parametrit w ja b siten, että luokkien väliin jäävä marginaali eli rinnakkaisten hypertasojen välinen etäisyys on maksimaalinen. Rinnakkaisten hypertasojen yhtälöt ovat: ww TT xx + bb = +1 ja ww TT xx + bb = 1. 2 Tasojen etäisyys on, jonka siis haluamme maksimoida. Tämä on sama kuin että ww minimoisimme lausekkeen ww.
2 Lisäksi vaaditaan, etteivät datanäytteet jää marginaalitasojen väliin, eli: ww TT xx ii + bb +1, luokan (+1) näytteille, ja ww TT xx ii + bb 1, luokan (-1) näytteille. Nämä voidaan yhdistää kätevästi: yy ii (ww TT xx ii + bb) 1, kaikille näytteille x i. Nyt käsillä on minimointiongelma: Minimoi ww, ehdolla että yy ii (ww TT xx ii + bb) 1, kaikille näytteille x i. Helpompaa on kuitenkin minimoida 1 2 ww 2, joka on neliöllinen lauseke ja konveksi omaten vain yhden minimikohdan. Tällöin voidaan käyttää neliöllisen ongelmoinnin menetelmiä ratkaisun löytämiseksi. Formuloidaan siis uudestaan: Minimoi 1 2 ww 2, ehdolla että yy ii (ww TT xx ii + bb) 1, kaikille näytteille x i. Tämä voidaan kirjoittaa Lagrangen menetelmän mukaisesti seuraavaan muotoon: Minimoi: LL(ww, bb) = 1 2 ww 2 αα ii [yy ii (ww TT xx ii + bb) 1] ehdolla αα ii 0 Ratkaisemalla lausekkeesta ääriarvokohdat parametrien w ja b suhteen ja sijoittamalla takaisin saadaan lopulta Wolfin duaalimuoto: Maksimoi: WW(αα) = αα ii 1 αα 2 ii,jj =1 iiαα jj yy ii yy jj xx ii TT xx jj ehdolla αα ii 0 ja αα ii yy ii 0 α i -parametrit voidaan ratkaista numeerisesti neliöllisen ohjelmoinnin periaatteilla. Seuraavaksi parametri w voidaan laskea seuraavasti: ww = αα ii yy ii xx ii Tämän jälkeen parametri b voidaan laskea Karush-Kuhn-Tucker-ehtolausekkeesta
3 αα ii (yy ii (ww TT xx ii + bb) 1) = 0 jollakin näytteellä jolla α i >0. Kannattaa keskiarvoistaa niiden näytteiden (M kpl) yli, joilla α i >0: MM bb = 1 MM (yy ii ww TT xx ii ) Tukivektoriluokittelija saa nyt seuraavan muodon: DD(zz) = ssssssss αα ii yy ii zz TT xx ii + bb Lausekkeeseen sijoitetaan luokiteltava uuden näytteen piirrevektori z ja painotetun summan etumerkki määrää luokan +1 tai -1. Luokittelija siis hyödyntää jokaista opetusnäytettä tehdessään luokittelupäätöstä. Opetusvaiheessa jokaiselle opetusnäytteelle x i määrätään painokerroin α i. Ne näytteet x i, joille tulee α i > 0, sijaitsevat marginaalitasoilla (tukivektorit). Loput näytteet sijaitsevat joko marginaalitasoilla tai marginaalialueen ulkopuolella. Tukivektoriluokittelija siis huomioi luokittelupäätöksiä tehdessään vain tukivektorit, ei muita opetusaineiston näytteitä. Vertaa AdaBoost-algoritmiin, jonka kanssa tukivektorikone on sukulainen! Lineaarisesti erottumattomat luokat, joustava marginaali Kun opetusjoukot eivät ole lineaarisesti erottuvia, käytetään tukivektorikonetoteutusta, jota kutsutaan joustavan marginaalin (soft margin) luokittimeksi. Keskeinen näytekohtainen ehtolauseke formuloidaan slack-vakioiden γ i avulla seuraavasti: yy ii (ww TT xx ii + bb) 1 γγ ii Slack-vakiot mahdollistavat sen, että osa näytteistä jää marginaalin sisälle. Optimoitava funktio voidaan kirjoittaa kuten edellä ja ratkaista neliöllisellä ohjelmoinnilla. Yksityiskohdat ohitetaan tässä.
4 Lineaarisesti erottumattomat luokat, epälineaarinen tukivektorikone Edellä datanäytteet esiintyvät lausekkeessa pistetulon muodossa. Tämä voidaan yleistää epälineaariseen muotoon tekemällä piirrevektoreille epälineaarinen muunnos korkeampiulotteiseen piirreavaruuteen (joka on oltava välttämättä Hilbert-avaruus): xx ii TT xx jj θθ(xx ii ) TT θθ(xx jj ) Funktioiden θ(x) pistetuloa sanotaan kerneliksi. Usein käytettyjä kerneleitä ovat: Radial Basis Function: KK xx ii, xx jj = ee xx ii xx jj 2 /2σσ 2 Polynomial Function: KK xx ii, xx jj = (xx ii TT xx jj + 1) pp Tällöin päätöspinta on epälineaarinen (alkuperäisessä piirreavaruudessa), mikä mahdollistaa aiempaa monimutkaisempien aineistojen erottamisen toisistaan. Tukivektorikoneen käyttöönotto 1. Valitse sopiva kernelifunktio K(x i, x j ). 2. Maksimoi (käyttäen neliöllisen ohjelmoinnin periaatetta): 3. Laske b-parametri: WW(αα) = αα ii 1 αα 2 ii,jj =1 iiαα jj yy ii yy jj KK(xx ii, xx jj ) ehdolla αα ii 0 ja αα ii yy ii 0 bb = 1 2 min jj yy jj =1 αα iiyy ii KK(xx ii, xx jj ) + max {kk yykk = 1} αα ii yy ii KK(xx ii, xx kk ) 4. Tukivektoriluokittelija: DD(zz) = sign {ii yy ii =1} {ii yy ii = 1} αα ii yy ii KK(xx ii, zz) + bb
5 Laajennus monen luokan ongelmaan Tyypillisesti monen luokan ongelma ratkaistaan jakamalla ongelma useaksi kaksiluokkaiseksi ongelmaksi ja suunnittelemalla jokaiselle oma tukivektoriluokittelija sekä yhdistämällä tulokset. Seuraavat kaksi menetelmää ovat suosituimpia: 1) Suunnitellaan L kaksiluokkaista SVM-luokittelijaa yllä esitetyllä tavalla: luokka C i vastaan muut luokat (i=1,...,l). Eli muut luokat muodostavat yhden luokan yhdistämällä aineistot. Tunnistettaessa uutta näytettä z: (i) lasketaan kunkin luokittelijan osalta lauseke: DD(zz) = αα ii yy ii KK(xx ii, zz) + bb (ii) valitaan voittajaksi se, jolla on suurin D(z)-lausekkeen arvo. 2) Suunnitellaan L(L-1)/2 kaksiluokkaista SVM-luokittelijaa yllä esitetyllä tavalla: luokka C i vastaan luokka C j (i,j=1,...,l; i j). Eli suunnitellaan luokittelija jokaiselle luokkaparille erikseen (jättämällä kulloinkin ulos muiden luokkien aineistot). Tunnistettaessa uutta näytettä z: (i) syötetään näyte kuhunkin luokittelijaan ja kirjataan ylös kuinka monta kertaa kukin luokka C i voitti. (ii) valitaan voittajaksi se luokka C j, joka voitti useimmiten (enemmistöpäätös). Lähteitä: Hofmann T, Schölkopf B, Smola A. Kernel methods in machine learning. The Annals of Statistics, 2008, Vol. 36, No. 3, pp. 1171-1220. Vapnik V, Lerner A. Pattern recognition using generalized portrait method. Autom. Remote Control, 1963, 24, pp. 774 780.