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
Te felicito sinceramente por el contenido de la web. Me ha resuelto muchas dudas y aclarado conceptos.
Gracias 🙂
gracias por la info, también se puede aplicar para regresión? podrías compartir un ejemplo… 🙂
Muy buena y clara la explicación!!!! Ahora bien esta librereria no parecería ser adecuada para bases de datos mas grandes como por ejemplo de 100.000 observaciones. Pasan días enteros de proceso de datos y no se arroja ningún resultado
Hola Diego, gracias por la explicación.
Sabes como graficar el hiperplano optimo de separación si se pasa de un espacio R2 a R3?
Tengo esta información:
datos % add_trace(x = ~x, y = ~y, z = ~z, color = ~clase , colors = c(«#0C4B8E», «#BF382A»), mode = «markers», type = «scatter3d»)
Como puedo graficar un hiperplano que separe estas dos «poblaciones»