SVM (közepesen mély bevezetés) Adatbányászat és Keresés Csoport, MTA SZTAKI dms.sztaki.hu Szabó Adrienn 2013. április 4.
Bevezetés Alapötlet Jelölések Maximum margin classier Optimalizálási feladat Tartalom Szupport vektor gépek Lagrange duális Lineáris SVM levezetés Soft maximum margin classier Nemlineáris SVM: a kernel trükk Gyakorlatiasabb oldal Kernelválasztás Paraméterválasztás Implementációk
SVM Az SVM (Suport Vector Machine) Vladimir N. Vapnik és Corinna Cortes többféle gépi tanulási feladatra alkalmazható modellje (1995). Alapváltozata lineáris kétosztályos szeparálásra képes, de kiterjeszthet egy- vagy többosztályos szeparálásra nemlineáris szeparálásra és nemlineáris regressziós feladatokra is.[1]
Motiváció Mit tud az SVM (amit mások nem ennyire)? jó általánosító képesség gyorsaság nagy dimenziós adatok kezelése akkor is (egészen) használható ha több a dimenzió mint az adatpont
SVM Alapötlet képekben Lineárisan nem szeparálható feladat, de jól magasabb dimenzióba küldjük, és ott igen
Szeparáló sík 3D-ben
Jelölések Egy tanítópont: ( x, y) ahol x R n, y {+1, 1} Az x pontok dimenziója: A tanítópontok darabszáma: A tanítóhalmaz: n l D = {( x i, y i ) x i R n, y i {+1, 1}} A szeparáló sík normálvektora: ω Nem egységhosszú! A szeparáló sík eltolása: Az f függvényt keressük amivel címkéket gyárthatunk az új x pontokhoz (amik nem voltak D-ben): b f : R n {+1, 1}
Maximális szeparálás A szeparáló sík minél messzebb legyen mindkét osztály pontjaitól, és pontosan középen a két osztály ponjtjai között. 1. ábra. A szürkék is megoldják a szeparálást, de a fekete jobb
Optimalizálási feladat általában Keressük a célfüggvényünk, φ : R n R széls értékét: min φ( x) x miközben a megengedett megoldások: g i ( x) 0 ahol g i : R n R lineáris függvények, 0-ra rendezve. Az optimális megoldás az az x lesz amire igaz bármely x esetén hogy φ( x ) φ( x). Ha φ is lineáris, akkor lineáris optimalizálási feladatunk van LP feladat. Ha φ kvadratikus (négyzetes, plusz esetleg lineáris tag is) QP feladat. Ha φ konvex akkor konvex optimalizálási feladat.
Az optimalizálási feladatunk A margót (margin) kell maximalizálni, ami a szupport-síkok távolsága.
Optimalizáljuk a szeparáló síkot I A φ( ω, b) célfüggvényünket kellene úgy meghatározni, hogy a maximális margót megkaphassuk az optimalizálással. A korlátokat az fogja jelenteni, hogy a szupport-síkok nem mehetnek túl a tanítópontokon ( ω x + b + k ill. ω x b k). Tegyük fel hogy az optimális margó mérete m, és az optimális szeparáló síkunk egyenlete: Ekkor így írhatjuk fel a margót: ω x = b (1) m = φ( ω, b ) = max φ( ω, b) (2) De mi legyen a φ függvényünk?
Optimalizáljuk a szeparáló síkot II
Optimalizáljuk a szeparáló síkot III A szupport-síkokra ezeket írhatjuk fel: ω x = b + k (3) ω x = b k (4) Legyen ( x p, +1) D és ( x q, 1) D egy-egy szupport vektor. Ekkor a különbségüket ω irányába vetítve m -ot kell kapnunk (ábra). m = x p x q cos γ = ω ( x p x q ) ω = (b + k) (b k) ω = 2k ω = ω x p ω x q ω
Optimalizáljuk a szeparáló síkot IV
Optimalizáljuk a szeparáló síkot V m = max 2k ω De inkább minimalizálnánk, ezért átírjuk: (5) m = max 2k ω ω 2 = min = min ω 2k 2k = min 1 ω ω 2k = min 1 ω ω 2 Az utolsó lépésben k = 1 -et választhatunk, mert a skálázásra invariáns az optimalizálásunk. Tehát a célfüggvényünk: φ( ω, b ) = 1 ω ω (6) 2
Optimalizáljuk a szeparáló síkot VI A korlátok így alakulnak: ω x i 1 + b minden ( x i, y i ) D -re, ahol y i = +1 ω ( x i ) 1 b minden ( x i, y i ) D -re, ahol y i = 1 Ami rövidebben így is írható: ω (y i x i ) 1 y i b minden ( x i, y i ) D -re (7) Így megvan a kvadratikus optimalizálási feladatunk.
Kvadratikus programozás (QP) A kvadratikus optimalizálási feladatok (QP, Quadratic programming) megoldására vannak ismert módszerek. Erre most nincs id részletesen, a lényeg hogy viszonylag egyszer en QP feladattá alakítható a fenti. Ennek a megoldásnak az a hátránya, hogy elég számításigényes ha sok tanítópontunk van (mindegyik megjelenik korlátként). Segít a helyzeten, ha a feladat duálisát nézzük. És ezt a duális felírást nevezzünk majd SVM-nek.
Lagrange duális Optimalizálási feladatoknál viszonylag gyakori, hogy egy feladat átfogalmazásával, a duális néz pontból szebben (vagy csak máshogy) megoldható feladatot kapunk. A Lagrange duális lényege egy mondatban: Ha M darab korlátunk van, és f-nek keressük széls értékét (minden folytonos és deriválható, és a célfüggvény konvex) akkor az eredeti helyett a következ nek a megoldásával is megtaláljuk a megoldást: f( x) + M λ k g k ( x) = 0 k=1 ahol a gradiens vektort jelöli, és a λ k -k a Lagrange együtthatók, amik pozitívak.[1]
(*) Lagrange duális részletesebben I Ha keressük egy konvex függvény széls értékét, min x φ( x)-et g i ( x) 0, (i = 1... l) korlátokkal (primál feladat), akkor ebb l a következ Lagrange optimalizálási feladatot írhatjuk, amely egy képletbe fogja össze a korlátokat és a célfüggvényt: max min L( α, x) = max α,α i 0 x min α,α i 0 x ( φ( x) ) l α i g i ( x) Itt x a primál változó, α pedig a duál változó. A két, ellentétesirányú széls érték miatt ez szemléletesen azt jelenti hogy L( x, α) nyeregpontját keressük. Ha φ( x) konvex, akkor pontosan egy ilyen nyeregpont van. i=1 (8)
(*) Lagrange duális részletesebben II Bizonyítható, hogy az ( x, α ) megoldás akkor és csak akkor lesz az eredeti feladatunknak is széls értéke, ha teljesülnek a KKT (KarushKuhnTucker) feltételek: L x ( α, x ) = 0 (9) αi g i ( x ) = 0 (10) g i ( x ) 0 (11) αi 0 (12)
SVM: a max margin klasszikátor duálisa SVM: A maximális margó keresése Lagrange duálissal. Ennek az lesz az el nye hogy így szebben megoldható a feladat, illetve lehet vé válik majd a kernel trükk. Tegyük fel hogy van egy lineárisan szeparálható tanítóhalmazunk: D = {( x 1, y 1 ), ( x 2, y 2 ),... ( x l, y l )} R n {+1, 1} és a következ az optimalizálandó célfüggvényünk: 1 min φ( ω, b) = min ω ω (13) ω,b ω,b 2 a következ korlátokkal: g i ( ω, b) = y i ( ω x i b) 1 0 (i = 1... l) (14) (Ez eddig ugyanaz ami már volt a maximum margin klasszikátornál.)
(*) SVM levezetés I El ször így fog kinézni a Lagrange duálisunk, keressük a nyeregpontot: max min L( α, ω, b) (15) α,α i 0 ω,b ahol l L( α, ω, b) = φ( ω, b) α i g i ( ω, b) (16) i=1 = 1 l 2 ω ω α i (y i ( ω x i b) 1) (17) i=1 = 1 l 2 ω ω α i y i ω x i + b l l α i y i + α i (18) i=1 i=1 i=1
(*) SVM levezetés II Most tegyük fel, hogy ω, α és b az optimális megoldást adják. Ekkor a KKT feltételek: És ha minden igaz, akkor: L ω ( α, ω, b ) = 0 (19) L b ( α, ω, b ) = 0 (20) αi (y i ( ω x i b ) 1) = 0 (21) y i ( ω x i b ) 1 0 (22) αi 0 (23) max min L( α, ω, b) = α ω,b L( α, ω, b ) = φ( ω, b ) (24)
(*) SVM levezetés III Most jön az a trükk, hogy ω és b kiesnek majd, és csak az α marad majd, amire optimalizálni kell. Mivel a ω, b megoldás optimális, ezért L nyeregpontjának kell lennie. Az els KKT-t (19) használva L-t ω szerint deriváljuk (18)-t és ω -nál 0-vá tesszük: Ebb l következik: L ω ( α, ω, b) = ω ω = l α i y i x i = 0 (25) i=1 l α i y i x i (26) i=1
(*) SVM levezetés IV Most (18)-t b szerint deriváljuk, a második KKT-t (20)-t használva b -nál ez is 0 kell legyen: L b ( α, ω, b ) = l α i y i = 0 (27) Itt kiesett a b, de nem baj, ki tudjuk majd számolni ezt is az α i -kb l (kicsit kés bb). Végül (18)-be behelyettesítgetve ill. kiejtve ami nulla lett: L d ( α) = L( α, ω, b ) = i=1 l α i 1 2 i=1 l i=1 j=1 Ebbe a képletbe már belefér majd a kernel trükk... :) l α i α j y i y j x i x j (28)
A lineáris SVM formálisan A maximális margó megtalálásának duális alakja: l max L d( α) = max α i 1 l l α i α j y i y j x i x j (29) α α 2 i=1 A következ korlátokkal (i = 1... l): i=1 j=1 l α i y i = 0 (30) i=1 α i 0 (31)
A szupport vektorok Az egyik KKT feltétel (21) szerint: α i (y i ( ω x i b ) 1) = 0 Ebb l vagy az következik hogy αi = 0, vagy az hogy y i ( ω x i b ) 1 = 0. Tegyük fel hogy αj > 0 egy ( x j, y j ) D tanítópontra. Ekkor a feltétel szerint y i ( ω x i b ) = 1 : ω x j = b + 1 ha y j = +1 ω x j b 1 ha y j = 1 Vagyis ezek a tanítópontok pont rajta vannak az egyik szupport-síkon. (Ami meg nincs szupport síkon, annak az α értéke, vagyis Lagrange-együtthatója 0, mert ezek nem befolyásolják a margó méretét.)
(*) Az eltolás Még nem mondtuk meg hogy a b -ot hogy számoljuk ki. Szerencsére csak a szupport vektorok számítanak. Válasszunk egyet, például a +1-es osztályból ( x sv +, +1)-t. Ekkor: b = ω x sv + 1 = l αi y i x i x sv + 1 (32) i=1
A döntési függvényünk A primál feladat az optimális szupport-síkokat határozta meg, amiket a szupport vektorok korlátoznak. A duális megoldásban pedig a szupport vektorokat kaptuk meg, amik a síkokat korlátozzák. De arra szeretnénk majd használni a klasszikátorunkat hogy mondja meg egy pontról hogy a szeparáló sík melyik oldalára esik. Így a lineáris SVM döntési függvénye: f( x) = sgn ( ω x b ) (33) ( l ) l = sgn αi y i x i x αi y i x i x sv + + 1 (34) i=1 i=1
Soft maximum margin classier Eddig megköveteltük hogy a tanítópontok lineárisan szeparálhatóak legyenek. Ami sajnos nem mindig teljesíthet, gyakaran zajos az adat...
Soft maximum margin classier Kicsit lazítunk a feltételeken, bevezetjük a slack változókat, amikkel egy-egy tanítópont félreklasszikálhatóságát adjuk meg. Az össz-félreklasszikálhatóság-nak meg megadhatunk egy C súlyt (büntetést). Így az új korlátaink: y i( ω x i b) 1 ξ i ahol i = 1...l és ξ i 0 (35) A célfüggvény pedig igyekszik ezeket a slack változókat is minimalizálni a margó maximalizálása mellett: { } 1 l 2 ω 2 + C ξ i min ω, ξ,b i=1 (36)
Soft maximum margin classier duálisa Itt az a nagyszer ség áll fenn, hogy ha kiszámoljuk, a ξ i -k jól kiesnek a célfüggvényünkb l, és csak egy C fels korlát marad bel lük a Lagrange együtthatókhoz: max α L d( α) = max α l α i 1 2 i=1 A korlátok pedig (i = 1... l): l i=1 j=1 l α i α j y i y j x i x j (37) l α i y i = 0 (38) i=1 0 α i C (39)
Nemlineáris SVM: a kernel trükk Az eredeti pontokat magasabb dimenzióba transzformáljuk, remélve hogy ott már lineárisan szeparálhatóak az osztályok
A kernel trükk I Eddig (a primál megfogalmazásban) volt egy ilyen képletünk, ω és x közötti skaláris szorzattal: f( x) = sgn ( ω x b ) (40) És most szeretnénk a szeparálást egy magasabb dimenzióban eljátszani, vagyis az x-ek helyett ϕ( x)-et szeretnénk írni. f( x) = sgn ( ω ϕ( x) b ) (41)
A kernel trükk II A kernel-trükk lényege az, hogy ha van egy megfelel kernelünk: K( x, y) = (ϕ( x), ϕ( y)) (42) akkor igaziból nem is kell majd a ϕ-ket számolgatni, meg magasabb dimenzióba menni, mert a K( x, y) anélkül is számolható, és az SVM duális alakjában ez pont elég is.
A kernel trükk III A primál döntési függvényünkbe a ω duális reprezentációját ( ω = l i=1 α i y iϕ( x i )) helyettesítve: f( x) = sgn ( ω ϕ( x) b ) (43) ( l ) = sgn αi y i ϕ( x i ) ϕ( x) b (44) i=1 ( l ) = sgn αi y i K( x i, x) b i=1 Ha okosan választunk ϕ függvényt, akkor a döntési függvényünk ugyanolyan egyszer lesz mint a lineáris esetben; csak annyi lesz a különbség, hogy a skaláris szorzat helyett a kernelt kell írni. (45)
Kernel függvények I De egy K : R n R n R( x, y) függvény mikor olyan, hogy jó lesz kernelnek, vagyis mikor létezik hozzá ϕ úgy hogy K( x, y) = (ϕ( x), ϕ( y))? Bizonyítható, hogy akkor, ha pozitív denit: l i=1 j=1 l θ i θ j K( x i, x j ) 0 (46) A kernel-függvény tulajdonképpen a két vektor hasonlóságát méri.[6]
Kernel függvények II Kernel functions must be continuous, symmetric, and most preferably should have a positive (semi-) denite Gram matrix. Kernels which are said to satisfy the Mercer's theorem are positive semi-denite, meaning their kernel matrices have no non-negative Eigen values. The use of a positive denite kernel insures that the optimization problem will be convex and solution will be unique. However, many kernel functions which aren't strictly positive denite also have been shown to perform very well in practice (sigmoid kernel).[5]
Néhány kernel függvény Hogy melyiket érdemes választani az mindig az adott feladattól/adathalmaztól függ. (Ha nincs jobb ötletünk, kezdjük a Gauss-kernellel.) Polinomiális (homogén) K( x i, x j ) = ( x i x j ) d Polinomiális (inhomogén) K( x i, x j ) = ( x i x j + 1) d Gauss (RBF) K( x i, x j ) = exp( γ x i x j 2 ), ahol γ > 0, néha úgy paraméterezve hogy γ = 1/2σ 2 Hiperbolikus tangens K( x i, x j ) = tanh(κ x i x j + c) d, ahol κ > 0 és c < 0, plusz egyéb feltételek.
Paraméterválasztás Az SVM teljesítménye függ a választott kernelt l, a C puhasági paramétert l, és az adott kernel-függvény paraméterekt l is. Például Gauss-kernel esetén a γ paraméter és a C legjobb kombinációját egy grid-kereséssel szokás meghatározni, exponenciálisan növ értékekkel, pl: C {2 5, 2 3,..., 2 13, 2 15 } γ {2 15, 2 13,..., 2 1, 2 3 } Minden paraméter-párt CV-val kiértékelünk, és a legjobbat kiválasztjuk. Aztán a teljes tanítóhalmazt és a választott paramétereket használva építjük fel a klasszikáló modellünket.
Implementációk LIBLINEAR http://www.csie.ntu.edu.tw/~cjlin/liblinear/ LIBLINEAR is a linear classier for data with millions of instances and features LIBSVM http://www.csie.ntu.edu.tw/~cjlin/libsvm/ LIBSVM is an integrated software for support vector classication, regression and distribution estimation SVMlight http://svmlight.joachims.org/ SVMlight is an implementation of Vapnik's Support Vector Machine for the problem of pattern recognition, for regression, and for learning a ranking function. WEKA http://www.cs.waikato.ac.nz/ml/weka/ Ez azért kényelmes mert sok más klasszikátor is van benne; amúgy a LIBSVM-et wrappeli.
Special Thanks Különleges köszönet Fekete Zsoltnak és Pálovics Robinak
Hivatkozások I Wikipedia, Support vector machine, http://en.wikipedia.org/wiki/support_vector_machine, 2013. 03. 13. 22:35 Wikipedia, Optimization problem, http://en.wikipedia.org/wiki/optimization_problem, 2013. 03. 26. 21:51 Wikipedia, Mathematical optimization, http://en.wikipedia.org/wiki/mathematical_optimization, 2013. 04. 01. 22:03 Lutz Hamel, Knowledge discovery with support vector machines, John Wiley & Sons, Inc., Hoboken, New Jersey, 2009 César Roberto de Souza, Science, computing and machine learning. Blog, http: //crsouza.blogspot.hu/2010/03/kernel-functions-for-machine-learning.html, 2013. 04. 02. 14:47
Hivatkozások II Altrichter Márta, Horváth Gábor, Pataki Béla, Strausz György, Takács Gábor, Valyon József, Mesterséges Intelligencia Elektronikus Almanach, 6. fejezet - Kernel módszerek, http://project.mit.bme.hu/mi_almanach/books/neuralis/ch06 2013. 03. 27. 18:32