Introducción
En este tutorial, aprenderemos sobre las Máquinas de Vectores de Soporte (SVM, por sus siglas en inglés), que son un conjunto de métodos de aprendizaje supervisado utilizados para la clasificación, la regresión y la detección de valores atípicos. Las SVM son efectivas en espacios de alta dimensión y todavía pueden funcionar bien cuando el número de dimensiones es mayor que el número de muestras.
Las ventajas de las SVM incluyen su efectividad en espacios de alta dimensión, su eficiencia en memoria y su versatilidad en términos de diferentes funciones de kernel. Sin embargo, es importante evitar el sobreajuste y elegir el kernel y el término de regularización adecuados para el problema dado.
En este tutorial, cubriremos los siguientes temas:
- Clasificación con SVM
- Clasificación multi-clase
- Puntuaciones y probabilidades
- Problemas desequilibrados
- Regresión con SVM
- Estimación de densidad y detección de novedades
Consejos sobre la VM
Una vez que se haya iniciado la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.
A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.
Clasificación con SVM
- Comience importando las bibliotecas necesarias:
from sklearn import svm
- Defina las muestras de entrenamiento
Xy las etiquetas de clasey:
X = [[0, 0], [1, 1]]
y = [0, 1]
- Cree una instancia del clasificador
SVCy ajuste los datos:
clf = svm.SVC()
clf.fit(X, y)
- Utilice el modelo entrenado para predecir nuevos valores:
clf.predict([[2., 2.]])
Clasificación multi-clase
- Los clasificadores
SVCyNuSVCse pueden utilizar para la clasificación multi-clase utilizando el enfoque "uno contra uno":
X = [[0], [1], [2], [3]]
Y = [0, 1, 2, 3]
clf = svm.SVC(decision_function_shape='ovo')
clf.fit(X, Y)
dec = clf.decision_function([[1]])
Puntuaciones y Probabilidades
- Las SVM no proporcionan directamente estimaciones de probabilidad, pero puede habilitar la estimación de probabilidad estableciendo el parámetro
probabilityenTrue:
clf = svm.SVC(probability=True)
clf.fit(X, y)
- Luego puede utilizar el método
predict_probapara obtener las probabilidades de cada clase:
clf.predict_proba([[2., 2.]])
- Tenga en cuenta que la estimación de probabilidad es costosa y requiere validación cruzada, por lo que úsela con prudencia.
Problemas desequilibrados
- Las SVM pueden manejar problemas desequilibrados ajustando el parámetro
class_weight:
clf = svm.SVC(class_weight={1: 10})
clf.fit(X, y)
Regresión con SVM
- Para problemas de regresión, se pueden utilizar SVM con la clase
SVR:
X = [[0, 0], [1, 1]]
y = [0.5, 2.5]
regr = svm.SVR()
regr.fit(X, y)
regr.predict([[1, 1]])
Estimación de densidad y detección de novedades
- Las SVM también se pueden utilizar para la estimación de densidad y la detección de novedades con la clase
OneClassSVM:
clf = svm.OneClassSVM()
clf.fit(X)
clf.predict(X)
Resumen
En este tutorial, aprendimos sobre las Máquinas de Vectores de Soporte (SVM) y sus aplicaciones en clasificación, regresión, estimación de densidad y detección de novedades. Cubrimos los pasos para la clasificación, la clasificación multi-clase, las puntuaciones y las probabilidades, los problemas desequilibrados, la regresión y la estimación de densidad. Las SVM son herramientas poderosas para el aprendizaje automático y se pueden utilizar en una variedad de escenarios para obtener predicciones precisas.