L'objectiu del problema d'optimització de la màquina de vectors de suport (SVM) és trobar l'hiperpla que millor separa un conjunt de punts de dades en classes diferents. Aquesta separació s'aconsegueix maximitzant el marge, definit com la distància entre l'hiperpla i els punts de dades més propers de cada classe, coneguts com a vectors de suport. L'algoritme SVM pretén crear un model que es pugui generalitzar bé a dades no vistes centrant-se en aquests punts crítics.
Matemàticament, el problema d'optimització SVM es pot formular en el context d'un problema de classificació binària, on l'objectiu és separar els punts de dades en dues classes, normalment etiquetades com +1 i -1. Els punts de dades es representen com a vectors en un espai de característiques n-dimensionals. Denotem el conjunt de dades d'entrenament com a , On
representa el vector de característiques del punt de dades i-è, i
representa l'etiqueta de classe corresponent.
El problema d'optimització de SVM lineal es pot formular de la següent manera:
1. Formulació primària:
L'objectiu és trobar un hiperpla definit per un vector de pes i un terme biaix
que maximitza el marge alhora que classifica correctament les dades d'entrenament. L'hiperpla es pot representar per l'equació
.
El problema d'optimització es pot expressar com:
subjecte a les limitacions:
Aquí, és la norma al quadrat del vector pes, que volem minimitzar per maximitzar el marge. Les restriccions asseguren que cada punt de dades està correctament classificat i es troba al costat correcte del marge.
2. Formulació dual:
El problema principal es pot transformar en la seva forma dual mitjançant multiplicadors de Lagrange. La formulació dual sovint es prefereix a la pràctica perquè permet l'ús de funcions del nucli per manejar límits de decisió no lineals.
El problema d'optimització dual es formula com:
subjecte a les limitacions:
Aquí, són els multiplicadors de Lagrange, i
és un paràmetre de regularització que controla la compensació entre maximitzar el marge i minimitzar l'error de classificació. La funció del nucli
permet que l'algoritme funcioni en un espai de característiques d'alta dimensió sense calcular explícitament les coordenades de les dades en aquest espai.
3. SVM no lineal:
Per gestionar separacions no lineals, s'utilitza el truc del nucli. La idea és mapejar l'espai de la característica original en un espai de dimensions superiors mitjançant una funció de mapeig no lineal . La funció del nucli
representa el producte interior en aquest espai de dimensions superiors, és a dir,
.
Les funcions del nucli més utilitzades inclouen:
- Nucli lineal:
- Nucli polinomial: , On
és el grau del polinomi.
- Nucli de la funció de base radial (RBF): , On
és un paràmetre que defineix l'amplada de la funció gaussiana.
- Nucli sigmoide: , On
i
són paràmetres de la funció sigmoide.
El problema d'optimització dual per a SVM no lineals segueix sent el mateix que en el cas lineal, però amb la funció del nucli substituint el producte interior
.
4. SVM de marge suau:
En escenaris del món real, les dades poden no ser perfectament separables. Per tractar aquests casos, s'introdueix el concepte de marge suau. El marge suau SVM permet una classificació errònia mitjançant la introducció de variables slack per a cada punt de dades.
El problema d'optimització principal per al SVM de marge suau es formula com:
subjecte a les limitacions:
Aquí, el terme penalitza els punts mal classificats, i
és un paràmetre de regularització que controla la compensació entre maximitzar el marge i minimitzar l'error de classificació.
La formulació dual per al marge suau SVM és similar al cas del marge dur, amb les limitacions dels multiplicadors de Lagrange modificat per incorporar el paràmetre de regularització
:
5. Exemple:
Considereu un exemple senzill amb un conjunt de dades bidimensional que consta de dues classes. Els punts de dades són:
Classe +1: ,
,
Classe -1: ,
,
L'objectiu és trobar l'hiperpla que millor separa aquestes dues classes. Per simplificar, suposeu un SVM lineal amb un marge dur. El problema d'optimització principal es pot formular com:
subjecte a les limitacions:
La resolució d'aquest problema d'optimització produeix el vector pes i terme de biaix
que defineixen l'hiperpla òptim. Els vectors de suport, que són els punts de dades més propers a l'hiperpla, determinen el marge.
A la pràctica, els SVM s'implementen mitjançant biblioteques d'optimització que resolen de manera eficient la formulació dual. A Python, la biblioteca `scikit-learn` proporciona una implementació de SVM mitjançant la classe `SVC`, que pot gestionar tant nuclis lineals com no lineals.
Per exemple, per entrenar un SVM amb un nucli lineal mitjançant `scikit-learn`, es pot utilitzar el codi següent:
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 a sample dataset iris = datasets.load_iris() X = iris.data y = iris.target # Use 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 svm = SVC(kernel='linear', C=1.0) # Train the SVM classifier svm.fit(X_train, y_train) # Make predictions on the test set y_pred = svm.predict(X_test) # Evaluate the accuracy of the classifier accuracy = accuracy_score(y_test, y_pred) print(f'Accuracy: {accuracy:.2f}')
En aquest exemple, la classe `SVC` s'utilitza per crear un classificador SVM amb un nucli lineal. El classificador s'entrena al conjunt d'entrenament i s'avalua al conjunt de proves, amb la precisió de les prediccions impreses a la consola.
El problema d'optimització SVM és un aspecte fonamental de l'aprenentatge automàtic, proporcionant un mètode robust i versàtil per a les tasques de classificació. En maximitzar el marge, els SVM pretenen aconseguir un bon rendiment de generalització, convertint-los en una eina valuosa en diverses aplicacions.
Altres preguntes i respostes recents sobre Aprenentatge automàtic EITC/AI/MLP amb Python:
- Com es calcula el paràmetre b en regressió lineal (la intercepció en y de la línia de millor ajust)?
- Quin paper juguen els vectors de suport a l'hora de definir el límit de decisió d'un SVM i com s'identifiquen durant el procés de formació?
- En el context de l'optimització SVM, quina és la importància del vector de pes "w" i el biaix "b" i com es determinen?
- Quin és l'objectiu del mètode `visualize' en una implementació SVM, i com ajuda a entendre el rendiment del model?
- Com determina el mètode "predir" en una implementació SVM la classificació d'un punt de dades nou?
- Quin és l'objectiu principal d'una màquina de vectors de suport (SVM) en el context de l'aprenentatge automàtic?
- Com es poden utilitzar biblioteques com scikit-learn per implementar la classificació SVM a Python i quines són les funcions clau implicades?
- Expliqueu la importància de la restricció (y_i (mathbf{x}_i cdot mathbf{w} + b) geq 1) en l'optimització de SVM.
- Com depèn la classificació d'un conjunt de característiques a SVM del signe de la funció de decisió (text{sign}(mathbf{x}_i cdot mathbf{w} + b))?
- Quin és el paper de l'equació d'hiperpla (mathbf{x} cdot mathbf{w} + b = 0) en el context de les màquines de vectors de suport (SVM)?
Consulteu més preguntes i respostes a EITC/AI/MLP Machine Learning amb Python