logo

Tuki Vector Machine (SVM) -algoritmi

Support Vector Machine (SVM) on tehokas koneoppimisalgoritmi, jota käytetään lineaarisiin tai epälineaarisiin luokittelu-, regressio- ja jopa poikkeavien havaitsemistehtäviin. SVM:itä voidaan käyttää erilaisiin tehtäviin, kuten tekstin luokitteluun, kuvien luokitukseen, roskapostin havaitsemiseen, käsinkirjoituksen tunnistamiseen, geenien ilmentymisen analysointiin, kasvojen havaitsemiseen ja poikkeamien havaitsemiseen. SVM:t ovat mukautuvia ja tehokkaita useissa eri sovelluksissa, koska ne voivat hallita suuriulotteisia tietoja ja epälineaarisia suhteita.

SVM-algoritmit ovat erittäin tehokkaita, kun yritämme löytää suurimman erotustason kohdeominaisuuden eri luokkien välillä.

c#

Tuki Vector Machine

Support Vector Machine (SVM) on a valvottua koneoppimista algoritmi, jota käytetään sekä luokittelussa että regressiossa. Vaikka sanomme myös regressioongelmia, se sopii parhaiten luokitteluun. SVM-algoritmin päätavoitteena on löytää N-ulotteisesta avaruudesta optimaalinen hypertaso, joka pystyy erottamaan ominaisuusavaruuden eri luokkiin kuuluvat datapisteet. Hypertaso pyrkii siihen, että eri luokkien lähimpien pisteiden välinen marginaali olisi mahdollisimman suuri. Hypertason koko riippuu piirteiden lukumäärästä. Jos syöteominaisuuksia on kaksi, niin hypertaso on vain viiva. Jos syöteominaisuuksia on kolme, hypertasosta tulee 2-D-taso. On vaikea kuvitella, kun ominaisuuksia on enemmän kuin kolme.



Tarkastellaan kahta riippumatonta muuttujaa x1, x2,ja yksi riippuva muuttuja, joka on joko sininen ympyrä tai punainen ympyrä.

Lineaarisesti erotettavat datapisteet

Yllä olevasta kuvasta käy hyvin selväksi, että rivejä on useita (hypertasomme tässä on viiva, koska harkitsemme vain kahta syöttöominaisuutta x1, x2), jotka erottavat tietopisteemme tai luokittelevat punaisia ​​ja sinisiä ympyröitä. Miten sitten valitaan paras viiva tai yleensä paras hypertaso, joka erottaa datapisteemme?

Miten SVM toimii?

Yksi järkevä valinta parhaaksi hypertasoksi on se, joka edustaa suurinta eroa tai marginaalia kahden luokan välillä.

Useita hypertasoja, jotka erottavat tiedot kahdesta luokasta

Useat hypertasot erottavat tiedot kahdesta luokasta

Joten valitsemme hypertason, jonka etäisyys siitä lähimpään datapisteeseen kummallakin puolella on maksimoitu. Jos tällainen hypertaso on olemassa, se tunnetaan nimellä maksimimarginaali hypertaso/kova marginaali . Joten yllä olevasta kuvasta valitsemme L2. Tarkastellaan alla olevan kaltaista skenaariota

Valitaan hypertaso tiedoille, joissa on outlier

Valitaan hypertaso tiedoille, joissa on outlier

Tässä meillä on yksi sininen pallo punaisen pallon rajalla. Joten miten SVM luokittelee tiedot? Se on yksinkertaista! Punaisten pallojen rajalla oleva sininen pallo on sinisten pallojen poikkeama. SVM-algoritmilla on ominaisuudet jättää huomiotta poikkeava arvo ja se löytää parhaan hypertason, joka maksimoi marginaalin. SVM on kestävä poikkeaville.

Hyperplane, joka on optimoitu

Hyperplane, joka on optimoitu

