Støtt Vector Machine (SVM) i maskinlæring

Support Vector Machine er blant de mest populære Machine Learning-algoritmene. Den er effektiv og kan trene i begrensede datasett. Men hva er det?

Hva er en støttevektormaskin (SVM)?

Støttevektormaskin er en maskinlæringsalgoritme som bruker overvåket læring for å lage en modell for binær klassifisering. Det er en munnfull. Denne artikkelen vil forklare SVM og hvordan det forholder seg til naturlig språkbehandling. Men først, la oss analysere hvordan en støttevektormaskin fungerer.

Hvordan fungerer SVM?

Tenk på et enkelt klassifiseringsproblem der vi har data som har to funksjoner, x og y, og en utgang – en klassifisering som er enten rød eller blå. Vi kan plotte et tenkt datasett som ser slik ut:

Gitt data som dette vil oppgaven være å lage en beslutningsgrense. En beslutningsgrense er en linje som skiller de to klassene til datapunktene våre. Dette er det samme datasettet, men med en beslutningsgrense:

Med denne beslutningsgrensen kan vi så lage prediksjoner for hvilken klasse et datapunkt tilhører, gitt hvor det ligger i forhold til beslutningsgrensen. Support Vector Machine-algoritmen skaper den beste beslutningsgrensen som vil bli brukt til å klassifisere poeng.

Men hva mener vi med beste beslutningsgrense?

Den beste beslutningsgrensen kan hevdes å være den som maksimerer avstanden fra en av støttevektorene. Støttevektorer er datapunkter i hver klasse som er nærmest den motsatte klassen. Disse datapunktene utgjør den største risikoen for feilklassifisering på grunn av deres nærhet til den andre klassen.

Trening av en støttevektormaskin innebærer derfor å prøve å finne en linje som maksimerer marginen mellom støttevektorer.

Det er også viktig å merke seg at fordi beslutningsgrensen er posisjonert i forhold til støttevektorene, er de de eneste determinantene for posisjonen til beslutningsgrensen. De andre datapunktene er derfor overflødige. Og dermed krever trening bare støttevektorene.

I dette eksemplet er beslutningsgrensen som dannes en rett linje. Dette er bare fordi datasettet bare har to funksjoner. Når datasettet har tre funksjoner, er beslutningsgrensen som dannes et plan i stedet for en linje. Og når den har fire eller flere funksjoner, er beslutningsgrensen kjent som et hyperplan.

  7 beste nettkurs for å forfølge sportsdataanalyse

Ikke-lineært separerbare data

Eksemplet ovenfor vurderte veldig enkle data som, når de er plottet, kan skilles med en lineær beslutningsgrense. Tenk på et annet tilfelle der data plottes som følger:

I dette tilfellet er det umulig å skille dataene ved hjelp av en linje. Men vi kan lage en annen funksjon, z. Og denne funksjonen kan defineres av ligningen: z = x^2 + y^2. Vi kan legge til z som en tredje akse til planet for å gjøre det tredimensjonalt.

Når vi ser på 3D-plotten fra en vinkel slik at x-aksen er horisontal mens z-aksen er vertikal, er dette bildet vi får noe som ser slik ut:

Z-verdien representerer hvor langt et punkt er fra origo i forhold til de andre punktene i det gamle XY-planet. Som et resultat har de blå punktene nærmere origo lave z-verdier.

Mens de røde punktene lenger fra origo hadde høyere z-verdier, gir det å plotte dem mot deres z-verdier en klar klassifisering som kan avgrenses av en lineær beslutningsgrense, som illustrert.

Dette er en kraftig idé som brukes i Support Vector Machines. Mer generelt er det ideen om å kartlegge dimensjonene til et høyere antall dimensjoner slik at datapunkter kan skilles med en lineær grense. Funksjoner som er ansvarlige for dette er kjernefunksjoner. Det er mange kjernefunksjoner, for eksempel sigmoid, lineær, ikke-lineær og RBF.

For å gjøre kartleggingen av disse funksjonene mer effektiv, bruker SVM et kjernetriks.

SVM i maskinlæring

