Support Vector Machine (SVM) es un potente algoritmo de aprendizaje automático que se utiliza para tareas de clasificación, regresión e incluso detección de valores atípicos lineales o no lineales. Las SVM se pueden utilizar para una variedad de tareas, como clasificación de texto, clasificación de imágenes, detección de spam, identificación de escritura a mano, análisis de expresión genética, detección de rostros y detección de anomalías. Las SVM son adaptables y eficientes en una variedad de aplicaciones porque pueden gestionar datos de alta dimensión y relaciones no lineales.
Los algoritmos SVM son muy efectivos cuando intentamos encontrar el hiperplano de separación máximo entre las diferentes clases disponibles en la característica de destino.
matriz de cadenas del programa c
Máquinas de vectores soporte
La máquina de vectores de soporte (SVM) es una aprendizaje automático supervisado algoritmo utilizado tanto para clasificación como para regresión. Aunque también decimos problemas de regresión, es más adecuado para la clasificación. El objetivo principal del algoritmo SVM es encontrar el hiperplano óptimo en un espacio N-dimensional que pueda separar los puntos de datos en diferentes clases en el espacio de características. El hiperplano intenta que el margen entre los puntos más cercanos de diferentes clases sea el máximo posible. La dimensión del hiperplano depende de la cantidad de entidades. Si el número de entidades de entrada es dos, entonces el hiperplano es solo una línea. Si el número de entidades de entrada es tres, entonces el hiperplano se convierte en un plano 2D. Resulta difícil imaginar cuando el número de funciones supera las tres.
Consideremos dos variables independientes x1, X2,y una variable dependiente que es un círculo azul o un círculo rojo.

Puntos de datos linealmente separables
En la figura anterior queda muy claro que hay varias líneas (nuestro hiperplano aquí es una línea porque estamos considerando solo dos características de entrada x1, X2) que segregan nuestros puntos de datos o hacen una clasificación entre círculos rojos y azules. Entonces, ¿cómo elegimos la mejor línea o, en general, el mejor hiperplano que segrega nuestros puntos de datos?
¿Cómo funciona SVM?
Una elección razonable como mejor hiperplano es aquella que representa la mayor separación o margen entre las dos clases.

Múltiples hiperplanos separan los datos de dos clases
Entonces, elegimos el hiperplano cuya distancia desde él hasta el punto de datos más cercano en cada lado está maximizada. Si tal hiperplano existe, se le conoce como hiperplano de margen máximo/margen duro . Entonces, de la figura anterior, elegimos L2. Consideremos un escenario como el que se muestra a continuación.

Seleccionar hiperplano para datos con valores atípicos
Aquí tenemos una bola azul en el límite de la bola roja. Entonces, ¿cómo clasifica SVM los datos? ¡Es sencillo! La bola azul en el límite de las rojas es un valor atípico de las bolas azules. El algoritmo SVM tiene las características de ignorar el valor atípico y encontrar el mejor hiperplano que maximice el margen. SVM es resistente a los valores atípicos.

Hiperplano cuál es el más optimizado
Entonces, en este tipo de punto de datos, lo que hace SVM es encontrar el margen máximo como lo hizo con conjuntos de datos anteriores, además de agregar una penalización cada vez que un punto cruza el margen. Por eso los márgenes en este tipo de casos se llaman márgenes suaves . Cuando hay un margen suave para el conjunto de datos, el SVM intenta minimizar (1/margen+∧(∑penalización)) . La pérdida de bisagra es una penalización comúnmente utilizada. Si no hay violaciones, no hay pérdida de bisagra. Si hay violaciones, la pérdida de bisagra es proporcional a la distancia de la violación.
Hasta ahora, estábamos hablando de datos linealmente separables (el grupo de bolas azules y bolas rojas son separables por una línea recta/lineal). ¿Qué hacer si los datos no son separables linealmente?

Conjunto de datos 1D original para clasificación.
Digamos que nuestros datos se muestran en la figura anterior. SVM resuelve esto creando una nueva variable usando un núcleo . Llamamos a un punto xien la linea y creamos una nueva variable yien función de la distancia desde el origen, por lo que si trazamos esto obtenemos algo como se muestra a continuación

