logo

Ondersteuning van het Vector Machine (SVM)-algoritme

Support Vector Machine (SVM) is een krachtig machine learning-algoritme dat wordt gebruikt voor lineaire of niet-lineaire classificatie-, regressie- en zelfs uitbijterdetectietaken. SVM's kunnen worden gebruikt voor een verscheidenheid aan taken, zoals tekstclassificatie, afbeeldingsclassificatie, spamdetectie, handschriftidentificatie, analyse van genexpressie, gezichtsdetectie en detectie van afwijkingen. SVM's zijn aanpasbaar en efficiënt in een verscheidenheid aan toepassingen, omdat ze hoogdimensionale gegevens en niet-lineaire relaties kunnen beheren.

SVM-algoritmen zijn zeer effectief omdat we proberen het maximale scheidende hypervlak te vinden tussen de verschillende klassen die beschikbaar zijn in de doelfunctie.

typ variabelen java

Ondersteuning van vectormachine

Support Vector Machine (SVM) is een begeleid machinaal leren algoritme dat wordt gebruikt voor zowel classificatie als regressie. Hoewel we ook regressieproblemen zeggen, is dit het meest geschikt voor classificatie. Het hoofddoel van het SVM-algoritme is het vinden van het optimale hypervlak in een N-dimensionale ruimte die de datapunten in verschillende klassen in de kenmerkruimte kan scheiden. Het hypervlak probeert dat de marge tussen de dichtstbijzijnde punten van verschillende klassen zo maximaal mogelijk is. De afmeting van het hypervlak hangt af van het aantal kenmerken. Als het aantal invoerobjecten twee is, is het hypervlak slechts een lijn. Als het aantal invoerobjecten drie is, wordt het hypervlak een 2D-vlak. Het wordt moeilijk voor te stellen wanneer het aantal kenmerken groter is dan drie.



Laten we twee onafhankelijke variabelen x bekijken1, X2,en één afhankelijke variabele die een blauwe cirkel of een rode cirkel is.

Lineair scheidbare gegevenspunten

Uit de figuur hierboven is heel duidelijk dat er meerdere lijnen zijn (ons hypervlak hier is een lijn omdat we slechts twee invoerfuncties overwegen x1, X2) die onze datapunten scheiden of een classificatie uitvoeren tussen rode en blauwe cirkels. Dus hoe kiezen we de beste lijn of, in het algemeen, het beste hypervlak dat onze datapunten scheidt?

Hoe werkt SVM?

Eén redelijke keuze als het beste hypervlak is degene die de grootste scheiding of marge tussen de twee klassen vertegenwoordigt.

Meerdere hypervlakken die de gegevens van twee klassen scheiden

Meerdere hypervlakken scheiden de gegevens van twee klassen

We kiezen dus het hypervlak waarvan de afstand tot het dichtstbijzijnde datapunt aan elke kant maximaal is. Als zo'n hypervlak bestaat, staat het bekend als de hypervlak/harde marge met maximale marge . Dus uit de bovenstaande figuur kiezen we L2. Laten we een scenario overwegen zoals hieronder weergegeven

Hypervlak selecteren voor gegevens met uitbijter

Hypervlak selecteren voor gegevens met uitbijter

Hier hebben we één blauwe bal op de grens van de rode bal. Hoe classificeert SVM de gegevens? Het is makkelijk! De blauwe bal in de grens van rode ballen is een uitbijter van blauwe ballen. Het SVM-algoritme heeft de kenmerken om de uitschieter te negeren en het beste hypervlak te vinden dat de marge maximaliseert. SVM is robuust tegen uitschieters.

Hyperplane, de meest geoptimaliseerde

Hyperplane, de meest geoptimaliseerde

Dus in dit type datapunt vindt SVM de maximale marge zoals gedaan met eerdere datasets, samen met het toevoegen van een boete elke keer dat een punt de marge overschrijdt. Dus de marges worden in dit soort gevallen genoemd zachte marges . Wanneer er sprake is van een zachte marge op de dataset, probeert de SVM deze te minimaliseren (1/marge+∧(∑boete)) . Scharnierverlies is een veelgebruikte straf. Als er geen overtredingen zijn, is er geen scharnierverlies. Als er overtredingen zijn, is het scharnierverlies evenredig aan de afstand van de overtreding.

Tot nu toe hadden we het over lineair scheidbare gegevens (de groep blauwe ballen en rode ballen zijn scheidbaar door een rechte lijn/lineaire lijn). Wat te doen als gegevens niet lineair scheidbaar zijn?

Originele 1D-dataset voor classificatie

Originele 1D-dataset voor classificatie

Stel dat onze gegevens in de bovenstaande afbeelding worden weergegeven. SVM lost dit op door een nieuwe variabele te maken met behulp van a kern . Een punt noemen we xiop de lijn en we creëren een nieuwe variabele yials functie van de afstand vanaf de oorsprong o. Dus als we dit uitzetten, krijgen we zoiets als hieronder weergegeven

Het in kaart brengen van 1D-gegevens naar 2D om de twee klassen te kunnen scheiden

