Support vector machines

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Support_vector_machines (SVM) jsou metoda učení s učitelem v oblasti strojového učení, která se používá zejména pro klasifikaci a regresi. SVM je založen na principu hledání optimální nadrovně lineárního oddělujícího hyperrušení dvou tříd vzorků v prostoru o vyšším počtu dimenzí. Tato metoda využívá tzv. vektory podpory, které jsou podporovány vzdálenostně od oddělující roviny a určují polohu a tvar klasifikační hranice. SVM se vyznačuje robustností vůči šumu a efektivitou při práci s daty s vysokým počtem dimenzí. Tato metoda je často používána v oblastech jako rozpoznávání obrazu, textová klasifikace a extrakce znalostí.

Support vector machines (SVM) neboli metoda podpůrných vektorů je metoda strojového učení s učitelem, sloužící zejména pro klasifikaci a také pro regresní analýzu. Na jejím vynalezení se podílel zejména Vladimir Vapnik.

Základem metody SVM je lineární klasifikátor do dvou tříd. Cílem úlohy je nalézt nadrovinu, která prostor příznaků optimálně rozděluje tak, že trénovací data náležející odlišným třídám leží v opačných poloprostorech. +more Optimální nadrovina je taková, že hodnota minima vzdáleností bodů od roviny je co největší. Jinými slovy, okolo nadroviny je na obě strany co nejširší pruh bez bodů (maximální odstup, angl. maximal margin, česky je tento pruh někdy nazýván také pásmo necitlivosti nebo hraniční pásmo). Na popis nadroviny stačí pouze body ležící na okraji tohoto pásma a těch je obvykle málo - tyto body se nazývají podpůrné vektory (angl. support vectors) a odtud název metody.

Důležitou součástí techniky Support vector machines je jádrová transformace (angl. kernel transformation) prostoru příznaků dat do prostoru transformovaných příznaků typicky vyšší dimenze. +more Tato jádrová transformace umožňuje převést původně lineárně neseparovatelnou úlohu na úlohu lineárně separovatelnou, na kterou lze dále aplikovat optimalizační algoritmus pro nalezení rozdělující nadroviny. Trik je v tom, že nadrovina je popsána a při výpočtech je použitý pouze skalární součin, a skalární součin transformovaných dat ve vysokorozměrném prostoru se nepočítá explicitně, ale počítá se K(x, x1), tj. hodnota jádrové funkce K na datech v původním prostoru parametrů.

Používají se různé kernelové transformace. Intuitivně, vyjadřují podobnost dat, tj. +more svých dvou vstupních argumentů. Výhodou této metody (a jiných metod založených na jádrové transformaci) je, že transformace se dá definovat pro různé typy objektů, nejen body v Rn. Např. pro grafy, stromy, posloupnosti DNA atd.

...

Lineární SVM

Lineární SVM je jednodušší varianta SVM metody, při které zůstáváme v původním prostoru příznaků a nedochází k žádné jádrové transformaci. Výsledkem potom je čistě lineární klasifikátor.

Separabilní případ

Optimální rozdělující nadrovina a hraniční pásmo pro lineární SVM. +more Body na okrajích pásma jsou podpůrné vektory. .

Nejjednodušším případem použití SVM je lineární klasifikátor pro lineárně separabilní data, tedy data, ve kterých lze obě třídy od sebe rozdělit nadrovinou. Mějme množinu trénovacích dat v podobě dvojic (\vec{x}_i, y_i) , kde \vec{x}_i je vektor a {y_i} je informace od učitele nabývající hodnoty +1 nebo -1.

Nadrovinu, rozdělující body do dvou tříd, lze popsat rovnicí {{vzorec| \vec{w} \cdot \vec{x} + b = 0, |1}} kde {\vec{w}} je normála nadroviny,

\vec{w}
její Eukleidovská norma a [wiki_table=a53e3936] vzdálenost nadroviny od počátku souřadnic.

Nejkratší vzdálenosti nejbližších bodů na každé straně nadroviny od ní značíme {d_{+}} a {d_{-}}. Součet {d_{+} + d_{-}} pak představuje šířku hraničního pásma. +more Cílem trénování SVM pak je nalézt takovou rozdělující nadrovinu, aby hraniční pásmo bylo nejširší možné. Body, ležící na hranici tohoto pásma a jejichž odebráním by se poloha optimální nadroviny změnila, jsou podpůrné vektory (angl. support vectors).

Formulace úlohy

