Una Support Vector Machine (SVM) es un algoritmo de Machine Learning supervisado que busca el hiperplano que mejor separa los puntos de datos de una clase de los de otra clase.
Una Support Vector Machine es un algoritmo de Machine Learning supervisado que se suele utilizar para problemas de clasificación y regresión en aplicaciones de procesamiento de señales, procesamiento del lenguaje natural (PLN), y reconocimiento del habla e imágenes. El objetivo del algoritmo de SVM es encontrar un hiperplano que, en la mejor medida posible, separe los puntos de datos de una clase de los de otra clase. Este hiperplano puede ser una línea para espacio en 2D o un plano para un espacio con n dimensiones, donde n es el número de características de cada observación del conjunto de datos. Pueden existir múltiples hiperplanos que separen las clases de los datos. El hiperplano óptimo, derivado por el algoritmo de SVM, es el que aumenta el margen entre las dos clases.
El margen es la anchura máxima de la franja paralela al hiperplano que no contiene puntos de datos en su interior. Los puntos de datos que marcan el límite de esta franja paralela y están más cerca del hiperplano separador son los vectores de soporte. Los vectores de soporte hacen referencia a un subconjunto de las observaciones de entrenamiento que determinan la ubicación del hiperplano separador.
Flujo de modelado de SVM
Un flujo de trabajo típico para crear un modelo de Support Vector Machine incluye los siguientes pasos:
Preprocesar datos
Entrenar un modelo de SVM con datos no procesados a menudo genera resultados deficientes, debido a valores ausentes, valores atípicos y redundancia de información. Puede realizar depuración de datos para gestionar valores ausentes o atípicos, y extracción de características para seleccionar el conjunto de características adecuado de los datos.
La extracción de características transforma los datos no procesados en características numéricas que pueden ser procesadas al tiempo que se conserva la información del conjunto de datos original. Las técnicas de reducción de dimensionalidad, como el análisis de componentes principales (PCA), reducen el número de características al tiempo que conservan la información más importante. Este enfoque permite que los modelos de Support Vector Machines sean sólidos y puedan gestionar conjuntos de datos complejos.
Después de procesar los datos, se pueden dividir en conjuntos de entrenamiento y pruebas. Utilice validación cruzada para dividir los datos de manera óptima. El modelo de SVM se entrena con el conjunto de datos de entrenamiento, mientras que el conjunto de datos de pruebas se utiliza para evaluar el rendimiento del modelo con datos no vistos anteriormente.
Seleccionar un kernel
Seleccione una función de kernel adecuada (lineal, polinómica, RBF y otras) en función de la distribución de datos. Cuando no es posible realizar una separación lineal, una función de kernel transforma los datos a un espacio con más dimensiones, lo que facilita la separación de clases.
Tipo de SVM | Kernel de Mercer | Descripción |
Función de base radial (RBF) o gaussiana | \( K({x_1},{x_2})=exp(−‖{x_1}−{x_2}‖22{σ^2}) \) | Aprendizaje de una clase. \( σ \) es la anchura del kernel. |
Lineal | \( K({x_1},{x_2})={x_1}T{x_2} \) | Aprendizaje de dos clases. |
Polinomio | \( K({x_1},{x_2})=({x_1}T{x_2}+1)ρ \) | \( ρ \) es el orden del polinomio. |
Sigmoide | \( K({x_1},{x_2})=tanh({β_0}{x_1}T{x_2}+{β_1}) \) | Es un kernel de Mercer solo para determinados valores \( β_0 \) y \( β_1 \). |
Entrenar el modelo de SVM
Cree y entrene un modelo de SVM con un conjunto de datos de entrenamiento. Entrenar una Support Vector Machine equivale a resolver un problema de optimización cuadrática para ajustar un hiperplano que aumenta el margen entre las clases. El algoritmo de Support Vector Machine identifica los vectores de soporte y determina el hiperplano óptimo. Utilice el modelo entrenado para clasificar puntos de datos nuevos y no vistos anteriormente en función del hiperplano óptimo.
Evaluar el modelo de SVM
Pruebe el modelo utilizando el conjunto de datos de prueba. Evalúe el rendimiento del modelo empleando métricas de exactitud, matriz de confusión, precisión, puntuación F1 o recuperación.
Ajustar los hiperparámetros
Ajuste los hiperparámetros para mejorar el rendimiento del modelo. Utilice optimización bayesiana, una técnica de búsqueda que emplea modelos probabilísticos para encontrar hiperparámetros óptimos.
Tipos de clasificadores SVM
Support Vector Machines lineales
Las SVM lineales se utilizan para datos linealmente separables que tienen exactamente dos clases. Este tipo de algoritmo de Support Vector Machine utiliza un límite de decisión lineal para separar todos los puntos de datos de las dos clases.
El algoritmo de SVM solo puede encontrar un hiperplano de este tipo para problemas linealmente separables. En la mayoría de las tareas complejas, donde los datos no se pueden separar, la Support Vector Machine puede emplear un margen flexible, es decir, un hiperplano que separa muchos puntos de datos, pero no todos. El algoritmo aumenta el margen flexible permitiendo un pequeño número de clasificaciones incorrectas.

