Podporni vektorski stroji (SVM) so močan algoritem nadzorovanega učenja, ki se uporablja za naloge klasifikacije in regresije. Primarni cilj SVM je najti optimalno hiperravnino, ki najbolje ločuje podatkovne točke različnih razredov v visokodimenzionalnem prostoru. Razvrstitev nabora funkcij v SVM je globoko povezana z odločitveno funkcijo, zlasti z njenim predznakom, ki ima pomembno vlogo pri določanju, na katero stran hiperravnine pade določena podatkovna točka.
Funkcija odločanja v SVM
Odločitvena funkcija za SVM se lahko izrazi kot:
kjer je:
- je utežni vektor, ki definira orientacijo hiperravnine.
- je vektor značilnosti podatkovne točke, ki jo razvrščamo.
- je izraz pristranskosti, ki premakne hiperravnino.
Za razvrstitev podatkovne točke , se uporablja znak odločitvene funkcije:
Ta znak določa stran hiperravnine, na kateri leži podatkovna točka.
Vloga znaka pri klasifikaciji
Predznak odločitvene funkcije () neposredno določa oznako razreda, dodeljeno podatkovni točki
. Tako deluje:
1. Pozitiven znak: Če , je predznak odločitvene funkcije pozitiven. To pomeni, da podatkovna točka
leži na strani hiperravnine, kjer se nahaja pozitivni razred. zato
je uvrščen v pozitivni razred (običajno označen kot +1).
2. Negativni znak: Če , je predznak odločitvene funkcije negativen. To pomeni, da podatkovna točka
leži na strani hiperravnine, kjer se nahaja negativni razred. torej
je uvrščen v negativni razred (običajno označen z -1).
3. nič: V redkih primerih , podatkovna točka
leži natančno na hiperravnini. Ta scenarij je teoretično možen, vendar praktično redek zaradi neprekinjene narave realnih podatkov.
Geometrijska interpretacija
Geometrična interpretacija odločitvene funkcije je bistvena za razumevanje, kako SVM razvršča podatkovne točke. Hiperravnina, ki jo definira deluje kot meja odločanja med obema razredoma. Usmerjenost in položaj te hiperravnine sta določena z vektorjem teže
in izraz pristranskosti
.
1. Marža: Rob je razdalja med hiperravnino in najbližjimi podatkovnimi točkami iz vsakega razreda. SVM želi povečati to mejo, da zagotovi, da hiperravnina ne samo ločuje razrede, ampak to počne z največjo možno razdaljo od najbližjih podatkovnih točk. Te najbližje podatkovne točke so znane kot podporni vektorji.
2. Podporni vektorji: Podporni vektorji so podatkovne točke, ki ležijo najbližje hiperravnini. Kritični so pri določanju položaja in orientacije hiperravnine. Vsaka sprememba položaja teh nosilnih vektorjev bi spremenila hiperravnino.
Primer
Razmislite o preprostem primeru, kjer imamo dvodimenzionalni prostor funkcij s podatkovnimi točkami iz dveh razredov. Označimo pozitivni razred z +1 in negativni razred z -1. Recimo vektor teže in izraz pristranskosti
.
Za podatkovno točko , lahko odločitveno funkcijo izračunamo na naslednji način:
Od leta , je predznak odločitvene funkcije pozitiven in s tem podatkovna točka
je uvrščen v pozitivni razred (+1).
Za drugo podatkovno točko , odločitveno funkcijo izračunamo kot:
Tudi , torej je predznak pozitiven in
je uvrščen v pozitivni razred (+1).
Zdaj razmislite o podatkovni točki :
V tem primeru, , torej je predznak negativen in
je uvrščen v negativni razred (-1).
Matematična formulacija
Matematična formulacija SVM vključuje reševanje optimizacijskega problema za iskanje optimalnega in
ki maksimirajo rezervo, medtem ko pravilno razvrščajo podatke o usposabljanju. Težavo optimizacije lahko izrazimo kot:
Kje je oznaka razreda podatkovne točke
, in omejitev zagotavlja, da so vse podatkovne točke pravilno razvrščene z rezervo vsaj 1.
Trik jedra
V številnih praktičnih aplikacijah podatki morda niso linearno ločljivi v izvirnem prostoru funkcij. Da bi to rešili, je mogoče SVM-je razširiti na nelinearno klasifikacijo z uporabo trika jedra. Funkcija jedra implicitno preslika podatke v prostor višje dimenzije, kjer je možna linearna ločitev. Pogosto uporabljene jedrne funkcije vključujejo polinomsko jedro, jedro radialne osnovne funkcije (RBF) in sigmoidno jedro.
Odločitvena funkcija v jedrnatem SVM postane:
Kje so Lagrangeovi multiplikatorji, dobljeni iz dualne oblike optimizacijskega problema.
Implementacija Pythona
V Pythonu knjižnica `scikit-learn` zagotavlja preprosto implementacijo SVM prek razreda `SVC`. Spodaj je primer uporabe `SVC` za razvrščanje nabora podatkov:
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}%')
V tem primeru je razred `SVC` uporabljen za ustvarjanje klasifikatorja SVM z linearnim jedrom. Klasifikator se uri na učnem nizu, natančnost pa se ocenjuje na testnem nizu. Klasifikacija nabora funkcij v SVM je v osnovi odvisna od predznaka odločitvene funkcije . Predznak določa, na kateri strani hiperravnine leži podatkovna točka in jo s tem pripisuje ustreznemu razredu. Odločitvena funkcija, postopek optimizacije za iskanje optimalne hiperravnine in potencialna uporaba funkcij jedra za obravnavo nelinearne ločljivosti so vse pomembne komponente SVM-jev. Razumevanje teh vidikov zagotavlja celovit pogled na delovanje SVM in njihovo uporabo pri različnih nalogah strojnega učenja.
Druga nedavna vprašanja in odgovori v zvezi EITC/AI/MLP Strojno učenje s Pythonom:
- Kako se izračuna parameter b v linearni regresiji (odsek y premice najboljšega prileganja)?
- Kakšno vlogo imajo podporni vektorji pri določanju meje odločanja SVM in kako so prepoznani med procesom usposabljanja?
- Kakšen je pomen vektorja teže "w" in pristranskosti "b" v kontekstu optimizacije SVM in kako se določita?
- Kakšen je namen metode `visualize` v izvedbi SVM in kako pomaga pri razumevanju delovanja modela?
- Kako metoda `predict` v izvedbi SVM določa klasifikacijo nove podatkovne točke?
- Kaj je glavni cilj stroja podpornih vektorjev (SVM) v kontekstu strojnega učenja?
- Kako lahko knjižnice, kot je scikit-learn, uporabimo za implementacijo klasifikacije SVM v Python in katere ključne funkcije so vključene?
- Pojasnite pomen omejitve (y_i (mathbf{x}_i cdot mathbf{w} + b) geq 1) pri optimizaciji SVM.
- Kaj je cilj optimizacijskega problema SVM in kako je matematično oblikovan?
- Kakšna je vloga enačbe hiperravnine (mathbf{x} cdot mathbf{w} + b = 0) v kontekstu podpornih vektorskih strojev (SVM)?
Oglejte si več vprašanj in odgovorov v EITC/AI/MLP Strojno učenje s Pythonom