Předpokládejme, že pro všechny body platí {{vzorec| \vec{x}_i \cdot \vec{w} + b \ge +1 \quad \text{pro } y_i = +1, |2}} {{vzorec| \vec{x}_i \cdot \vec{w} + b \le -1 \quad \text{pro } y_i = -1, |3}}

což lze sloučit do jediné nerovnice {{vzorec| y_i(\vec{x}_i \cdot \vec{w} + b) - 1 \ge 0 \quad \forall i.|4}}

Body, pro které platí rovnost v , leží na nadrovině H_1: \vec{w} \cdot \vec{x} + b = 1.

Body, pro které platí rovnost v , leží na nadrovině H_2: \vec{w} \cdot \vec{x} + b = -1.

Nadroviny H_1 a H_2 jsou kolmé na stejný normálový vektor \vec{w} a jejich vzdálenost od rozdělující nadroviny je 1/||\vec{w}||. Šířka hraničního pásma tedy je 2/||\vec{w}|| a nadroviny s nejširším pásmem můžeme určit minimalizací ||\vec{w}|| vzhledem k podmínkám .

Pozn.: Z praktických důvodů se místo ||\vec{w}|| minimalizuje ||\vec{w}||^2 / 2.

Lagrangeovská formulace

Lagrangeovská formulace úlohy má dvě hlavní výhody: * Namísto podmínky je omezení na samotné Lagrangeovy multiplikátory, s čímž se lépe pracuje. * Trénovací data se ve všech výrazech vyskytují jen ve skalárních součinech, což je velmi důležité u nelineárního případu.

Zavedené nezáporné Lagrangeovy multiplikátory \lambda_i, i=1,\dots,l , jeden pro každou nerovnost v .

Lagrangeova funkce: {{vzorec| L_P = \frac{1}{2}||\vec{w}||^2 - \sum_{i=1}^{l}\lambda_i y_i(\vec{x}_i \cdot \vec{w} + b) + \sum_{i=1}^{l}\lambda_i |5}}

Je třeba minimalizovat L_P vzhledem k \vec{w}, a derivace L_P vzhledem ke všem \lambda_i musejí být nulové, vše za omezení \lambda_i\ge 0.

Jedná se o konvexní problém kvadratického programování, proto lze místo toho řešit duální problém - hledání maxima L_P za následujících podmínek: že gradient L_P vzhledem k \vec{w} a b je nulový, a že \lambda_i\ge 0.

Aby gradient podle \vec{w} a b byl nulový, musí platit {{vzorec|\vec{w} = \sum_i\lambda_i y_i \vec{x}_i\;|6}}

Dosazením do se získá duální Lagrangeova funkce (L_P - primární, L_D - duální) {{vzorec|L_D = \sum_i \lambda_i - \frac{1}{2}\sum_{i,j}\lambda_i\lambda_j y_i y_j \mathbf{x}_i \cdot \mathbf{x}_j\;|8}}

Trénování SVM spočívá v maximalizaci L_D vzhledem k \lambda_i, při omezení a \lambda_i \ge 0, s řešením daným .

Máme jedno \lambda_i pro každý trénovací bod, přičemž body, pro které \lambda_i>0 jsou podpůrné vektory a leží v nadrovinách H_1 nebo H_2, zatímco všechny ostatní mají \lambda_i = 0 a leží buď v jedné z nadrovin, nebo na té straně od nich, pro kterou platí ostrá nerovnost v .

Podpůrné vektory jsou nejdůležitějšími body trénovací množiny - pokud by se všechny ostatní body odstranily, novým natrénováním by se získala tatáž rozdělující nadrovina.

Karushovy-Kuhnovy-Tuckerovy podmínky

Karushovy-Kuhnovy-Tuckerovy (KKT) podmínky jsou nutné podmínky pro optimální řešení v úloze nelineárního programování za předpokladu splnění určitých podmínek regularity. Pro konvexní problémy jsou zároveň i postačujícími podmínkami.

SVM představují konvexní problém a podmínky regularity jsou pro ně splněné vždy. KKT podmínky jsou tím pádem nutné a postačující, aby \vec{w}, b, \lambda byly řešením.

Pro primární problém KKT podmínky vypadají následovně:

: \begin{align} \frac{\partial}{\partial w_{\nu}}L_P = w_{\nu} - \sum_i \lambda_i y_i x_{i\nu} = 0 & \qquad \nu = 1,\dots,d\\ \frac{\partial}{\partial b}L_P = -\sum_i \lambda_i y_i = 0\\ y_i(\mathbf{x}_i\cdot \mathbf{w} + b) - 1 \ge 0 & \qquad i=1,\dots,l\\ \lambda_i \ge 0 & \qquad \forall i\\ \lambda_i (y_i(\mathbf{w} \cdot \mathbf{x}_i + b) - 1) = 0 & \qquad\forall i \end{align}

