El mètode "predir" en una màquina de vectors de suport (SVM) és un component fonamental que permet al model classificar nous punts de dades després d'haver estat entrenat. Entendre com funciona aquest mètode requereix un examen detallat dels principis subjacents de l'SVM, la formulació matemàtica i els detalls de la implementació.
Principi bàsic de SVM
Les màquines de vectors de suport són models d'aprenentatge supervisat que s'utilitzen per a tasques de classificació i regressió. L'objectiu principal d'un SVM és trobar l'hiperpla òptim que separa els punts de dades de diferents classes amb el marge màxim. Aquest hiperpla es defineix en un espai d'alta dimensió, i el model SVM pretén maximitzar la distància entre els punts més propers de les classes, coneguts com a vectors de suport, i l'hiperpla.
Formulació Matemàtica
El model SVM es pot representar matemàticament de la següent manera:
1. Equació d'hiperplà:
where és el vector pes,
és el vector de característiques d'entrada i
és el terme biaix.
2. Funció de decisió:
La funció de decisió per a la classificació ve donada per:
Aquesta funció determina la classe del punt de dades d'entrada . Si el resultat és positiu, el punt de dades es classifica en una classe (per exemple, +1), i si és negatiu, es classifica en l'altra classe (per exemple, -1).
Formació de l'SVM
Durant la fase d'entrenament, l'algorisme SVM resol un problema d'optimització convex per trobar els valors òptims de i
. L'objectiu és minimitzar la funció de cost següent:
subjecte a les limitacions:
where són variables slack que permeten una classificació errònia en el cas de dades separables no linealment, i
és un paràmetre de regularització que controla la compensació entre maximitzar el marge i minimitzar l'error de classificació.
Truc del nucli
Per a dades no separables linealment, els SVM utilitzen el truc del nucli per mapejar les característiques d'entrada en un espai de dimensions superiors on un hiperpla lineal pot separar les dades. Els nuclis comuns inclouen el nucli polinomial, el nucli de la funció de base radial (RBF) i el nucli sigmoide. La funció del nucli calcula el producte intern a l'espai de característiques transformades sense realitzar explícitament la transformació.
El mètode "predir".
Un cop s'ha entrenat el model SVM, s'utilitza el mètode "predicció" per classificar nous punts de dades. Els passos implicats en el mètode "predir" són els següents:
1. Calcula la funció de decisió:
Per a un nou punt de dades , la funció de decisió es calcula com:
where són els multiplicadors de Lagrange obtinguts durant l'entrenament,
són les etiquetes dels punts de dades d'entrenament,
són els vectors suport, i
és la funció del nucli.
2. Determineu l'etiqueta de la classe:
L'etiqueta de classe del nou punt de dades ve determinada pel signe de la funció de decisió:
If , el punt de dades es classifica en la classe positiva (per exemple, +1) i si
, es classifica en la classe negativa (per exemple, -1).
Exemple d'implementació
A continuació es mostra un exemple simplificat de com es pot implementar el mètode `predict` en un SVM bàsic des de zero mitjançant Python:
python import numpy as np class SVM: def __init__(self, kernel='linear', C=1.0): self.kernel = kernel self.C = C self.alpha = None self.support_vectors = None self.support_vector_labels = None self.b = 0 def fit(self, X, y): # Simplified training procedure to find alpha, support_vectors, and b # This is a placeholder for the actual training code pass def linear_kernel(self, x1, x2): return np.dot(x1, x2) def predict(self, X): if self.kernel == 'linear': kernel_function = self.linear_kernel else: raise ValueError("Unsupported kernel") y_pred = [] for x in X: decision_function = 0 for alpha, sv, sv_label in zip(self.alpha, self.support_vectors, self.support_vector_labels): decision_function += alpha * sv_label * kernel_function(sv, x) decision_function += self.b y_pred.append(np.sign(decision_function)) return np.array(y_pred) # Example usage svm = SVM(kernel='linear', C=1.0) # Assuming X_train and y_train are the training data and labels # svm.fit(X_train, y_train) # Assuming X_test is the new data to classify # predictions = svm.predict(X_test)
Explicació detallada de l'exemple
1. Inicialització:
La classe `SVM` s'inicialitza amb un nucli especificat (per defecte és 'lineal') i un paràmetre de regularització .
2. Entrenament (mètode "fit"):
El mètode "fit" és un marcador de posició per al codi d'entrenament real, que implicaria resoldre el problema d'optimització per trobar els multiplicadors de Lagrange , vectors de suport i el terme de biaix
.
3. Funció del nucli:
El mètode `linear_kernel` calcula el producte intern de dos vectors, que és la forma més senzilla d'una funció del nucli. Per a nuclis més complexos, s'implementarien mètodes addicionals.
4. Predicció (mètode "predir"):
El mètode `predict` selecciona primer la funció de nucli adequada en funció del tipus de nucli especificat. A continuació, itera sobre cada punt de dades nou i calcula la funció de decisió utilitzant els vectors suport, els seus multiplicadors de Lagrange corresponents i les etiquetes. El signe de la funció de decisió determina l'etiqueta de classe del nou punt de dades.
Consideracions pràctiques
- Vectors de suport:
Només els vectors suport contribueixen a la funció de decisió. Aquests són els punts de dades que es troben més a prop de l'hiperpla i són crítics per definir el marge.
- Paràmetre de regularització :
El paràmetre controla la compensació entre aconseguir un error baix a les dades d'entrenament i maximitzar el marge. Un més petit
El valor permet un marge més gran amb més classificacions errònies, mentre que un més gran
value té com a objectiu menys classificacions errònies però un marge més petit.
- Elecció del nucli:
L'elecció de la funció del nucli afecta significativament el rendiment de l'SVM. Els nuclis lineals són adequats per a dades separables linealment, mentre que els nuclis no lineals com RBF s'utilitzen per a distribucions de dades més complexes.
- Escalabilitat:
Els SVM poden ser computacionalment intensius, especialment per a grans conjunts de dades. La complexitat de l'entrenament és normalment a
, On
és el nombre de mostres d'entrenament. S'utilitzen tècniques com l'algoritme d'optimització mínima seqüencial (SMO) per millorar l'eficiència. El mètode "predicció" en una implementació SVM és un component crític que aprofita el model entrenat per classificar nous punts de dades. En calcular la funció de decisió basada en els vectors de suport, els seus multiplicadors de Lagrange corresponents i la funció del nucli, el mètode determina l'etiqueta de classe de cada punt de dades nou. La comprensió de la formulació matemàtica i els detalls d'implementació del mètode "predir" proporciona informació valuosa sobre el funcionament intern dels SVM i la seva aplicació en tasques d'aprenentatge automàtic.
Altres preguntes i respostes recents sobre Completar SVM des de zero:
- 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?
- Quin és l'objectiu principal d'una màquina de vectors de suport (SVM) en el context de l'aprenentatge automàtic?