SVM con margen flexible que permite la clasificación incorrecta de un punto de datos de la clase -1 (azul). (Consulte la documentación de MATLAB).

SVM con margen flexible que permite la clasificación incorrecta de un punto de datos de la clase -1 (azul). (Consulte la documentación de MATLAB).
Support Vector Machines no lineales
Las SVM también se utilizan para tareas de clasificación y regresión no lineales. Con datos no linealmente separables, las Support Vector Machines no lineales utilizan funciones de kernel para transformar las características. El número de características transformadas viene determinado por el número de vectores de soporte.
Las funciones de kernel transforman los datos a un espacio diferente, que suele tener más dimensiones. Esta transformación puede facilitar la separación de clases simplificando el límite de decisión no lineal complejo a un límite lineal en el espacio de características resultante de mayor dimensión. En este proceso, comúnmente conocido como truco del kernel, no es necesario transformar los datos explícitamente, lo que supondría una alta carga computacional. Entre las funciones de kernel para datos no lineales se incluyen función de base radial (gaussiana), polinómica y perceptrón multicapa o sigmoide (redes neuronales).

Clasificador SVM no lineal entrenado en MATLAB con una función de kernel gaussiana. (Ver código).
Regresión por vectores de soporte
Las SVM se utilizan principalmente para tareas de clasificación, pero también se pueden adaptar para regresión. La regresión con SVM se considera una técnica no paramétrica, ya que se basa en funciones de kernel. A diferencia de la regresión lineal, donde se conoce la relación entre las variables de respuesta (salida) y de predicción (entrada), el objetivo de la regresión por vectores de soporte (SVR) es buscar esta relación. Para lograrlo, SVR identifica el hiperplano que mejor se ajusta a los datos dentro de un margen de tolerancia especificado, conocido como margen, mientras reduce el error de predicción al mínimo.
El principio de funcionamiento de SVR es el mismo que el de los clasificadores SVM; la diferencia radica en que el objetivo de SVR es predecir valores continuos en lugar de clases discretas. SVR puede gestionar datos lineales y no lineales utilizando diferentes tipos de kernel. Recurriendo al truco del kernel, puede realizar una regresión no lineal transformando los datos a un espacio de alta dimensionalidad.
Beneficios de SVM
Las SVM son los algoritmos de aprendizaje supervisado más populares en Machine Learning e inteligencia artificial, principalmente porque pueden gestionar datos de alta dimensionalidad y límites de decisión complejos de manera eficaz. Los principales beneficios de Support Vector Machines son:
- Versatilidad de datos: Las SVM son especialmente efectivas para trabajar con conjuntos de datos de alta dimensionalidad y no estructurados. Las Support Vector Machines se pueden emplear para datos lineales y no lineales, de modo que resultan útiles para muchas aplicaciones.
- Solidez: Las SVM son menos propensas a overfitting, especialmente en espacios de alta dimensionalidad, debido al parámetro de regularización que controla el tradeoff entre lograr un error bajo en los datos de entrenamiento y reducir la norma de los pesos.
- Interpretabilidad: El límite de decisión creado por un clasificador SVM lineal es claro e interpretable, lo que puede ser beneficioso para comprender las predicciones de un modelo y tomar decisiones bien fundamentadas.
- Precisión: Las SVM son altamente precisas y efectivas para conjuntos de datos pequeños, especialmente en casos en que el número de dimensiones supera el número de muestras.
Aplicaciones de las SVM
Los beneficios mencionados convierten a las Support Vector Machines en una opción popular para modelar datos en una amplia gama de aplicaciones:
- Procesamiento del lenguaje natural: Las SVM se utilizan ampliamente en tareas de PLN, como detección de spam y análisis de sentimiento, clasificando el texto en categorías.
- Computer Vision: Las SVM se utilizan en tareas de clasificación de imágenes, como reconocimiento de escritura manuscrita y detección de rostros u objetos, así como herramienta de diagnóstico médico para clasificar imágenes de resonancia magnética que podrían indicar la presencia de un tumor.
- Procesamiento de señales: Las SVM también se aplican a datos de señales para tareas como detección de anomalías, reconocimiento del habla y análisis de señales biomédicas.
- Detección de anomalías: Las SVM se pueden entrenar para buscar un hiperplano que separe datos normales de anomalías.
- Bioinformática: Las SVM se aplican en la clasificación de datos biológicos, para clasificar proteínas y analizar perfiles de expresión génica.