Joten tämän tyyppisessä datapisteessä SVM löytää maksimimarginaalin, kuten aikaisempien tietojoukkojen kanssa tehtiin, ja lisää rangaistuksen joka kerta, kun piste ylittää marginaalin. Joten marginaaleja tämäntyyppisissä tapauksissa kutsutaan pehmeät marginaalit . Kun tietojoukossa on pehmeä marginaali, SVM yrittää minimoida (1/marginaali+∧(∑rangaistus)) . Saranojen katoaminen on yleisesti käytetty rangaistus. Jos rikkomuksia ei ole saranahäviötä. Jos rikkomuksia saranan menetys on verrannollinen rikkomisen etäisyyteen.

Tähän asti puhuimme lineaarisesti erotettavissa olevista tiedoista (sinisten pallojen ja punaisten pallojen ryhmä on erotettavissa suoralla/lineaarisella viivalla). Mitä tehdä, jos tiedot eivät ole lineaarisesti erotettavissa?

Alkuperäinen 1D-tietojoukko luokittelua varten

Alkuperäinen 1D-tietojoukko luokittelua varten

historia javassa

Sanotaan, että tietomme näkyvät yllä olevassa kuvassa. SVM ratkaisee tämän luomalla uuden muuttujan käyttämällä a ydin . Kutsumme pistettä xirivillä ja luomme uuden muuttujan yifunktiona etäisyyden alkuperästä o. joten jos piirrämme tämän, saamme jotain alla esitetyn kaltaista

1D-tietojen yhdistäminen 2D-muotoon, jotta nämä kaksi luokkaa voidaan erottaa

1D-tietojen yhdistäminen 2D-muotoon, jotta nämä kaksi luokkaa voidaan erottaa

Tässä tapauksessa uusi muuttuja y luodaan etäisyyden origosta funktiona. Epälineaarista funktiota, joka luo uuden muuttujan, kutsutaan ytimeksi.

Tuki vektorikoneterminologiaa

    Hypertaso: Hypertaso on päätösraja, jota käytetään erottamaan eri luokkien datapisteet piirreavaruudessa. Lineaaristen luokittelujen tapauksessa se on lineaarinen yhtälö eli wx+b = 0. Tukivektorit: Tukivektorit ovat lähimpänä hypertasoa olevia datapisteitä, mikä on kriittinen rooli hypertason ja marginaalin päättämisessä. Marginaali: Marginaali on tukivektorin ja hypertason välinen etäisyys. Tukivektorikoneen algoritmin päätavoite on maksimoida marginaali. Leveämpi marginaali osoittaa parempaa luokittelusuoritusta.Ydin: Ydin on matemaattinen funktio, jota käytetään SVM:ssä kartoittamaan alkuperäiset syöttödatapisteet korkeadimensionaalisiin piirreavaruksiin, jotta hypertaso voidaan helposti selvittää, vaikka datapisteet olisivat eivät ole lineaarisesti erotettavissa alkuperäisessä syöttöavaruudessa. Jotkut yleisimmistä ydinfunktioista ovat lineaarisia, polynomisia, säteittäisiä perusfunktioita (RBF) ja sigmoidisia. Kova marginaali: Maksimimarginaalin hypertaso tai kovan marginaalin hypertaso on hypertaso, joka erottaa eri luokkien datapisteet oikein ilman luokitteluvirheitä. Pehmeä marginaali: Kun tiedot eivät ole täysin erotettavissa tai sisältävät poikkeavuuksia, SVM sallii pehmeän marginaalitekniikan. Jokaisessa datapisteessä on pehmeän marginaalin SVM-formulaation tuoma löysä muuttuja, joka pehmentää tiukkaa marginaalivaatimusta ja sallii tietyt virheelliset luokittelut tai rikkomukset. Se löytää kompromissin marginaalin lisäämisen ja rikkomusten vähentämisen välillä.C: Marginaalin maksimointi- ja virheluokituksen sakot tasapainotetaan SVM:n säännöstelyparametrilla C. Se päättää marginaalin ylittämisestä tai tietojen väärin luokiteltamisesta rangaistuksen. Tiukempi rangaistus määrätään suuremmalla C-arvolla, mikä johtaa pienempään marginaaliin ja ehkä vähemmän vääriin luokitteluihin. Saranahäviö: Tyypillinen SVM-häviötoiminto on saranahäviö. Se rankaisee virheellisistä luokitteluista tai marginaalirikkomuksista. SVM:n tavoitefunktio muodostetaan usein yhdistämällä se regularisointitermiin. Kaksoisongelma: Optimointitehtävän kaksoisongelma, joka edellyttää tukivektoreihin liittyvien Lagrange-kertoimien paikantamista, voidaan käyttää SVM:n ratkaisemiseen. Kaksoisformulaatio mahdollistaa ytimen temppujen käytön ja tehokkaamman laskennan.