Het in kaart brengen van 1D-gegevens naar 2D om de twee klassen te kunnen scheiden

In dit geval wordt de nieuwe variabele y gecreëerd als functie van de afstand tot de oorsprong. Een niet-lineaire functie die een nieuwe variabele creëert, wordt een kernel genoemd.

Ondersteuning van vectormachineterminologie

    Hypervlak: Hypervlak is de beslissingsgrens die wordt gebruikt om de gegevenspunten van verschillende klassen in een kenmerkruimte te scheiden. In het geval van lineaire classificaties zal het een lineaire vergelijking zijn, d.w.z. wx+b = 0. Ondersteuningsvectoren: Ondersteuningsvectoren zijn de gegevenspunten die het dichtst bij het hypervlak liggen, wat een cruciale rol speelt bij het bepalen van het hypervlak en de marge. Marge: Marge is de afstand tussen de steunvector en het hypervlak. Het hoofddoel van het support vector machine-algoritme is het maximaliseren van de marge. De bredere marge duidt op betere classificatieprestaties. Kernel: Kernel is de wiskundige functie die in SVM wordt gebruikt om de originele invoergegevenspunten in hoog-dimensionale kenmerkruimten in kaart te brengen, zodat het hypervlak gemakkelijk kan worden achterhaald, zelfs als de gegevenspunten zijn niet lineair scheidbaar in de oorspronkelijke invoerruimte. Enkele van de gebruikelijke kernelfuncties zijn lineair, polynoom, radiale basisfunctie (RBF) en sigmoïde. Harde marge: het hypervlak met maximale marge of het hypervlak met harde marge is een hypervlak dat de gegevenspunten van verschillende categorieën op de juiste manier scheidt zonder enige verkeerde classificatie. Zachte marge: Wanneer de gegevens niet perfect scheidbaar zijn of uitschieters bevatten, staat SVM een zachte margetechniek toe. Elk datapunt heeft een slappe variabele die wordt geïntroduceerd door de SVM-formulering met zachte marges, die de strikte margevereiste verzacht en bepaalde misclassificaties of overtredingen toestaat. Het ontdekt een compromis tussen het vergroten van de marge en het verminderen van overtredingen. C: Margemaximalisatie en boetes voor verkeerde classificatie worden gecompenseerd door de regularisatieparameter C in SVM. De straf voor het overschrijden van de marge of het verkeerd classificeren van data-items wordt door het college bepaald. Bij een grotere waarde van C wordt een strengere straf opgelegd, wat resulteert in een kleinere marge en wellicht minder misclassificaties. Scharnierverlies: Een typische verliesfunctie bij SVM's is scharnierverlies. Het bestraft onjuiste classificaties of margeschendingen. De objectieve functie in SVM wordt vaak gevormd door deze te combineren met de regularisatieterm. Dubbel probleem: een dubbel probleem van het optimalisatieprobleem dat het lokaliseren van de Lagrange-vermenigvuldigers vereist die verband houden met de ondersteuningsvectoren, kan worden gebruikt om SVM op te lossen. De dubbele formulering maakt het gebruik van kerneltrucs en effectiever computergebruik mogelijk.

Wiskundige intuïtie van Support Vector Machine

Beschouw een binair classificatieprobleem met twee klassen, aangeduid als +1 en -1. We hebben een trainingsdataset bestaande uit invoerkenmerkvectoren X en hun overeenkomstige klasselabels Y.

De vergelijking voor het lineaire hypervlak kan worden geschreven als:

w^Tx+ b = 0

datalinklaagprotocollen

De vector W vertegenwoordigt de normaalvector voor het hypervlak. dat wil zeggen de richting loodrecht op het hypervlak. De parameter B in de vergelijking vertegenwoordigt de offset of afstand van het hypervlak vanaf de oorsprong langs de normaalvector In .

De afstand tussen een datapunt x_i en de beslissingsgrens kan als volgt worden berekend:

d_i = frac{w^T x_i + b}

waar ||w|| vertegenwoordigt de Euclidische norm van de gewichtsvector w. Euclidische normvan de normaalvector W

Voor lineaire SVM-classificator:

Optimalisatie:

    Voor lineaire SVM-classificator met harde marge:

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

De doelvariabele of het label voor de ietrainingsinstantie wordt aangegeven met het symbool tiin deze verklaring. En ti=-1 voor negatieve gebeurtenissen (wanneer yi= 0) en ti=1positieve gevallen (wanneer yi= 1) respectievelijk. Omdat we de beslissingsgrens nodig hebben die aan de beperking voldoet: underset{w,b}{	ext{minimaliseren }}frac{1}{2}w^Tw+ C sum_{i=1}^m zeta_{i}  	ext{onderworpen aan } y_i( w^Tx_i + b)ge 1-zeta_{i};; En ; zeta_{i} ge 0;; voor ; i = 1, 2,3, cdots,m

    Voor lineaire SVM-classificator met zachte marge:

underset{alpha}{	ext{maximaliseren}}: frac{1}{2}underset{i	ot m;}{sum};underset{j	ot m}{sum} alpha_ialpha_j t_i t_j K(x_i, x_j) -underset{i	ot m}{som}alpha_i

    Dubbel probleem: Een dubbel probleem van het optimalisatieprobleem dat het lokaliseren van de Lagrange-vermenigvuldigers vereist die verband houden met de ondersteuningsvectoren, kan worden gebruikt om SVM op te lossen. De optimale Lagrange-vermenigvuldigers α(i) die de volgende dubbele objectieve functie maximaliseren

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

waar,

  • Aiis de Lagrange-vermenigvuldiger die is gekoppeld aan het i-de trainingsmonster.
  • K(xi, XJ) is de kernelfunctie die de gelijkenis tussen twee monsters x berekentien xJ. Het stelt SVM in staat om niet-lineaire classificatieproblemen op te lossen door de samples impliciet in kaart te brengen in een hoger-dimensionale featureruimte.
  • De term ∑αivertegenwoordigt de som van alle Lagrange-vermenigvuldigers.

De SVM-beslissingsgrens kan worden beschreven in termen van deze optimale Lagrange-vermenigvuldigers en de ondersteuningsvectoren zodra het dubbele probleem is opgelost en de optimale Lagrange-vermenigvuldigers zijn ontdekt. De trainingsmonsters met i> 0 zijn de ondersteuningsvectoren, terwijl de beslissingsgrens wordt geleverd door:

egin{uitgelijnd} 	ext{Lineair : } K(w,b) &= w^Tx+b  	ext{Polynoom : } K(w,x) &= (gamma w^Tx+b)^ N  	ext{Gaussiaanse RBF: } K(w,x) &= exp(-gamma|| x_i-x_j||^n  	ext{Sigmoïde :} K(x_i, x_j) &=  tanh(alpha x_i^Tx_j + b) end{uitgelijnd}

Soorten ondersteuningsvectormachines

Op basis van de aard van de beslissingsgrens kunnen Support Vector Machines (SVM) in twee hoofdonderdelen worden verdeeld:

    Lineaire SVM: Lineaire SVM's gebruiken een lineaire beslissingsgrens om de datapunten van verschillende klassen te scheiden. Wanneer de gegevens nauwkeurig lineair kunnen worden gescheiden, zijn lineaire SVM's zeer geschikt. Dit betekent dat een enkele rechte lijn (in 2D) of een hypervlak (in hogere dimensies) de datapunten volledig in hun respectievelijke klassen kan verdelen. Een hypervlak dat de marge tussen de klassen maximaliseert, is de beslissingsgrens. Niet-lineaire SVM: Niet-lineaire SVM kan worden gebruikt om gegevens te classificeren wanneer deze niet door een rechte lijn in twee klassen kunnen worden gescheiden (in het geval van 2D). Door kernelfuncties te gebruiken, kunnen niet-lineaire SVM's niet-lineair scheidbare gegevens verwerken. De oorspronkelijke invoergegevens worden door deze kernelfuncties getransformeerd in een hoger-dimensionale kenmerkruimte, waar de gegevenspunten lineair kunnen worden gescheiden. Een lineaire SVM wordt gebruikt om een ​​niet-lineaire beslissingsgrens in deze gewijzigde ruimte te lokaliseren.

Populaire kernelfuncties in SVM

De SVM-kernel is een functie die laag-dimensionale invoerruimte gebruikt en deze omzet in een hoger-dimensionale ruimte, dwz dat het niet-scheidbare problemen omzet in scheidbare problemen. Het is vooral nuttig bij niet-lineaire scheidingsproblemen. Simpel gezegd: de kernel voert een aantal extreem complexe datatransformaties uit en ontdekt vervolgens het proces om de data te scheiden op basis van de gedefinieerde labels of outputs.

Borstkankerclassificaties met SVM RBF-kernel-Geeksforgeeks

Voordelen van SVM

  • Effectief in hoogdimensionale gevallen.
  • Het geheugen is efficiënt omdat het een subset van trainingspunten gebruikt in de beslissingsfunctie die ondersteuningsvectoren worden genoemd.
  • Voor de beslissingsfuncties kunnen verschillende kernelfuncties worden gespecificeerd en het is mogelijk om aangepaste kernels te specificeren.

SVM-implementatie in Python

Voorspel of kanker goedaardig of kwaadaardig is. Door gebruik te maken van historische gegevens over patiënten bij wie kanker is vastgesteld, kunnen artsen onderscheid maken tussen kwaadaardige gevallen en goedaardige gevallen die onafhankelijke kenmerken krijgen.

algoritme voor rsa

Stappen

  • Laad de gegevensset voor borstkanker uit sklearn.datasets
  • Afzonderlijke invoerfuncties en doelvariabelen.
  • Bouw en train de SVM-classificatoren met behulp van de RBF-kernel.
  • Teken het spreidingsdiagram van de invoerobjecten.
  • Teken de beslissingsgrens.
  • Teken de beslissingsgrens

Python3

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

Uitvoer :

Borstkankerclassificaties met SVM RBF-kernel