KKT podmínky hrají roli při numerickém řešení SVM úlohy (viz #Metody řešení|sekce Metody řešení).

Testovací fáze

V testovací fázi klasifikujeme neznámé body, u nichž nevíme, do které třídy skutečně náležejí. Toto zjistíme tak, že spočítáme \sgn (\vec{w} \cdot \vec{x} + b) a výsledné znaménko nám řekne, na které straně rozdělující nadroviny daný bod leží. +more Podle toho ho přiřadíme do odpovídající třídy.

Neseparabilní případ

Složitější variantou lineárních SVM je případ, kdy se snažíme lineárně oddělit data, která nejsou plně lineárně separovatelná. Například se může jednat o zašuměná data, kde se jednotlivé třídy částečně překrývají a není proto možné najít jednoznačnou hranici. +more V takovémto případě chceme najít takovou rozdělující nadrovinu, aby k chybné klasifikaci docházelo co nejméně.

V takovéto situaci se provádí zmírnění podmínek a s přidanou cenou za jejich porušení, a to zavedením přídavné proměnné \xi:

{{vzorec| \vec{x}_i \cdot \vec{w} + b \ge +1-\xi_i \quad \text{pro } y_i = +1, |14}} {{vzorec| \vec{x}_i \cdot \vec{w} + b \ge -1-\xi_i \quad \text{pro } y_i = -1, |15}}

Pro přiřazení ceny navíc za chyby se pak minimalizovaná funkce stanoví místo ||\vec{w}||^2 / 2 jako ||\vec{w}||^2 / 2 + C\cdot\sum_i \xi_i, kde C je volitelný parametr a větší C znamená větší penalizaci chyb.

Duální problém pak je:

Maximalizovat {{vzorec| L_D = \sum_i \lambda_i - \frac{1}{2}\sum_{i,j}\lambda_i\lambda_j y_i y_j \vec{x}_i \cdot \vec{x}_j|17}} za podmínek

Řešení je opět {{vzorec| \vec{w} = \sum_{i=1}^{N_S}\lambda_i y_i \vec{x}_i, |20}} kde N_S je počet podpůrných vektorů.

Jediný rozdíl oproti předchozímu případu je tedy ten, že \lambda_i nyní jsou shora omezené C .

Primární Lagrangeova funkce je {{vzorec|L_P = \frac{1}{2}||\vec{w}||^2 + C\sum_i\xi_i - \sum_i\lambda_i\{ y_i(\vec{x}_i \cdot \vec{w} + b) - 1 + \xi_i\} + \sum_i\mu_i\xi_i,|21}} kde \mu_i jsou Lagrangeovy multiplikátory zavedené pro zajištění \xi_i \ge 0.

KKT podmínky pro primární problém pak jsou {{vzorec| \frac{\partial L_P}{\partial w_{\nu}} = w_{\nu} - \sum_i \lambda_i y_i x_{i\nu} = 0|22}} {{vzorec| \frac{\partial L_P}{\partial b}= -\sum_i \lambda_i y_i = 0|23}} {{vzorec| \frac{\partial L_P}{\partial \xi_i}= C -\lambda_i -\mu_i = 0|24}} {{vzorec| y_i(\mathbf{x}_i\cdot \mathbf{w} + b) - 1 + \xi_i \ge 0|25}}

{{vzorec| \lambda_i \{y_i(\vec{x}_i \cdot \vec{w} + b) - 1 + \xi_i\} = 0|29}}

kde i jde od 1 do počtu trénovacích bodů, \nu jde od 1 do dimenze dat.

Práh b lze určit na základě podmínek a dosazením jednoho z trénovacích bodů.

Nelineární SVM

Ilustrace jádrové transformace: původní data ve 2D prostoru (vlevo) nejsou lineárně separabilní. +more Po transformaci do 3D prostoru (vpravo) je lze oddělit rovinou. Použita jádrová funkce K(x_i,x_j) = (x_i \cdot x_j)^2, zobrazení \Phi(\vec{x}) = (x_1^2, \sqrt{2}x_1x_2, x_2^2). .

V lineárním případě se jednalo o data, která byla plně nebo téměř lineárně separovatelná. Obecně toto však často neplatí a z toho důvodu byly zavedeny nelineární SVM. +more Základní myšlenkou je použití tzv. jádrového triku (anglicky kernel trick), s jehož pomocí se provádí transformace dat z původního prostoru příznaků do prostoru vyšší dimenze, ve kterém již jsou lineárně separabilní.

Jinými slovy, provádíme zobrazení trénovacích dat z původního prostoru do jiného eukleidovského prostoru \mathcal{H}, ve kterém toto už platit bude: {{vzorec| \Phi : \mathbf{R}^d \mapsto \mathcal{H} |31}}

Prostor \mathcal{H} je obvykle mnohem větší, i až nekonečné, dimenze než původní prostor, dále značený \mathcal{L}, a v \mathcal{L} většinou neexistuje vektor, jehož obrazem by byl vektor \vec{w}.

Jelikož v rovnicích (-) se trénovací data vyskytují jen v podobě skalárních součinů mezi sebou, nemusíme vůbec znát zobrazení \Phi, stačí pouze znát vztah pro skalární součin \Phi(x_i) \cdot \Phi(x_j). Využívá se tzv. +more jádrová funkce (angl. kernel function}) K(x_i,x_j) = \Phi(x_i) \cdot \Phi(x_j).

