SVM – Máquinas de vectores de soporte en R

Uso: Clasificador lineal.

Descripción: El método de SVM se basa en la búsqueda de un hiperplano que separe de forma óptima a los puntos de una clase de la de otra, que eventualmente han podido ser previamente proyectados a un espacio de dimensionalidad superior.

La característica fundamental es buscar el hiperplano que tenga la máxima distancia (margen) con los puntos que estén más cerca de él mismo. De esta forma, los puntos del vector que son etiquetados con una categoría estarán a un lado del hiperplano y los casos que se encuentren en la otra categoría estarán al otro lado.

Variable dependiente: métricas y/o no métricas

Variables independientes: métricas

Ejemplo en R: Clasificar tipo de flor atendiendo a sus características físicas como pueden ser el ancho y alto de los pétalos y sépalos.

# Cargar libreria utilizada
library(e1071)

# Carga de datos inicial, tipos de flores con diferentes caracteristicas 
data(iris)
datos <- iris
View(datos)

# Selección de una submuestra del 70% de los datos
set.seed(101)
tamano.total <- nrow(datos)
tamano.entreno <- round(tamano.total*0.7)
datos.indices <- sample(1:tamano.total , size=tamano.entreno)
datos.entreno <- datos[datos.indices,]
datos.test <- datos[-datos.indices,]

# Ejecución del modelo SVM
modelo <- svm(Species~., data=datos.entreno)

# Predicción de los restantes
prediccion <- predict(modelo,new=datos.test)

# Tabla de confusión.
# Se usa with para que aparezca el nombre de la variable Species en ella
# ya que en caso contrario no sale.
(mc <- with(datos.test,(table(prediccion,Species))))
##             Species
## prediccion   setosa versicolor virginica
##   setosa         15          0         0
##   versicolor      0         11         2
##   virginica       0          1        16
# % correctamente clasificados
(correctos <- sum(diag(mc)) / nrow(datos.test) *100)
## [1] 93.33333

Otros artículos que pueden ser de interés:

Autor: Diego Calvo