Support Vector Machines (SVM'er) er en kraftfuld overvåget læringsalgoritme, der bruges til klassificerings- og regressionsopgaver. Det primære mål med en SVM er at finde det optimale hyperplan, der bedst adskiller datapunkterne fra forskellige klasser i et højdimensionelt rum. Klassificeringen af et funktionssæt i SVM er dybt knyttet til beslutningsfunktionen, især dets fortegn, som spiller en vigtig rolle i at bestemme, hvilken side af hyperplanet et givet datapunkt falder på.
Beslutningsfunktion i SVM
Beslutningsfunktionen for en SVM kan udtrykkes som:
hvor:
- er vægtvektoren, der definerer orienteringen af hyperplanet.
- er funktionsvektoren for det datapunkt, der klassificeres.
- er bias-begrebet, der flytter hyperplanet.
At klassificere et datapunkt , bruges tegnet for beslutningsfunktionen:
Dette tegn bestemmer den side af hyperplanet, som datapunktet ligger på.
Rolle af indlogningsklassifikationen
Tegnet på beslutningsfunktionen () bestemmer direkte den klasselabel, der er tildelt datapunktet
. Sådan fungerer det:
1. Positivt tegn: Hvis , er fortegnet for beslutningsfunktionen positivt. Det betyder, at datapunktet
ligger på den side af hyperplanet, hvor den positive klasse er placeret. Derfor,
er klassificeret som tilhørende den positive klasse (normalt betegnet som +1).
2. Negativt tegn: Hvis , fortegnet for beslutningsfunktionen er negativt. Dette indikerer, at datapunktet
ligger på den side af hyperplanet, hvor den negative klasse er placeret. Derfor,
er klassificeret som tilhørende den negative klasse (normalt betegnet som -1).
3. Zero: I det sjældne tilfælde hvor , datapunktet
ligger præcis på hyperplanet. Dette scenarie er teoretisk muligt, men praktisk talt sjældent på grund af den kontinuerlige karakter af data med virkelig værdi.
Geometrisk fortolkning
Den geometriske fortolkning af beslutningsfunktionen er afgørende for at forstå, hvordan SVM'er klassificerer datapunkter. Hyperplanet defineret af fungerer som beslutningsgrænsen mellem de to klasser. Orienteringen og positionen af dette hyperplan bestemmes af vægtvektoren
og bias-begrebet
.
1. Margin: Marginen er afstanden mellem hyperplanet og de nærmeste datapunkter fra hver klasse. SVM sigter mod at maksimere denne margin for at sikre, at hyperplanet ikke kun adskiller klasserne, men gør det med størst mulig afstand fra de nærmeste datapunkter. Disse nærmeste datapunkter er kendt som støttevektorer.
2. Støtte vektorer: Støttevektorer er de datapunkter, der ligger tættest på hyperplanet. De er kritiske til at definere hyperplanets position og orientering. Enhver ændring i positionen af disse støttevektorer ville ændre hyperplanet.
Eksempel
Overvej et simpelt eksempel, hvor vi har et todimensionelt funktionsrum med datapunkter fra to klasser. Lad os betegne den positive klasse med +1 og den negative klasse med -1. Antag vægtvektoren og bias-begrebet
.
For et datapunkt , kan vi beregne beslutningsfunktionen som følger:
Siden , er tegnet på beslutningsfunktionen positivt, og dermed datapunktet
er klassificeret som tilhørende den positive klasse (+1).
For et andet datapunkt , beregner vi beslutningsfunktionen som:
Igen, , så tegnet er positivt, og
er klassificeret som tilhørende den positive klasse (+1).
Overvej nu et datapunkt :
I dette tilfælde, , så tegnet er negativt, og
er klassificeret som tilhørende den negative klasse (-1).
Matematisk formulering
Den matematiske formulering af SVM går ud på at løse et optimeringsproblem for at finde det optimale og
der maksimerer marginen, mens træningsdataene klassificeres korrekt. Optimeringsproblemet kan udtrykkes som:
hvor er klassemærket for datapunktet
, og begrænsningen sikrer, at alle datapunkter er korrekt klassificeret med en margen på mindst 1.
Kernel trick
I mange praktiske applikationer er data muligvis ikke lineært adskillelige i det oprindelige funktionsrum. For at løse dette kan SVM'er udvides til ikke-lineær klassificering ved hjælp af kernetricket. En kernefunktion implicit kortlægger dataene i et højere dimensionelt rum, hvor en lineær adskillelse er mulig. Almindeligt anvendte kernefunktioner inkluderer polynomisk kerne, radial basisfunktion (RBF) kerne og sigmoid kerne.
Beslutningsfunktionen i den kerneliserede SVM bliver:
hvor er Lagrange-multiplikatorerne opnået fra den dobbelte form af optimeringsproblemet.
Python implementering
I Python giver `scikit-learn`-biblioteket en ligetil implementering af SVM gennem `SVC`-klassen. Nedenfor er et eksempel på, hvordan du bruger "SVC" til at klassificere et datasæt:
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 eksempel bruges 'SVC'-klassen til at skabe en SVM-klassifikator med en lineær kerne. Klassifikatoren trænes på træningssættet, og nøjagtigheden vurderes på testsættet. Klassificeringen af et featuresæt i SVM er grundlæggende afhængig af beslutningsfunktionens fortegn. . Tegnet bestemmer på hvilken side af hyperplanet et datapunkt ligger, og tildeler det derved til den tilsvarende klasse. Beslutningsfunktionen, optimeringsprocessen for at finde det optimale hyperplan og den potentielle brug af kernefunktioner til at håndtere ikke-lineær separerbarhed er alle vigtige komponenter i SVM'er. Forståelse af disse aspekter giver et omfattende overblik over, hvordan SVM'er fungerer, og deres anvendelse i forskellige maskinlæringsopgaver.
Andre seneste spørgsmål og svar vedr EITC/AI/MLP maskinindlæring med Python:
- Hvordan beregnes b-parameteren i lineær regression (y-skæringspunktet for den bedst tilpassede linje)?
- Hvilken rolle spiller støttevektorer i at definere beslutningsgrænsen for en SVM, og hvordan identificeres de under træningsprocessen?
- I forbindelse med SVM-optimering, hvad er betydningen af vægtvektoren `w` og bias `b`, og hvordan bestemmes de?
- Hvad er formålet med `visualisere`-metoden i en SVM-implementering, og hvordan hjælper den med at forstå modellens ydeevne?
- Hvordan bestemmer `predict`-metoden i en SVM-implementering klassificeringen af et nyt datapunkt?
- Hvad er det primære mål for en Support Vector Machine (SVM) i forbindelse med maskinlæring?
- Hvordan kan biblioteker som scikit-learn bruges til at implementere SVM-klassificering i Python, og hvad er nøglefunktionerne involveret?
- Forklar betydningen af begrænsningen (y_i (mathbf{x}_i cdot mathbf{w} + b) geq 1) i SVM-optimering.
- Hvad er formålet med SVM-optimeringsproblemet, og hvordan er det matematisk formuleret?
- Hvad er rollen for hyperplanligningen (mathbf{x} cdot mathbf{w} + b = 0) i forbindelse med Support Vector Machines (SVM)?
Se flere spørgsmål og svar i EITC/AI/MLP Machine Learning med Python