V testovací fázi lze použití \vec{w} také obejít - pro určení, do které třídy bod spadá, počítáme funkci signum z výrazu {{vzorec| f(x) = \sum_{i=1}^{N_S} \lambda_i y_i \Phi(\vec{s}_i) \cdot \Phi(\vec{x}) + b = \sum_{i=1}^{N_S}\lambda_i y_i K(\vec{s}_i,\vec{x}) + b,|32}} kde \vec{s}_i jsou podpůrné vektory.

Příklady nelineárních SVM

Mezi často používané jádrové funkce patří například:

* Polynom stupně p: {{vzorec| K(\mathbf{x},\mathbf{y}) = (\mathbf{x} \cdot \mathbf{y} + 1)^p |33}}

* Radiální bázové funkce: {{vzorec| K(\mathbf{x},\mathbf{y}) = e^{-||\mathbf{x} - \mathbf{y}||^2 /2\sigma^2} |34}}

* Dvouvrstvá neuronová síť: {{vzorec| K(\mathbf{x},\mathbf{y}) = \tanh(\kappa\mathbf{x} \cdot \mathbf{y} - \delta) |35}}

Metody řešení

Problém optimalizace pomocí podpůrných vektorů lze řešit analyticky jen pokud je množství trénovacích dat velmi malé nebo v separovatelném případě pokud je předem známo, která data se stanou podpůrnými vektory. Při většině reálných použití je třeba rovnice (-) řešit numericky (se skalárními součiny nahrazenými K(x,y)).

Pro jednodušší úlohy postačují standardní metody řešení konvexních úloh kvadratického programování s lineárními vazbovými podmínkami, pro složitější úlohy pak existují speciální techniky řešení.

Základní postup: # Volba jádrové funkce a jejích parametrů. # Volba parametru C reprezentujícího kompromis mezi minimalizací chyby na trénovací množině a maximalizací šířky hraničního pásma. +more # Vyřešení duálního problému pomocí vhodné techniky kvadratického programování: ## Určení podmínek optimality (KKT), které musí řešení splňovat. ## Definování strategie dosažení optimality zvyšováním duální váhové funkce vzhledem k vazbovým podmínkám. ## U rozsáhlejších úloh: volba algoritmu dekompozice tak, aby bylo třeba pracovat jen s částí dat najednou. # Výpočet parametru b na základě podpůrných vektorů. # Klasifikace nových bodů.

Algoritmy dekompozice pro rozměrné úlohy:

Příkladem je "hroudová" metoda (angl. "chunking" method) - SVM se nejdříve natrénuje na malé podmnožině dat, na zbytku se otestuje a udělá se seznam chybných rozhodnutí seřazený podle toho, jak moc byly porušeny KKT podmínky. +more Další trénovací množina se vytvoří z prvních N bodů ze seznamu a ze všech N_S už nalezených podpůrných vektorů, kde N+N_S je určeno heuristicky. Proces pokračuje dokud pro všechny body není rozhodnuto správně.

Tato metoda vyžaduje, aby počet podpůrných vektorů N_S byl dostatečně malý na to, aby se Hessova matice o rozměru N_S \times N_S vešla do paměti počítače. Pro ještě rozměrnější úlohy existují jiné algoritmy.

SVM regrese

Kromě klasifikace se SVM využívají také pro regresní analýzu.