Imagen hiperespectral clasificada con un clasificador SVM. (Ver código de MATLAB)
Limitaciones de SVM
Al igual que todos los modelos de Machine Learning, las Support Vector Machines también tienen limitaciones:
- Conjuntos de datos de gran tamaño: Las SVM no son adecuadas para gestionar conjuntos de datos de gran tamaño debido a su alta carga computacional y requisitos de memoria. El truco del kernel permite que las Support Vector Machines gestionen datos no lineales, pero conlleva una alta carga computacional. Las SVM requieren resolver un problema de optimización cuadrática. Para conjuntos de datos de gran tamaño, la matriz del kernel también sería considerable y aumentaría los requisitos de memoria.
- Datos con ruido: Las SVM no son adecuadas para datos con ruido, ya que su objetivo es aumentar el margen entre las clases.
- Interpretabilidad: Las SVM lineales son interpretables, pero las SVM no lineales no lo son. Las complejas transformaciones que se realizan en las SVM no lineales provocan que el límite de decisión resulte difícil de interpretar.
Con MATLAB® y Statistics and Machine Learning Toolbox™, puede entrenar, evaluar y realizar predicciones con modelos de SVM para clasificación y regresión. Desde selección de características y ajuste de hiperparámetros hasta validación cruzada y métricas de rendimiento, MATLAB proporciona herramientas para crear modelos de Support Vector Machines eficientes. Las apps de Machine Learning de low-code de MATLAB permiten entrenar y evaluar SVM de manera interactiva, generar código C/C++, y realizar despliegues en CPU y microcontroladores, todo ello sin necesidad de escribir código.
Preprocesamiento de datos
Para garantizar resultados precisos, los datos deben estar libres de valores atípicos y listos para entrenar modelos. Con MATLAB, puede realizar tareas de depuración, como gestionar valores ausentes y valores atípicos, y normalizar y suavizar datos. Puede utilizar las tareas de Live Editor para preprocesamiento de datos, o bien la app Data Cleaner, para preprocesar los datos de manera interactiva. Estas apps también generan código.
MATLAB admite diversos tipos de datos, como datos de series temporales, texto, imágenes y audio. Toolboxes especializadas, como Audio Toolbox™ y Signal Processing Toolbox™, ofrecen prestaciones de extracción de características, lo que permite medir características distintivas en diferentes dominios y reutilizar cálculos intermedios.
Entrenamiento de modelos de SVM
Puede entrenar modelos de SVM para tareas de clasificación y regresión binarias o multiclase sirviéndose de las funciones fitcsvm
y fitrsvm
. Para Support Vector Machines no lineales, dispone de varias funciones de kernel, por ejemplo, lineal, polinómica y RBF. Además, puede crear y especificar una función de kernel personalizada, por ejemplo, sigmoide.
También puede entrenar modelos de SVM de manera interactiva con las apps Classification Learner y Regression Learner. Con estas apps, puede completar todo el flujo de trabajo de un modelo de SVM, desde el entrenamiento hasta el ajuste, sin necesidad de escribir código. Estas apps permiten explorar datos, seleccionar características, realizar entrenamiento automatizado, optimizar hiperparámetros y evaluar resultados.

