SVM i Sklearn

SVM i Sklearn
Support-Vector Machines (SVMS, også kjent som supportvektornettverk) i maskinlæring er overvåket læringsmodeller med tilsvarende algoritmer som evaluerer data for regresjon og klassifisering. SVM -er, basert på statistiske læringsrammer eller VC -teorien satt ut av Chervonenkis og Vapnik, er blant de mest pålitelige prediksjonsteknikkene (1974). Implementeringen av SVMer i Sklearn, så vel som fordelene og ulempene, vil bli dekket i denne artikkelen.

Hva er SVM?

SVM eller Support Vector Machine er en overvåket maskinlæringsteknikk for å analysere data for regresjon og klassifisering. Målet med SVM-algoritmen er å definere den optimale beslutningsgrensen eller linjen som kan kategorisere det n-dimensjonale rommet, slik at vi kan klassifisere ferske datapunkter i fremtiden raskt. Denne beslutningsgrensen er kjent som et hyperplan. Dette gjør at modellen din kan sortere et merket datasett og kategorisere umerket inngang. Det er en av de mest populære overvåkede læringsalgoritmene og brukes ofte til å klassifisere bilder ved å bruke funksjonene som er utvunnet av et dypt konvolusjonelt nevralt nettverk.

Anta at du har noen lineært separerbare punkter i papiret ditt som er av forskjellige slag. SVM vil lokalisere en rett linje som så langt det er rimelig mulig deler disse punktene i to kategorier. Se for deg to par punkter som ligger på et fly. De første er røde, mens resten er blå. For å optimalisere avstanden fra begge punkter, søker en støttevektormaskin ut en linje som deler de røde punktene fra de blå. Dette er kjent som Største forskjellsmargin. Det er viktig å måle avstanden fra linjen til punktene ved grensene til de to punktene for å bestemme margen med den største forskjellen. De omtaler dem som Støtte vektorer. Punktene må skilles med en linje siden de må skilles med en. Begrepet for dette er lineær separabilitet. Kjernetrikset er et avgjørende tillegg til supportvektormaskinalgoritmen for å overvinne denne begrensningen. Dette flytter dataene til et høyere dimensjonalt rom og bruker en lineær funksjon for å skille dem der der. Gjennom en såkalt kjerne blir transformasjonen utført. Dette kan bare tenkes fordi den lineære funksjonens beregning for å skille dataene avhenger av støttevektorenes/punkter 'DOT -produkt. Enkelt sagt: For å forhindre bruk av en linje for å dele de røde fra de blå punktene, må du blande dem på flyet.

Løft de røde, og la de blå nede. Det er nå åpenbart at du kan skille punktene ved hjelp av et fly. Kjerneteknikken oppnår dette. Det endrer dataene i en høyere dimensjon for antagelig lineært separerbare. Å løfte den la til en tredje dimensjon (tre dimensjoner), som skilte punktene med en linje i tre dimensjoner, et fly, mens punktene på gulvet (to dimensjoner) ikke var.

Fordeler med SVM

  1. I høydimensjonale rom er det mer effektivt å bruke hukommelsen godt nok.
  2. Passer for klasser med distinkte utmerkelsesmarginer. I tillegg effektive når prøvestørrelser overstiger samlede dimensjoner.

Ulemper ved SVM

  1. Når de totale egenskapene til hvert datapunkt er større enn treningsdataprøvene, fungerer det ikke bra. I tillegg er ikke teknikken passende for større datasett.
  2. Et datasett begynner å henge når målklassene overlapper hverandre, eller mer støy er til stede. I tillegg mangler klassifiseringen produsert av støttevektorklassifisereren en sannsynlig begrunnelse.

Implementering av SVM i Sklearn

Importere biblioteker
Fra Sklearn.Datasett importerer make_classification
Fra Sklearn Import SVM
Opprette datasett
X, y = make_classification (random_state = 42)
trykk ('Togdata er', x)
trykk ('Testdata er', y)

Produksjon

Togdata er [[-2.02514259 0.0291022 -0.47494531… -0.33450124 0.86575519
-1.20029641]
[ 1.61371127 0.65992405 -0.15005559… 1.37570681 0.70117274
-0.2975635]
[0.16645221 0.95057302 1.42050425… 1.18901653 -0.55547712
-0.63738713]
..
[-0.03955515 -1.60499282 0.22213377… -0.30917212 -0.46227529
-0.43449623]
[ 1.08589557 1.2031659 -0.6095122… -0.3052247 -1.31183623
-1.06511366]
[-0.00607091 1.30857636 -0.17495976… 0.99204235 0.32169781
-0.66809045]]]
Testdata er [0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0
0 1 1 1 0 1 0 0 1 1 0 0 1 1 1 0 1 0 0 1 1 0 1 1 1 1 1 0 1 0 0 1 0 1 0 1 0
1 1 1 0 0 0 1 0 1 0 1 1 1 1 1 0 0 1 0 1 1 0 1 1 0 0]
Opprette SVM -modell
Model = SVM.SVC ()
modell.passform (x, y)
trykk ('Støttevektorer er', modell.support_vectors_)
trykk ('indekser for støttevektorer er', modell.Brukerstøtte_)

Produksjon

Støttevektorer er [[-2.02514259 0.0291022 -0.47494531… -0.33450124 0.86575519
-1.20029641]
[0.17989415 -0.22210005 0.10537551… -0.96834445 -0.22463315
0.5500521]
[-1.22576566 0.80742726 0.65232288… 0.88365994 -0.03850847
-0.1726273]
..
[0.2005692 -0.24878048 -1.07213901… 0.08614388 -0.36702784
-0.82759022]
[-0.6115178 -1.22532865 -0.85835778… 0.18483612 2.63238206
0.4933179]
[-0.22096417 -0.54561186 -0.57117899… 0.64084286 -0.28110029
1.79768653]]]
Indekser for støttevektorer er [0 4 5 6 8 11 12 13 18 21 22 23 24 27 29 30 31 32 33 34 36 47 52 54
58 67 73 78 79 81 83 89 92 95 2 3 7 9 10 14 25 35 38 39 40 42 45 49
51 57 59 60 61 62 63 68 72 74 75 76 80 85 86 88 91 93 94 96]

Konklusjon

Vi gikk gjennom forklaringen av Support Vector Machines (SVM) sammen med deres fordeler, ulemper og implementering. SVM trekker hyperplaner mellom punkter med den største marginen og kan brukes til klassifisering og regresjonssaker. Vi så hvordan Sklearn gir oss en enkel måte å implementere SVM og få detaljer om støttevektorene.