SVM regrese využívá \varepsilon-necitlivou ztrátovou funkci (angl. \varepsilon-insensitive loss function) - pokud rozdíl mezi očekávanou a skutečnou hodnotou je méně než \varepsilon, není to považováno za chybu. +more Tedy chceme, aby platilo {{vzorec| - \varepsilon \le \mathbf{w} \cdot \mathbf{x_i} - b - y_i \le \varepsilon. |36}}.

Opět se minimalizuje ||\vec{w}|| a jsou zavedené přídavné proměnné (angl. slack variables) \xi_i a \hat \xi_i.

Pro lineární \varepsilon-necitlivou funkci je pak úkolem minimalizovat {{vzorec| \min_{w,b,\xi,\hat \xi} C\sum_i(\xi_i + \hat \xi_i) + \frac{1}{2}||\mathbf{w}||^2 |37}} za podmínek : (\vec{w} \cdot \vec{x_i} - b - y_i) + \xi_i \ge -\varepsilon : (\vec{w} \cdot \vec{x_i} - b - y_i) - \hat \xi_i \le \varepsilon : \xi_i, \hat \xi_i \ge 0 \quad i = 1,\dots, m

Pro nelineární regresní funkce se používá podobný postup jako u klasifikace - duální Lagrangeova funkce, jádrová transformace, atd.

Namísto pevně daného parametru \varepsilon je také možné stanovit maximální podíl bodů, pro které nebude platit vztah .

Uplatnění SVM

Support Vector Machines mají široké uplatnění, zejména pro klasifikaci. Reálné aplikace zahrnují například oblasti zpracování textu, počítačového vidění (např. +more rozpoznávání obličejů, rozpoznávání ručně psaného textu) nebo bioinformatiky (např. klasifikace proteinů).

Oproti některým srovnatelným typům klasifikátorů mají SVM několik výhod: * Trénování vždy najde globální řešení. Na rozdíl od například neuronových sítí u SVM neexistují žádná lokální minima, která by nebyla zároveň globálním minimem. +more * Reprodukovatelné výsledky, nezávislé na volbě konkrétního algoritmu nebo např. počátečního bodu. * Malý počet parametrů modelu, které je třeba určit po výběru typu jádrové funkce (může být zároveň i nevýhodou - viz níže).

SVM s sebou nese i problémy či nevýhody: * Správná funkce SVM z velké části záleží na vhodné volbě jádrové funkce. Jakmile ji stanovíme, máme jen jeden parametr, tedy penaltu chyb. +more Správnou jádrovou funkci ale nemusí být snadné najít. * U velmi rozsáhlých úloh (miliony podpůrných vektorů) je problém s rychlostí a paměťovými nároky. Vhodné algoritmy pro jejich řešení jsou stále ještě předmětem výzkumu.

Myšlenky vycházející ze SVM (málo podpůrných vektorů, maximální odstup a jádrové transformace) byly také použity i pro návrh algoritmů pro další úlohy strojového učení, např. úlohy binární klasifikace na zašuměných datech (tzv. +more soft margin), diskrétní klasifikace (do více tříd), regrese, jádrová analýza hlavních komponent (PCA), ranking, strukturované učení, učení z jedné třídy (one class support vector, single class data description).

Odkazy

Literatura

Bernhard Schölkopf, Alex Smola: Learning with Kernels: Support Vector Machines, Regularization, Optimization, and Beyond (Adaptive Computation and Machine Learning), MIT Press, Cambridge, MA, 2002, . * Ingo Steinwart, Andreas Christmann: Support Vector Machines, Springer, New York, 2008. +more . 602 pp. * Nello Cristianini, John Shawe-Taylor: Kernel Methods for Pattern Analysis, Cambridge University Press, Cambridge, 2004, * Christopher J. C. Burges: A Tutorial on Support Vector Machines for Pattern Recognition, Data Mining and Knowledge Discovery, 2(2):121-167, 1998. * Vladimir Vapnik: Statistical Learning Theory, Wiley, Chichester, GB, 1998. * Vladimir Vapnik: The Nature of Statistical Learning Theory, Springer Verlag, New York, NY, USA, 1995. * K. Bennett, C. Campbell: Support Vector Machines: Hype or Hallelujah. , ACM SIGKDD Explorations Newsletter, 2(2):1-13, New York: ACM, 2000 * R. Freund, F. Girosi, E. Osuna: An Improved Training Algorithm for Support Vector Machines, Neural Networks for Signal Processing [1997] VII. Proceedings of the 1997 IEEE Workshop, pp. 276-285, IEEE, 1997.

Kategorie:Strojové učení

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top