logo

Algoritmus podpůrného vektorového stroje (SVM).

Support Vector Machine (SVM) je výkonný algoritmus strojového učení používaný pro úlohy lineární nebo nelineární klasifikace, regrese a dokonce i detekce odlehlých hodnot. SVM lze použít pro různé úkoly, jako je klasifikace textu, klasifikace obrázků, detekce spamu, identifikace rukopisu, analýza genové exprese, detekce obličeje a detekce anomálií. SVM jsou adaptabilní a efektivní v různých aplikacích, protože dokážou spravovat vysokorozměrná data a nelineární vztahy.

Algoritmy SVM jsou velmi účinné, protože se snažíme najít maximální oddělující nadrovinu mezi různými třídami dostupnými v cílovém prvku.



nbsp

Podpora Vector Machine

Support Vector Machine (SVM) je a strojové učení pod dohledem Algoritmus používaný pro klasifikaci i regresi. I když říkáme také regresní problémy, je pro klasifikaci nejvhodnější. Hlavním cílem algoritmu SVM je najít optimální nadrovinu v N-rozměrném prostoru, která dokáže oddělit datové body v různých třídách v prostoru prvků. Nadrovina se snaží, aby vzdálenost mezi nejbližšími body různých tříd byla co největší. Rozměr nadroviny závisí na počtu prvků. Pokud je počet vstupních prvků dva, pak je nadrovina pouze čára. Pokud je počet vstupních prvků tři, pak se nadrovina stane 2D rovinou. Je obtížné si představit, když počet prvků přesáhne tři.

Uvažujme dvě nezávislé proměnné x1, X2,a jednu závisle proměnnou, kterou je buď modrý kruh nebo červený kruh.

Lineárně oddělitelné datové body



Z obrázku výše je velmi jasné, že existuje více čar (naší nadrovinou je zde čára, protože uvažujeme pouze dva vstupní prvky x1, X2), které oddělují naše datové body nebo dělají klasifikaci mezi červenými a modrými kruhy. Jak tedy vybereme nejlepší linii nebo obecně nejlepší nadrovinu, která odděluje naše datové body?

Jak funguje SVM?

Jedna rozumná volba jako nejlepší nadrovina je ta, která představuje největší vzdálenost nebo rozpětí mezi těmito dvěma třídami.

Více nadrovin oddělujících data ze dvou tříd

Více nadrovin odděluje data ze dvou tříd



Vybereme tedy nadrovinu, jejíž vzdálenost od ní k nejbližšímu datovému bodu na každé straně je maximalizovaná. Pokud taková nadrovina existuje, je známá jako nadrovina maximálního okraje/pevný okraj . Z výše uvedeného obrázku tedy vybereme L2. Podívejme se na scénář, který je uveden níže

Výběr nadroviny pro data s odlehlými hodnotami

Výběr nadroviny pro data s odlehlými hodnotami

Zde máme jednu modrou kouli na hranici červené koule. Jak tedy SVM klasifikuje data? Je to jednoduché! Modrá koule na hranici červených je odlehlou hodnotou modrých koulí. Algoritmus SVM má vlastnosti ignorovat odlehlou hodnotu a najde nejlepší nadrovinu, která maximalizuje rezervu. SVM je odolný vůči odlehlým hodnotám.

Hyperplane, který je nejvíce optimalizovaný

Hyperplane, který je nejvíce optimalizovaný

V tomto typu datového bodu tedy SVM najde maximální rezervu jako u předchozích datových sad a přidá penalizaci pokaždé, když bod překročí okraj. Takže okraje v těchto typech případů se nazývají měkké okraje . Když je v sadě dat měkký okraj, SVM se pokusí minimalizovat (1/marže+∧(∑penalta)) . Ztráta pantu je běžně používaný trest. Pokud nedojde k žádnému porušení, nedojde ke ztrátě pantu. Pokud k porušení dojde, je ztráta pantu úměrná vzdálenosti porušení.

Doposud jsme mluvili o lineárně separovatelných datech (skupina modrých kuliček a červených kuliček jsou oddělitelné přímkou/lineární čárou). Co dělat, když data nejsou lineárně oddělitelná?

Původní 1D datový soubor pro klasifikaci

Původní 1D datový soubor pro klasifikaci

Řekněme, že naše data jsou zobrazena na obrázku výše. SVM to řeší vytvořením nové proměnné pomocí a jádro . Říkáme bodu xina řádku a vytvoříme novou proměnnou yijako funkce vzdálenosti od počátku o. takže pokud to vykreslíme, dostaneme něco jako je uvedeno níže

Mapování 1D dat na 2D, aby bylo možné oddělit dvě třídy

Mapování 1D dat na 2D, aby bylo možné oddělit dvě třídy

V tomto případě je nová proměnná y vytvořena jako funkce vzdálenosti od počátku. Nelineární funkce, která vytváří novou proměnnou, se nazývá jádro.