Support Vector Machine er en av de mange algoritmene som brukes i maskinlæring sammen med populære som Decision Trees og Neural Networks. Det er foretrukket fordi det fungerer bra med færre data enn andre algoritmer. Det brukes ofte til å gjøre følgende:

  • Tekstklassifisering: Klassifisering av tekstdata som kommentarer og anmeldelser i én eller flere kategorier
  • Ansiktsgjenkjenning: Analyserer bilder for å oppdage ansikter for å gjøre ting som å legge til filtre for utvidet virkelighet
  • Bildeklassifisering: Støtte vektormaskiner kan klassifisere bilder effektivt sammenlignet med andre tilnærminger.

Problemet med tekstklassifisering

Internett er fylt med massevis av tekstdata. Imidlertid er mye av disse dataene ustrukturert og umerket. For å bedre bruke disse tekstdataene og forstå dem mer, er det behov for klassifisering. Eksempler på tider når tekst er klassifisert inkluderer:

  • Når tweets er kategorisert i emner slik at folk kan følge emner de ønsker
  • Når en e-post er kategorisert som enten sosialt, kampanjer eller spam
  • Når kommentarer klassifiseres som hatefulle eller uanstendige i offentlige fora

Hvordan SVM fungerer med naturlig språkklassifisering

Support Vector Machine brukes til å klassifisere tekst i tekst som tilhører et bestemt emne og tekst som ikke hører til emnet. Dette oppnås ved først å konvertere og representere tekstdataene til et datasett med flere funksjoner.

  Kjør onlinemøtene dine bedre med Otter

En måte å gjøre dette på er å lage funksjoner for hvert ord i datasettet. For hvert tekstdatapunkt registrerer du antall ganger hvert ord forekommer. Så anta at unike ord forekommer i datasettet; du vil ha funksjoner i datasettet.

I tillegg vil du gi klassifiseringer for disse datapunktene. Selv om disse klassifiseringene er merket med tekst, forventer de fleste SVM-implementeringer numeriske etiketter.

Derfor må du konvertere disse etikettene til tall før trening. Når datasettet er klargjort, ved å bruke disse funksjonene som koordinater, kan du bruke en SVM-modell for å klassifisere teksten.

Opprette en SVM i Python

For å lage en støttevektormaskin (SVM) i Python kan du bruke SVC-klassen fra sklearn.svm-biblioteket. Her er et eksempel på hvordan du kan bruke SVC-klassen til å bygge en SVM-modell i Python:

from sklearn.svm import SVC 

# Load the dataset 
X = ... y = ... 

# Split the data into training and test sets 

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=19) 

# Create an SVM model 
model = SVC(kernel="linear") 

# Train the model on the training data 
model.fit(X_train, y_train) 

# Evaluate the model on the test data 
accuracy = model.score(X_test, y_test) 

print("Accuracy: ", accuracy) 

I dette eksemplet importerer vi først SVC-klassen fra sklearn.svm-biblioteket. Deretter laster vi inn datasettet og deler det opp i trenings- og testsett.

Deretter lager vi en SVM-modell ved å instansiere et SVC-objekt og spesifisere kjerneparameteren som «lineær». Vi trener deretter modellen på treningsdataene ved hjelp av tilpasningsmetoden og evaluerer modellen på testdataene ved bruk av skåremetoden. Poengmetoden returnerer modellens nøyaktighet, som vi skriver ut til konsollen.

Du kan også spesifisere andre parametere for SVC-objektet, for eksempel C-parameteren som kontrollerer styrken på regulariseringen, og gamma-parameteren, som kontrollerer kjernekoeffisienten for visse kjerner.

Fordeler med SVM

Her er en liste over noen fordeler ved å bruke støttevektormaskiner (SVMer):

  • Effektiv: SVM-er er generelt effektive å trene, spesielt når antallet prøver er stort.
  • Robust til støy: SVM-er er relativt robuste mot støy i treningsdataene ettersom de prøver å finne den maksimale marginklassifikatoren, som er mindre følsom for støy enn andre klassifikatorer.
  • Minneeffektivt: SVM-er krever bare at et delsett av treningsdataene er i minnet til enhver tid, noe som gjør dem mer minneeffektive enn andre algoritmer.
  • Effektiv i høydimensjonale rom: SVM-er kan fortsatt yte godt selv når antallet funksjoner overstiger antallet prøver.
  • Allsidighet: SVM-er kan brukes til klassifiserings- og regresjonsoppgaver og kan håndtere ulike typer data, inkludert lineære og ikke-lineære data.
  Hvordan kan du få tilbake innboksen på iPaden

