Support Vector Machines em R
Kailash Awati
Instructor
x1 e x2 distribuídas uniformemente em (0,1).# Preliminares... # Definir número de pontos n <- 200 # Fixar semente para reprodutibilidade set.seed(42)# Gerar dataframe com dois preditores x1 e x2 em (0,1) df <- data.frame(x1 = runif(n), x2 = runif(n))
x1 = x2y = -1 para pontos abaixo da linha e y = 1 para pontos acima# Classificar pontos como -1 ou +1
df$y <- factor(ifelse(df$x1 - df$x2 > 0, -1, 1),
levels = c(-1, 1))
x1 = x2: passa por (0, 0) e tem inclinação = 1library(ggplot2)
# Construir o gráfico
p <- ggplot(data = df, aes(x = x1, y = x2, color = y)) +
geom_point() +
scale_color_manual(values = c("-1" = "red", "1" = "blue")) +
geom_abline(slope = 1, intercept = 0)
# Exibir
p

# Criar uma margem de 0.05 no conjunto delta <- 0.05 # Manter apenas os pontos fora da margem df1 <- df[abs(df$x1 - df$x2) > delta, ] # Verificar o número de pontos restantes nrow(df1)# Replotar o conjunto com margem (código igual ao anterior) p <- ggplot(data = df1, aes(x = x1, y = x2, color = y)) + geom_point() + scale_color_manual(values = c("red", "blue")) + geom_abline(slope = 1, intercept = 0) # Exibir gráfico p

p <- p +
geom_abline(slope = 1, intercept = delta, linetype = "dashed") +
geom_abline(slope = 1, intercept = -delta, linetype = "dashed")
p

Support Vector Machines em R