Podporujte terminologii vektorového stroje

    Nadrovina: Nadrovina je rozhodovací hranice, která se používá k oddělení datových bodů různých tříd v prostoru prvků. V případě lineárních klasifikací to bude lineární rovnice, tj. wx+b = 0. Podpůrné vektory: Podpůrné vektory jsou datovými body nejbližšími k nadrovině, což hraje kritickou roli při rozhodování o nadrovině a okraji. Okraj: Okraj je vzdálenost mezi vektorem podpory a nadrovinou. Hlavním cílem algoritmu podpůrného vektorového stroje je maximalizace rezervy. Širší okraj indikuje lepší výkon klasifikace. Jádro : Kernel je matematická funkce, která se používá v SVM k mapování původních vstupních datových bodů do prostorů vysoce dimenzionálních prvků, takže lze nadrovinu snadno zjistit, i když datové body nejsou lineárně oddělitelné v původním vstupním prostoru. Některé z běžných funkcí jádra jsou lineární, polynomiální, radiální základní funkce (RBF) a sigmoidní. Tvrdý okraj: Nadrovina maximálního okraje nebo nadrovina pevného okraje je nadrovina, která správně odděluje datové body různých kategorií bez jakýchkoli chybných klasifikací. Měkký okraj: Pokud data nejsou dokonale oddělitelná nebo obsahují odlehlé hodnoty, SVM povoluje techniku ​​měkkého okraje. Každý datový bod má proměnnou uvolněnosti zavedenou formulací soft-margin SVM, která zmírňuje přísný požadavek na marži a umožňuje určité nesprávné klasifikace nebo porušení. Objevuje kompromis mezi zvýšením marže a snížením porušení. C: Pokuty za maximalizaci marže a chybnou klasifikaci jsou vyváženy parametrem regularizace C v SVM. O penalizaci za překročení marže nebo špatné zařazení datových položek rozhoduje ona. Přísnější trest je uložen s vyšší hodnotou C, což má za následek menší rozpětí a možná méně chybných klasifikací. Ztráta závěsu: Typickou ztrátovou funkcí v SVM je ztráta závěsu. Postihuje nesprávnou klasifikaci nebo porušení marže. Objektivní funkce v SVM je často tvořena kombinací s termínem regularizace. Duální problém: K řešení SVM lze použít duální problém optimalizačního problému, který vyžaduje umístění Lagrangeových multiplikátorů souvisejících s podpůrnými vektory. Duální složení umožňuje použití triků s jádrem a efektivnější výpočty.

Matematická intuice stroje Support Vector Machine

Zvažte problém binární klasifikace se dvěma třídami, označenými jako +1 a -1. Máme trénovací datovou sadu sestávající ze vstupních vektorů znaků X a jejich odpovídajících označení třídy Y.

Rovnici pro lineární nadrovinu lze zapsat jako:

w^Tx+ b = 0

co je v pythonu

Vektor W představuje normálový vektor k nadrovině. tj. směr kolmý k nadrovině. Parametr b v rovnici představuje odsazení nebo vzdálenost nadroviny od počátku podél normálového vektoru v .

Vzdálenost mezi datovým bodem x_i a rozhodovací hranicí lze vypočítat jako:

d_i = frac{w^T x_i + b}

kde ||w|| představuje euklidovskou normu váhového vektoru w. Euklidovská normanormálního vektoru W

Pro lineární klasifikátor SVM:

Optimalizace:

    Pro lineární klasifikátor SVM s pevným okrajem:

underset{w,b}{	ext{minimize}}frac{1}{2}w^Tw =underset{W,b}{	ext{minimize}}frac{1}{2}left | w 
ight|^{2}  	ext{předmět}; y_i(w^Tx_i + b) geq 1 ;for; i = 1, 2,3, cdots,m

Cílová proměnná nebo označení pro ičttrénovací instance je označena symbolem tiv tomto prohlášení. A ti=-1 pro negativní výskyty (když yi= 0) a ti=1 kladné případy (když yi= 1), resp. Protože požadujeme hranici rozhodování, která splňuje omezení: underset{w,b}{	ext{minimalizovat }}frac{1}{2}w^Tw+ C sum_{i=1}^m zeta_{i}  	ext{s výhradou } y_i( w^Tx_i + b)ge 1-zeta_{i};; a ; zeta_{i} ge 0;; pro ; i = 1, 2,3, cdots,m

    Pro lineární klasifikátor SVM s měkkým okrajem:

underset{alpha}{	ext{maximize}}: frac{1}{2}underset{i	o m;}{sum};underset{j	o m}{sum} alpha_ialpha_j t_i t_j K(x_i, x_j) -underset{i	o m}{součet}alpha_i

    Duální problém: Duální problém optimalizačního problému, který vyžaduje lokalizaci Lagrangeových multiplikátorů souvisejících s podpůrnými vektory, lze použít k řešení SVM. Optimální Lagrangeovy multiplikátory α(i), které maximalizují následující funkci s dvojím cílem

w= underset{i	o m}{sum}alpha_i t_i K(x_i, x) + b  t_i(w^Tx_i-b) = 1 Dlouhá šipka doprava b= w^Tx_i-t_i

