Support Vector Machines (SVM) su moćni nadzirani algoritam učenja koji se koristi za zadatke klasifikacije i regresije. Primarni cilj SVM-a je pronaći optimalnu hiperravninu koja najbolje odvaja podatkovne točke različitih klasa u visokodimenzionalnom prostoru. Klasifikacija skupa značajki u SVM-u duboko je povezana s funkcijom odlučivanja, posebno s njegovim predznakom, koji igra važnu ulogu u određivanju na koju stranu hiperravnine pada data točka podataka.
Funkcija odlučivanja u SVM-u
Funkcija odlučivanja za SVM može se izraziti kao:
gdje su:
- je težinski vektor koji definira orijentaciju hiperravnine.
- je vektor obilježja podatkovne točke koja se klasificira.
- je pojam pristranosti koji pomiče hiperravninu.
Za klasifikaciju podatkovne točke , koristi se znak funkcije odlučivanja:
Ovaj znak određuje stranu hiperravnine na kojoj se nalazi podatkovna točka.
Uloga znaka u klasifikaciji
Predznak funkcije odlučivanja () izravno određuje oznaku klase dodijeljenu podatkovnoj točki
. Evo kako to funkcionira:
1. Pozitivan znak: Ako , predznak funkcije odlučivanja je pozitivan. To znači da podatkovna točka
leži na strani hiperravnine na kojoj se nalazi pozitivna klasa. Stoga,
klasificira se kao da pripada pozitivnoj klasi (obično se označava kao +1).
2. Negativan znak: Ako , predznak funkcije odlučivanja je negativan. To znači da podatkovna točka
leži na strani hiperravnine na kojoj se nalazi negativna klasa. Stoga,
klasificiran je kao pripadajući negativnoj klasi (obično označen kao -1).
3. nula: U rijetkim slučajevima gdje , podatkovna točka
leži točno na hiperravnini. Ovaj je scenarij teoretski moguć, ali praktički rijedak zbog kontinuirane prirode podataka stvarne vrijednosti.
Geometrijska interpretacija
Geometrijska interpretacija funkcije odlučivanja ključna je za razumijevanje načina na koji SVM klasificiraju podatkovne točke. Hiperravnina koju definira djeluje kao granica odlučivanja između dvije klase. Orijentacija i položaj ove hiperravnine određeni su vektorom težine
i izraz pristranosti
.
1. Marža: Margina je udaljenost između hiperravnine i najbližih podatkovnih točaka iz svake klase. SVM ima za cilj maksimizirati ovu marginu kako bi osigurao da hiperravnina ne samo da razdvaja klase, već to čini na najvećoj mogućoj udaljenosti od najbližih podatkovnih točaka. Ove najbliže podatkovne točke poznate su kao potporni vektori.
2. Potporni vektori: Potporni vektori su podatkovne točke koje leže najbliže hiperravnini. Oni su kritični u definiranju položaja i orijentacije hiperravnine. Svaka promjena položaja ovih vektora potpore promijenila bi hiperravninu.
Primjer
Razmotrimo jednostavan primjer gdje imamo dvodimenzionalni prostor značajki s podatkovnim točkama iz dvije klase. Označimo pozitivnu klasu s +1, a negativnu s -1. Pretpostavimo vektor težine i izraz pristranosti
.
Za podatkovnu točku , možemo izračunati funkciju odlučivanja na sljedeći način:
Od , predznak funkcije odluke je pozitivan, a time i podatkovna točka
svrstava se u pozitivnu klasu (+1).
Za drugu podatkovnu točku , izračunavamo funkciju odlučivanja kao:
Opet, , pa je predznak pozitivan, i
svrstava se u pozitivnu klasu (+1).
Sada razmotrite podatkovnu točku :
U ovom slučaju, , pa je predznak negativan, i
klasificiran je kao pripadajući negativnoj klasi (-1).
Matematička formulacija
Matematička formulacija SVM-a uključuje rješavanje problema optimizacije kako bi se pronašlo optimalno i
koji maksimiziraju marginu dok ispravno klasificiraju podatke o obuci. Problem optimizacije može se izraziti kao:
gdje je oznaka klase podatkovne točke
, a ograničenje osigurava da su sve podatkovne točke ispravno klasificirane s marginom od najmanje 1.
Trik s kernelom
U mnogim praktičnim primjenama podaci možda neće biti linearno odvojivi u izvornom prostoru značajki. Kako bi se to riješilo, SVM-ovi se mogu proširiti na nelinearnu klasifikaciju pomoću trika s jezgrom. Funkcija jezgre implicitno preslikava podatke u višedimenzionalni prostor gdje je moguće linearno odvajanje. Uobičajeno korištene jezgrene funkcije uključuju jezgru polinoma, jezgru radijalne bazične funkcije (RBF) i sigmoidnu jezgru.
Funkcija odlučivanja u kerneliziranom SVM-u postaje:
gdje su Lagrangeovi multiplikatori dobiveni iz dualnog oblika optimizacijskog problema.
Python implementacija
U Pythonu, biblioteka `scikit-learn` pruža izravnu implementaciju SVM-a kroz klasu `SVC`. Dolje je primjer kako koristiti `SVC` za klasificiranje skupa podataka:
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}%')
U ovom primjeru, klasa `SVC` koristi se za stvaranje SVM klasifikatora s linearnom jezgrom. Klasifikator se trenira na skupu za obuku, a točnost se procjenjuje na testnom skupu. Klasifikacija skupa značajki u SVM-u u osnovi ovisi o predznaku funkcije odlučivanja . Predznak određuje na kojoj strani hiperravnine leži podatkovna točka, čime je pripisuje odgovarajućoj klasi. Funkcija odlučivanja, proces optimizacije za pronalaženje optimalne hiperravnine i potencijalna upotreba kernel funkcija za rukovanje nelinearnom separabilnošću važne su komponente SVM-a. Razumijevanje ovih aspekata pruža sveobuhvatan pogled na to kako SVM funkcioniraju i njihovu primjenu u različitim zadacima strojnog učenja.
Ostala nedavna pitanja i odgovori u vezi EITC/AI/MLP Strojno učenje s Pythonom:
- Kako se izračunava parametar b u linearnoj regresiji (odsječak y linije s najboljim pristajanjem)?
- Kakvu ulogu imaju vektori podrške u definiranju granice odlučivanja SVM-a i kako se identificiraju tijekom procesa obuke?
- U kontekstu SVM optimizacije, kakvo je značenje težinskog vektora `w` i pristranosti `b` i kako se oni određuju?
- Koja je svrha metode `visualize` u implementaciji SVM-a i kako ona pomaže u razumijevanju performansi modela?
- Kako metoda `predviđanja` u SVM implementaciji određuje klasifikaciju nove podatkovne točke?
- Koji je primarni cilj stroja potpornih vektora (SVM) u kontekstu strojnog učenja?
- Kako se biblioteke kao što je scikit-learn mogu koristiti za implementaciju SVM klasifikacije u Pythonu i koje su ključne funkcije uključene?
- Objasnite značaj ograničenja (y_i (mathbf{x}_i cdot mathbf{w} + b) geq 1) u SVM optimizaciji.
- Koji je cilj SVM optimizacijskog problema i kako je matematički formuliran?
- Koja je uloga jednadžbe hiperravnine (mathbf{x} cdot mathbf{w} + b = 0) u kontekstu strojeva potpornih vektora (SVM)?
Pogledajte više pitanja i odgovora u EITC/AI/MLP Strojno učenje s Pythonom