Mapear datos 1D a 2D para poder separar las dos clases
En este caso, la nueva variable y se crea en función de la distancia al origen. Una función no lineal que crea una nueva variable se denomina núcleo.
Terminología de máquina de vectores de soporte
- Hiperplano: el hiperplano es el límite de decisión que se utiliza para separar los puntos de datos de diferentes clases en un espacio de características. En el caso de clasificaciones lineales, será una ecuación lineal, es decir, wx+b = 0. Vectores de soporte: los vectores de soporte son los puntos de datos más cercanos al hiperplano, lo que desempeña un papel fundamental a la hora de decidir el hiperplano y el margen. Margen: el margen es la distancia entre el vector de soporte y el hiperplano. El principal objetivo del algoritmo de máquina de vectores de soporte es maximizar el margen. El margen más amplio indica un mejor rendimiento de clasificación. Kernel: Kernel es la función matemática que se utiliza en SVM para mapear los puntos de datos de entrada originales en espacios de características de alta dimensión, de modo que el hiperplano se pueda encontrar fácilmente incluso si los puntos de datos no son linealmente separables en el espacio de entrada original. Algunas de las funciones del núcleo comunes son lineal, polinómica, función de base radial (RBF) y sigmoide. Margen duro: el hiperplano de margen máximo o el hiperplano de margen duro es un hiperplano que separa adecuadamente los puntos de datos de diferentes categorías sin ninguna clasificación errónea. Margen suave: cuando los datos no son perfectamente separables o contienen valores atípicos, SVM permite una técnica de margen suave. Cada punto de datos tiene una variable de holgura introducida por la formulación SVM de margen suave, que suaviza el requisito de margen estricto y permite ciertas clasificaciones erróneas o violaciones. Descubre un compromiso entre aumentar el margen y reducir las infracciones. C: La maximización del margen y las multas por clasificación errónea se equilibran con el parámetro de regularización C en SVM. La sanción por sobrepasar el margen o clasificar erróneamente elementos de datos la decide él mismo. Se impone una penalización más estricta con un valor mayor de C, lo que da como resultado un margen menor y quizás menos clasificaciones erróneas. Pérdida de bisagra: una función de pérdida típica en las SVM es la pérdida de bisagra. Sanciona clasificaciones incorrectas o violaciones de márgenes. La función objetivo en SVM se forma frecuentemente combinándola con el término de regularización. Problema dual: se puede utilizar un problema dual del problema de optimización que requiere ubicar los multiplicadores de Lagrange relacionados con los vectores de soporte para resolver SVM. La formulación dual permite el uso de trucos del kernel y una computación más efectiva.
Intuición matemática de la máquina de vectores de soporte
Considere un problema de clasificación binaria con dos clases, etiquetadas como +1 y -1. Tenemos un conjunto de datos de entrenamiento que consta de vectores de características de entrada X y sus etiquetas de clase correspondientes Y.
La ecuación del hiperplano lineal se puede escribir como:
El vector W representa el vector normal al hiperplano. es decir, la dirección perpendicular al hiperplano. El parámetro b en la ecuación representa el desplazamiento o distancia del hiperplano desde el origen a lo largo del vector normal En .
La distancia entre un punto de datos x_i y el límite de decisión se puede calcular como:
donde ||w|| representa la norma euclidiana del vector de peso w. Norma euclidianadel vector normal W
cómo generar números aleatorios en java
Para clasificador SVM lineal:
Mejoramiento:
- Para clasificador SVM lineal de margen duro:
La variable de destino o etiqueta para ithla instancia de entrenamiento se denota con el símbolo tien esta declaración. Y Ti=-1 para ocurrencias negativas (cuando yi= 0) yti=1 instancias positivas (cuando yi= 1) respectivamente. Porque requerimos el límite de decisión que satisfaga la restricción:
- Para clasificador SVM lineal de margen suave:
- Problema dual: se puede utilizar un problema dual del problema de optimización que requiere ubicar los multiplicadores de Lagrange relacionados con los vectores de soporte para resolver SVM. Los multiplicadores de Lagrange óptimos α(i) que maximizan la siguiente función objetivo dual
dónde,
- aies el multiplicador de Lagrange asociado con la i-ésima muestra de entrenamiento.
- k(xi, Xj) es la función del núcleo que calcula la similitud entre dos muestras xiyxj. Permite a SVM manejar problemas de clasificación no lineal al mapear implícitamente las muestras en un espacio de características de mayor dimensión.
- El término ∑αirepresenta la suma de todos los multiplicadores de Lagrange.
El límite de decisión de SVM se puede describir en términos de estos multiplicadores de Lagrange óptimos y los vectores de soporte una vez que se ha resuelto el problema dual y se han descubierto los multiplicadores de Lagrange óptimos. Las muestras de entrenamiento que tienen i> 0 son los vectores de soporte, mientras que el límite de decisión lo proporciona:
algoritmo para bfs
Tipos de máquina de vectores de soporte
Según la naturaleza del límite de decisión, las máquinas de vectores de soporte (SVM) se pueden dividir en dos partes principales:
- SVM lineal: las SVM lineales utilizan un límite de decisión lineal para separar los puntos de datos de diferentes clases. Cuando los datos se pueden separar linealmente con precisión, las SVM lineales son muy adecuadas. Esto significa que una sola línea recta (en 2D) o un hiperplano (en dimensiones superiores) pueden dividir completamente los puntos de datos en sus respectivas clases. Un hiperplano que maximiza el margen entre las clases es el límite de decisión. SVM no lineal: SVM no lineal se puede utilizar para clasificar datos cuando no se pueden separar en dos clases mediante una línea recta (en el caso de 2D). Al utilizar funciones del kernel, las SVM no lineales pueden manejar datos separables de forma no lineal. Estas funciones del núcleo transforman los datos de entrada originales en un espacio de características de mayor dimensión, donde los puntos de datos se pueden separar linealmente. Se utiliza una SVM lineal para ubicar un límite de decisión no lineal en este espacio modificado.
Funciones populares del kernel en SVM
El kernel SVM es una función que toma un espacio de entrada de baja dimensión y lo transforma en un espacio de mayor dimensión, es decir, convierte problemas no separables en problemas separables. Es sobre todo útil en problemas de separación no lineal. En pocas palabras, el núcleo realiza algunas transformaciones de datos extremadamente complejas y luego descubre el proceso para separar los datos en función de las etiquetas o salidas definidas.
Ventajas de SVM
- Efectivo en casos de alta dimensión.
- Su memoria es eficiente ya que utiliza un subconjunto de puntos de entrenamiento en la función de decisión llamados vectores de soporte.
- Se pueden especificar diferentes funciones del kernel para las funciones de decisión y es posible especificar kernels personalizados.
Implementación de SVM en Python
Predecir si el cáncer es benigno o maligno. El uso de datos históricos sobre pacientes diagnosticados con cáncer permite a los médicos diferenciar los casos malignos y los benignos reciben atributos independientes.
Pasos
- Cargue el conjunto de datos de cáncer de mama desde sklearn.datasets
- Separe las características de entrada y las variables de destino.
- Cree y entrene los clasificadores SVM utilizando el kernel RBF.
- Trazar el diagrama de dispersión de las entidades de entrada.
- Trazar el límite de decisión.
- Trazar el límite de decisión
Python3
# Load the important packages> from> sklearn.datasets> import> load_breast_cancer> import> matplotlib.pyplot as plt> from> sklearn.inspection> import> DecisionBoundaryDisplay> from> sklearn.svm> import> SVC> # Load the datasets> cancer> => load_breast_cancer()> X> => cancer.data[:, :> 2> ]> y> => cancer.target> #Build the model> svm> => SVC(kernel> => 'rbf'> , gamma> => 0.5> , C> => 1.0> )> # Trained the model> svm.fit(X, y)> # Plot Decision Boundary> DecisionBoundaryDisplay.from_estimator(> > svm,> > X,> > response_method> => 'predict'> ,> > cmap> => plt.cm.Spectral,> > alpha> => 0.8> ,> > xlabel> => cancer.feature_names[> 0> ],> > ylabel> => cancer.feature_names[> 1> ],> > )> # Scatter plot> plt.scatter(X[:,> 0> ], X[:,> 1> ],> > c> => y,> > s> => 20> , edgecolors> => 'k'> )> plt.show()> |
>
>
Producción :

Clasificaciones de cáncer de mama con núcleo SVM RBF