kde,

  • Aije Lagrangeův multiplikátor spojený s itým trénovacím vzorkem.
  • K(xi, Xj) je funkce jádra, která počítá podobnost mezi dvěma vzorky xia xj. Umožňuje SVM řešit problémy nelineární klasifikace implicitním mapováním vzorků do prostoru funkcí s vyšší dimenzí.
  • Termín ∑αipředstavuje součet všech Lagrangeových multiplikátorů.

Rozhodovací hranici SVM lze popsat pomocí těchto optimálních Lagrangeových multiplikátorů a podpůrných vektorů, jakmile byl vyřešen duální problém a byly objeveny optimální Lagrangeovy multiplikátory. Trénovací vzorky, které mají i> 0, jsou podpůrné vektory, zatímco rozhodovací hranice dodává:

egin{aligned} 	ext{Lineární : } K(š,b) &= w^Tx+b  	ext{Polynom : } K(š,x) &= (gamma w^Tx+b)^ N  	ext{Gaussova RBF: } K(š,x) &= exp(-gamma|| x_i-x_j||^n  	ext{Sigmoid :} K(x_i, x_j) &=  tanh(alpha x_i^Tx_j + b) end{aligned}

Typy podpůrného vektorového stroje

Na základě povahy rozhodovací hranice lze podpůrné vektorové stroje (SVM) rozdělit do dvou hlavních částí:

    Lineární SVM: Lineární SVM používají lineární rozhodovací hranici k oddělení datových bodů různých tříd. Když lze data přesně lineárně oddělit, jsou velmi vhodné lineární SVM. To znamená, že jedna přímka (ve 2D) nebo nadrovina (ve vyšších dimenzích) může zcela rozdělit datové body do příslušných tříd. Nadrovina, která maximalizuje rozpětí mezi třídami, je rozhodovací hranicí. Nelineární SVM: Nelineární SVM lze použít ke klasifikaci dat, pokud je nelze oddělit do dvou tříd přímkou ​​(v případě 2D). Pomocí funkcí jádra mohou nelineární SVM zpracovávat nelineárně oddělitelná data. Původní vstupní data jsou těmito funkcemi jádra transformována do prostoru funkcí vyšší dimenze, kde lze datové body lineárně oddělovat. Lineární SVM se používá k nalezení nelineární hranice rozhodování v tomto upraveném prostoru.

Oblíbené funkce jádra v SVM

Jádro SVM je funkce, která zabírá nízkorozměrný vstupní prostor a transformuje jej do prostoru vyššího rozměru, tj. převádí neoddělitelné problémy na oddělitelné problémy. To je většinou užitečné v problémech nelineární separace. Jednoduše řečeno, jádro provádí některé extrémně složité transformace dat a poté zjistí proces oddělení dat na základě definovaných štítků nebo výstupů.

Klasifikace rakoviny prsu s SVM RBF kernel-Geeksforgeeks

Výhody SVM

  • Efektivní ve velkorozměrných případech.
  • Jeho paměť je efektivní, protože používá podmnožinu tréninkových bodů v rozhodovací funkci nazývané podpůrné vektory.
  • Pro rozhodovací funkce lze zadat různé funkce jádra a je možné specifikovat vlastní jádra.

Implementace SVM v Pythonu

Odhadněte, zda je rakovina benigní nebo maligní. Využití historických dat o pacientech s diagnostikovaným zhoubným nádorem umožňuje lékařům odlišit maligní případy a benigní případy mají samostatné atributy.

jak přejmenovat adresář linux

Kroky

  • Načtěte datovou sadu o rakovině prsu ze sklearn.datasets
  • Oddělte vstupní funkce a cílové proměnné.
  • Sestavte a trénujte klasifikátory SVM pomocí jádra RBF.
  • Vykreslete bodový graf vstupních prvků.
  • Nakreslete hranici rozhodnutí.
  • Nakreslete hranici rozhodnutí

Python3

# Load the important packages> from> sklearn.datasets>import> load_breast_cancer> import> matplotlib.pyplot as plt> from> sklearn.inspection>import> DecisionBoundaryDisplay> from> sklearn.svm>import> SVC> # Load the datasets> cancer>=> load_breast_cancer()> X>=> cancer.data[:, :>2>]> y>=> cancer.target> #Build the model> svm>=> SVC(kernel>=>'rbf'>, gamma>=>0.5>, C>=>1.0>)> # Trained the model> svm.fit(X, y)> # Plot Decision Boundary> DecisionBoundaryDisplay.from_estimator(> >svm,> >X,> >response_method>=>'predict'>,> >cmap>=>plt.cm.Spectral,> >alpha>=>0.8>,> >xlabel>=>cancer.feature_names[>0>],> >ylabel>=>cancer.feature_names[>1>],> >)> # Scatter plot> plt.scatter(X[:,>0>], X[:,>1>],> >c>=>y,> >s>=>20>, edgecolors>=>'k'>)> plt.show()>
>
>

Výstup :

Klasifikace rakoviny prsu s jádrem SVM RBF