Tukivektorikoneen matemaattinen intuitio

Tarkastellaan binääristä luokitusongelmaa, jossa on kaksi luokkaa, jotka on merkitty +1 ja -1. Meillä on opetustietojoukko, joka koostuu syötepiirrevektoreista X ja niitä vastaavista luokkatunnisteista Y.

Lineaarisen hypertason yhtälö voidaan kirjoittaa seuraavasti:

w^Tx+ b = 0

Vektori W edustaa hypertason normaalia vektoria. eli hypertasoon nähden kohtisuorassa suunnassa. Parametri b yhtälössä edustaa hypertason siirtymää tai etäisyyttä origosta normaalivektoria pitkin Sisään .

Datapisteen x_i ja päätösrajan välinen etäisyys voidaan laskea seuraavasti:

d_i = frac{w^T x_i + b}

missä ||w|| edustaa painovektorin w euklidistä normia. Euklidinen norminormaalivektorista W

Lineaariselle SVM-luokittimelle:

Optimointi:

    Kovan marginaalin lineaarinen SVM-luokitin:

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

Kohdemuuttuja tai tunniste i:llethkoulutustapaus on merkitty symbolilla titässä lausunnossa. Ja Ti=-1 negatiivisille tapahtumille (kun yi= 0) ja ti=1positiivinen tapaus (kun yi= 1) vastaavasti. Koska vaadimme päätösrajan, joka täyttää rajoituksen: underset{w,b}{	ext{minimoi }}frac{1}{2}w^Tw+ C sum_{i=1}^m zeta_{i}  	ext{subject to } y_i( w^Tx_i + b)ge 1-zeta_{i};; ja ; zeta_{i} ge 0;; for ; i = 1, 2,3, cdots,m

    Pehmeän marginaalin lineaarinen SVM-luokitin:

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}{sum}alpha_i

    Kaksoisongelma: Optimointiongelman kaksoisongelma, joka edellyttää tukivektoreihin liittyvien Lagrange-kertoimien paikallistamista, voidaan käyttää SVM:n ratkaisemiseen. Optimaaliset Lagrange-kertoimet α(i), jotka maksimoivat seuraavan kaksoistavoitteen funktion

w= underset{i	o m}{sum}alpha_i t_i K(x_i, x) + b  t_i(w^Tx_i-b) = 1 Longleftrightarrow b= w^Tx_i-t_i

missä,

  • aion i:teen harjoitusnäytteeseen liittyvä Lagrange-kerroin.
  • K(xi, xj) on ydinfunktio, joka laskee kahden näytteen x samankaltaisuudenija xj. Sen avulla SVM voi käsitellä epälineaarisia luokitteluongelmia kartoittamalla näytteet implisiittisesti korkeamman ulottuvuuden ominaisuusavaruuteen.
  • Termi ∑αiedustaa kaikkien Lagrange-kertoimien summaa.

SVM-päätösraja voidaan kuvata näillä optimaalisilla Lagrange-kertoimilla ja tukivektoreilla, kun kaksoisongelma on ratkaistu ja optimaaliset Lagrange-kertoimet on löydetty. Harjoitusnäytteet, joilla on i> 0, ovat tukivektoreita, kun taas päätösraja saadaan:

egin{tasattu} 	eksti{Lineaarinen : } K(w,b) &= w^Tx+b  	eksti{Polynomi : } K(w,x) &= (gamma w^Tx+b)^ N  	ext{Gaussin RBF: } K(w,x) &= exp(-gamma|| x_i-x_j||^n  	ext{Sigmoid :} K(x_i, x_j) &=  tanh(alpha x_i^Tx_j + b) end{aligned}

Tukivektorikonetyypit

Päätösrajan luonteen perusteella tukivektorikoneet (SVM) voidaan jakaa kahteen pääosaan:

    Lineaarinen SVM: Lineaariset SVM:t käyttävät lineaarista päätösrajaa eri luokkien datapisteiden erottamiseen. Kun data voidaan erottaa tarkasti lineaarisesti, lineaariset SVM:t ovat erittäin sopivia. Tämä tarkoittaa, että yksittäinen suora (2D:ssä) tai hypertaso (suuremmissa ulottuvuuksissa) voi jakaa datapisteet kokonaan niiden vastaaviin luokkiin. Päätösraja on hypertaso, joka maksimoi luokkien välisen marginaalin. Epälineaarinen SVM: Epälineaarista SVM:ää voidaan käyttää tietojen luokittelemiseen, kun sitä ei voida jakaa kahteen luokkaan suoralla viivalla (2D:n tapauksessa). Ydinfunktioita käyttämällä epälineaariset SVM:t voivat käsitellä epälineaarisesti erotettavaa dataa. Alkuperäinen syöttödata muunnetaan näiden ydinfunktioiden toimesta korkeamman ulottuvuuden ominaisuusavaruuteen, jossa datapisteet voidaan erottaa lineaarisesti. Lineaarista SVM:ää käytetään epälineaarisen päätösrajan paikantamiseen tässä muokatussa avaruudessa.

Suosittuja ydintoimintoja SVM:ssä

SVM-ydin on funktio, joka vie matalaulotteisen syöttötilan ja muuntaa sen korkeampiulotteiseksi avaruuteen, eli se muuntaa erottamattomat ongelmat erotettaviksi ongelmiksi. Se on enimmäkseen hyödyllinen epälineaarisissa erotusongelmissa. Yksinkertaisesti sanottuna ydin tekee äärimmäisen monimutkaisia ​​datamuunnoksia ja selvittää sitten prosessin tietojen erottamiseksi määritettyjen nimikkeiden tai tulosteiden perusteella.

Rintasyövän luokitukset SVM RBF -ytimellä-Geeksforgeeks

SVM:n edut

  • Tehokas suurikokoisissa tapauksissa.
  • Sen muisti on tehokas, koska se käyttää päätösfunktiossa harjoituspisteiden osajoukkoa, jota kutsutaan tukivektoreiksi.
  • Päätösfunktioille voidaan määrittää erilaisia ​​ytimen toimintoja ja on mahdollista määrittää mukautettuja ytimiä.

SVM-toteutus Pythonissa

Ennusta onko syöpä hyvänlaatuinen vai pahanlaatuinen. Käyttämällä historiallisia tietoja potilaista, joilla on diagnosoitu syöpä, lääkärit voivat erottaa pahanlaatuiset tapaukset, ja hyvänlaatuiset saavat itsenäisiä ominaisuuksia.

Askeleet

  • Lataa rintasyöpädata osoitteesta sklearn.datasets
  • Erilliset syöttöominaisuudet ja kohdemuuttujat.
  • Rakenna ja kouluta SVM-luokittajia RBF-ytimen avulla.
  • Piirrä syöteominaisuuksien hajontakaavio.
  • Piirrä päätöksen raja.
  • Piirrä päätöksen raja

Python 3

# 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()>
>
>

Lähtö :

foreach silmukan konekirjoitus

Rintasyövän luokitukset SVM RBF -ytimellä