Matriz de confusión de validación creada con la app Classification Learner. (Ver código de MATLAB)
Estas apps pueden generar código C/C++, permiten exportar el modelo de SVM, compartir los resultados e investigarlos más a fondo fuera de las apps. Por ejemplo, puede exportar el modelo de Support Vector Machine desde las apps Classification Learner o Regression Learner e importarlo en la app Experiment Manager para realizar tareas adicionales, como modificar los datos de entrenamiento, ajustar rangos de búsqueda de hiperparámetros y ejecutar experimentos de entrenamiento personalizados.
Realización de predicciones
Después de entrenar el modelo de SVM, puede predecir etiquetas con la función predict. Puede simular un modelo de SVM entrenado en Simulink con los bloques ClassificationSVM Predict o RegressionSVM Predict.
Evaluación de resultados
Puede evaluar el rendimiento del modelo de SVM bien de forma programática, sirviéndose de las funciones confusionchart
y rocmetrics
, o bien de manera interactiva. Con las apps de Machine Learning, puede comparar el rendimiento de diferentes modelos para encontrar el que mejor se adapta a los datos.
Después de entrenar clasificadores en la app Classification Learner, puede comparar modelos en función de la exactitud, visualizar resultados de clasificadores representando gráficamente predicciones de clases, y comprobar el rendimiento utilizando una matriz de confusión, una curva ROC o una curva de precisión-recuperación.
Asimismo, en la app Regression Learner puede comparar modelos en función de métricas de modelos, visualizar resultados de regresión en una gráfica de respuesta o representando gráficamente la respuesta real frente a la prevista, y evaluar modelos utilizando una gráfica de residuales.

Gráfica de comparación entre respuesta prevista y real de un modelo de regresión entrenado en la app Regression Learner. Cuanto más cerca estén los puntos de la línea, mejor será la predicción. (Ver código de MATLAB)

Gráfica de comparación entre respuesta prevista y real de un modelo de regresión entrenado en la app Regression Learner. Cuanto más cerca estén los puntos de la línea, mejor será la predicción. (Ver código de MATLAB)
Recursos
Amplíe sus conocimientos con documentación, ejemplos, vídeos y mucho más.
Documentación
- Clasificación de registros de fonocardiogramas (FCG) humanos con un clasificador SVM
- Evaluación del rendimiento de un clasificador con la app Classification Learner
- Evaluación del rendimiento de un modelo con la app Regression Learner
- Selección de un tipo de clasificador
- Exportación de un modelo de clasificación para predecir datos nuevos
- Ajuste de un modelo de regresión con Experiment Manager
- Creación de un clasificador SVM de imágenes
Más información
- Introducción a Machine Learning (4 vídeos) - Serie de vídeos
- Aprendizaje supervisado
Temas relacionados
Explore áreas temáticas similares comúnmente asociadas con productos de MATLAB y Simulink.
30 días de exploración a su alcance
Más informaciónSeleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)