Máquina de vectores de soporte (SVM)
Lección 18 de 19 del curso Introducción al aprendizaje automático de Coddy.
La Máquina de Vectores de Soporte (SVM, por sus siglas en inglés) es un algoritmo de aprendizaje automático supervisado, potente y versátil, utilizado tanto para tareas de clasificación como de regresión. Sin embargo, se utiliza más comúnmente en problemas de clasificación. Las SVM ofrecen una alta precisión y funcionan bien con un espacio de características de alta dimensión, lo que las hace adecuadas para aplicaciones que van desde el reconocimiento de imágenes hasta la bioinformática.

Fuente: wikipedia
El objetivo principal del algoritmo SVM es encontrar el hiperplano óptimo (en un espacio bidimensional, esto es una línea) que mejor separe las clases en el espacio de características. El modelo SVM representa los ejemplos como puntos en el espacio, mapeados de tal manera que los ejemplos de categorías separadas se dividen por un espacio claro que sea lo más ancho posible.
- Hiperplano: Básicamente, es un límite de decisión que separa las clases. En 2D, este hiperplano es una línea, pero en dimensiones superiores, puede ser más complejo.
- Vectores de Soporte: Son los puntos de datos más cercanos al hiperplano, los cuales son críticos para definir la posición del hiperplano. El clasificador SVM está altamente influenciado por estos puntos, de ahí el nombre de Máquina de
Support Vector(Vectores de Soporte). - Margen: Es el espacio entre dos líneas en los puntos de datos más cercanos de diferentes clases. Puede considerarse como una medida de separación entre las clases. Asegurar que el margen sea lo más ancho posible es un objetivo clave en el entrenamiento de una SVM.
Tipos de SVM:
- SVM Lineal: Cuando los datos son linealmente separables, podemos usar una sola línea recta para separar las clases. Este escenario utiliza SVM lineal.
- SVM No lineal: Cuando los datos no son linealmente separables, la SVM utiliza lo que se llama el truco del kernel para transformar el espacio de entrada en un espacio de mayor dimensión donde se pueda usar un hiperplano para realizar la separación. El truco del kernel consiste en transformar los datos a otra dimensión que tenga un margen claro entre las clases de datos. Permite que la SVM resuelva problemas no lineales. Los kernels comunes incluyen:
- Kernel Lineal: Se utiliza cuando los datos son linealmente separables.
- Kernel Polinómico: Transforma el espacio de características original en un espacio de características polinómico de un grado especificado.
- Kernel Gaussiano: Útil para datos no lineales que se agrupan en grupos. Mapea el espacio de características a dimensiones superiores.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Desafío
FácilLas Máquinas de Vectores de Soporte (SVMs) utilizan funciones kernel para transformar los datos en un espacio de mayor dimensión donde sea más fácil clasificarlos. Este proceso se conoce como el "truco del kernel". Permite que las SVM resuelvan problemas de clasificación y regresión no lineales de manera eficiente.
Aquí, exploraremos el kernel polinomial que permite límites curvos en los datos. Eleva los datos a un grado especificado d. Este kernel es particularmente útil cuando la relación entre las etiquetas de clase y los atributos es polinomial.
Fuente: wikipedia
Crea una función llamada polynomial_kernel que reciba dos listas (x, y), un grado (d) y un coeficiente (c) y devuelva el kernel polinomial.
→ (
x transpuesta producto punto y más c ) elevado a la potencia de d.
Pruébalo tú mismo
import numpy as np
def polynomial_kernel(x, y, d, c):
x_arr = np.array(x)
y_arr = np.array(y)
# Escribe tu código aquíTodas las lecciones de Introducción al aprendizaje automático
6Otros modelos
Regresión logísticaRegresión linealÁrbol de decisiónMáquina de vectores de soporte (SVM)Cuestionario sobre modelosPractica por tu cuenta: Compilador de Python online