La oss nå utforske noen av de beste ressursene for å lære Support Vector Machine (SVM).

Læringsressurser

En introduksjon til støtte for vektormaskiner

Denne boken om introduksjon til støtte for vektormaskiner gir deg en omfattende og gradvis introduksjon til kjernebaserte læringsmetoder.

Det gir deg et solid grunnlag på Support Vector Machines-teorien.

Støtte Vector Machines-applikasjoner

Mens den første boken fokuserte på teorien om Support Vector Machines, fokuserer denne boken om Support Vector Machines Applications på deres praktiske anvendelser.

Den ser på hvordan SVM-er brukes i bildebehandling, mønstergjenkjenning og datasyn.

Støtte vektormaskiner (informasjonsvitenskap og statistikk)

Formålet med denne boken om støttevektormaskiner (informasjonsvitenskap og statistikk) er å gi en oversikt over prinsippene bak effektiviteten til støttevektormaskiner (SVM-er) i ulike applikasjoner.

Forfatterne fremhever flere faktorer som bidrar til suksessen til SVM-er, inkludert deres evne til å prestere godt med et begrenset antall justerbare parametere, deres motstand mot ulike typer feil og anomalier, og deres effektive beregningsytelse sammenlignet med andre metoder.

Læring med kjerner

«Learning with Kernels» er en bok som introduserer lesere til å støtte vektormaskiner (SVM-er) og relaterte kjerneteknikker.

Den er designet for å gi leserne en grunnleggende forståelse av matematikk og kunnskapen de trenger for å begynne å bruke kjernealgoritmer i maskinlæring. Boken har som mål å gi en grundig, men likevel tilgjengelig introduksjon til SVM-er og kjernemetoder.

Støtt vektormaskiner med Sci-kit Learn

Dette online Support Vector Machines with Sci-kit Learn-kurset av Coursera-prosjektnettverket lærer hvordan du implementerer en SVM-modell ved å bruke det populære maskinlæringsbiblioteket, Sci-Kit Learn.

I tillegg vil du lære teorien bak SVM-er og bestemme deres styrker og begrensninger. Kurset er på nybegynnernivå og tar ca. 2,5 timer.

Støtt vektormaskiner i Python: konsepter og kode

Dette betalte nettkurset om Support Vector Machines i Python av Udemy har opptil 6 timer med videobasert instruksjon og kommer med en sertifisering.

Den dekker SVM-er og hvordan de på en solid måte kan implementeres i Python. Videre dekker det forretningsapplikasjoner for Support Vector Machines.

Maskinlæring og AI: Støtt vektormaskiner i Python

I dette kurset om maskinlæring og AI lærer du hvordan du bruker støttevektormaskiner (SVM) for ulike praktiske applikasjoner, inkludert bildegjenkjenning, spam-deteksjon, medisinsk diagnose og regresjonsanalyse.

Du vil bruke programmeringsspråket Python til å implementere ML-modeller for disse applikasjonene.

Siste ord

I denne artikkelen lærte vi kort om teorien bak Support Vector Machines. Vi lærte om deres anvendelse innen maskinlæring og naturlig språkbehandling.

Vi så også hvordan implementeringen med scikit-learn ser ut. Videre snakket vi om de praktiske bruksområdene og fordelene med Support Vector Machines.

Selv om denne artikkelen bare var en introduksjon, anbefalte tilleggsressursene å gå i mer detalj og forklare mer om Support Vector Machines. Gitt hvor allsidige og effektive de er, er SVM-er verdt å forstå for å vokse som dataforsker og ML-ingeniør.

Deretter kan du sjekke ut de beste maskinlæringsmodellene.