Support Vector Machines (SVM) er en kraftig overvåket læringsalgoritme som brukes til klassifiserings- og regresjonsoppgaver. Det primære målet med en SVM er å finne det optimale hyperplanet som best skiller datapunktene til forskjellige klasser i et høydimensjonalt rom. Klassifiseringen av et funksjonssett i SVM er dypt knyttet til beslutningsfunksjonen, spesielt dens fortegn, som spiller en viktig rolle i å bestemme hvilken side av hyperplanet et gitt datapunkt faller på.
Beslutningsfunksjon i SVM
Beslutningsfunksjonen for en SVM kan uttrykkes som:
der:
- er vektvektoren som definerer orienteringen til hyperplanet.
- er egenskapsvektoren til datapunktet som klassifiseres.
- er skjevhetsbegrepet som forskyver hyperplanet.
For å klassifisere et datapunkt , brukes tegnet til beslutningsfunksjonen:
Dette tegnet bestemmer siden av hyperplanet som datapunktet ligger på.
Rollen til påloggingsklassifiseringen
Tegnet på beslutningsfunksjonen () bestemmer direkte klasseetiketten som er tildelt datapunktet
. Slik fungerer det:
1. Positivt tegn: Hvis , er tegnet på beslutningsfunksjonen positivt. Dette betyr at datapunktet
ligger på siden av hyperplanet der den positive klassen befinner seg. Derfor,
er klassifisert som tilhørende den positive klassen (vanligvis betegnet som +1).
2. Negativt tegn: Hvis , fortegnet til beslutningsfunksjonen er negativ. Dette indikerer at datapunktet
ligger på siden av hyperplanet der den negative klassen befinner seg. Derfor,
er klassifisert som tilhørende den negative klassen (vanligvis betegnet som -1).
3. Zero: I det sjeldne tilfellet hvor , datapunktet
ligger nøyaktig på hyperplanet. Dette scenariet er teoretisk mulig, men praktisk talt sjeldent på grunn av den kontinuerlige naturen til data med virkelig verdi.
Geometrisk tolkning
Den geometriske tolkningen av beslutningsfunksjonen er avgjørende for å forstå hvordan SVM-er klassifiserer datapunkter. Hyperplanet definert av fungerer som beslutningsgrensen mellom de to klassene. Orienteringen og posisjonen til dette hyperplanet bestemmes av vektvektoren
og skjevhetsbegrepet
.
1. Margin: Marginen er avstanden mellom hyperplanet og de nærmeste datapunktene fra hver klasse. SVM har som mål å maksimere denne marginen for å sikre at hyperplanet ikke bare skiller klassene, men gjør det med størst mulig avstand fra de nærmeste datapunktene. Disse nærmeste datapunktene er kjent som støttevektorer.
2. Støtte vektorer: Støttevektorer er datapunktene som ligger nærmest hyperplanet. De er kritiske for å definere posisjonen og orienteringen til hyperplanet. Enhver endring i posisjonen til disse støttevektorene vil endre hyperplanet.
Eksempel
Tenk på et enkelt eksempel hvor vi har et todimensjonalt funksjonsrom med datapunkter fra to klasser. La oss betegne den positive klassen med +1 og den negative klassen med -1. Anta vektvektoren og skjevhetsbegrepet
.
For et datapunkt , kan vi beregne beslutningsfunksjonen som følger:
Siden , er tegnet på beslutningsfunksjonen positivt, og dermed datapunktet
er klassifisert som tilhørende den positive klassen (+1).
For et annet datapunkt , beregner vi beslutningsfunksjonen som:
En gang til, , så tegnet er positivt, og
er klassifisert som tilhørende den positive klassen (+1).
Vurder nå et datapunkt :
I dette tilfellet, , så tegnet er negativt, og
er klassifisert som tilhørende den negative klassen (-1).
Matematisk formulering
Den matematiske formuleringen av SVM innebærer å løse et optimaliseringsproblem for å finne det optimale og
som maksimerer marginen samtidig som treningsdataene klassifiseres korrekt. Optimaliseringsproblemet kan uttrykkes som:
hvor er klasseetiketten til datapunktet
, og begrensningen sikrer at alle datapunkter er korrekt klassifisert med en margin på minst 1.
Kjernetriks
I mange praktiske applikasjoner kan data ikke være lineært separerbare i det opprinnelige funksjonsrommet. For å løse dette kan SVM-er utvides til ikke-lineær klassifisering ved å bruke kjernetrikset. En kjernefunksjon implisitt kartlegger dataene inn i et høyere dimensjonalt rom hvor en lineær separasjon er mulig. Vanlig brukte kjernefunksjoner inkluderer polynomkjernen, radial basisfunksjon (RBF)-kjernen og sigmoid-kjernen.
Beslutningsfunksjonen i den kjerneiserte SVM blir:
hvor er Lagrange-multiplikatorene hentet fra den doble formen av optimaliseringsproblemet.
Python -implementering
I Python gir `scikit-learn`-biblioteket en enkel implementering av SVM gjennom `SVC`-klassen. Nedenfor er et eksempel på hvordan du bruker "SVC" for å klassifisere et datasett:
python from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.metrics import accuracy_score # Load the dataset iris = datasets.load_iris() X = iris.data y = iris.target # Select only two classes for binary classification X = X[y != 2] y = y[y != 2] # Split the dataset into training and testing sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # Create an SVM classifier with a linear kernel clf = SVC(kernel='linear') # Train the classifier clf.fit(X_train, y_train) # Predict the class labels for the test set y_pred = clf.predict(X_test) # Calculate the accuracy of the classifier accuracy = accuracy_score(y_test, y_pred) print(f'Accuracy: {accuracy * 100:.2f}%')
I dette eksemplet brukes "SVC"-klassen til å lage en SVM-klassifisering med en lineær kjerne. Klassifisereren trenes på treningssettet, og nøyaktigheten vurderes på testsettet. Klassifiseringen av et funksjonssett i SVM er grunnleggende avhengig av fortegnet til beslutningsfunksjonen . Tegnet bestemmer på hvilken side av hyperplanet et datapunkt ligger, og tildeler det dermed til den tilsvarende klassen. Beslutningsfunksjonen, optimaliseringsprosessen for å finne det optimale hyperplanet og den potensielle bruken av kjernefunksjoner for å håndtere ikke-lineær separerbarhet er alle viktige komponenter i SVM-er. Å forstå disse aspektene gir en omfattende oversikt over hvordan SVM-er fungerer og deres anvendelse i ulike maskinlæringsoppgaver.
Andre nyere spørsmål og svar vedr EITC/AI/MLP maskinlæring med Python:
- Hvordan beregnes b-parameteren i lineær regresjon (y-skjæringspunktet til linjen som passer best)?
- Hvilken rolle spiller støttevektorer i å definere beslutningsgrensen til en SVM, og hvordan identifiseres de under opplæringsprosessen?
- I sammenheng med SVM-optimalisering, hva er betydningen av vektvektoren `w` og bias `b`, og hvordan bestemmes de?
- Hva er hensikten med `visualisere`-metoden i en SVM-implementering, og hvordan hjelper den til å forstå modellens ytelse?
- Hvordan bestemmer `forutsig`-metoden i en SVM-implementering klassifiseringen av et nytt datapunkt?
- Hva er hovedmålet med en Support Vector Machine (SVM) i sammenheng med maskinlæring?
- Hvordan kan biblioteker som scikit-learn brukes til å implementere SVM-klassifisering i Python, og hva er nøkkelfunksjonene involvert?
- Forklar betydningen av begrensningen (y_i (mathbf{x}_i cdot mathbf{w} + b) geq 1) i SVM-optimalisering.
- Hva er målet med SVM-optimeringsproblemet og hvordan er det matematisk formulert?
- Hva er rollen til hyperplanligningen (mathbf{x} cdot mathbf{w} + b = 0) i sammenheng med Support Vector Machines (SVM)?
Se flere spørsmål og svar i EITC/AI/MLP Machine Learning with Python