Q5.1

plot(alldata$X1, alldata$X2, col = c("blue", "red")[alldata$Y], pch = c("+", "o")[alldata$Y])

Q5.2

<aside> 💡 1

</aside>

# required libraries
## SVM library
library(e1071)

## Metrics library
library(MLmetrics)
# create model
model <- svm(Y ~ ., alldata, kernel = "radial", type = "C-classification", gamma = 1)

# run model on training set
ypred = predict(model, alldata[,-3])

# calculate accuracy
Accuracy(ypred, alldata$Y)

Q5.3

<aside> 💡 (b) Κλάση "2"

</aside>

# required libraries
library(e1071)
# create model
model <- svm(Y ~ ., data = alldata, type = "C-classification", kernel = "radial", gamma = 1000000, probability = TRUE)

# add new data as data frame
new_data = data.frame(X1 = -2, X2 = -1.9)

# run prediction
predict(model, new_data, probability = TRUE)

Q5.4

# required libraries
library(e1071)
# plot data
plot(alldata$X1, alldata$X2, col = c("blue", "red")[alldata$Y], pch = c("o", "+")[alldata$Y])

# plot classified point
points(-2, -1.9, col = "green", pch = 9)

# create vector for different gamma values
gammavalues = c(0.01, 0.1, 1, 10, 100, 1000, 10000, 100000, 1000000)

# create sequencies for data
X1 = seq(min(alldata[, 1]), max(alldata[, 1]), by = 0.1)
X2 = seq(min(alldata[, 2]), max(alldata[, 2]), by = 0.1)

# create data grid
mygrid = expand.grid(X1, X2)
colnames(mygrid) = colnames(alldata)[1:2]

for (gamma in gammavalues) {
  # create svm model
  svm_model = svm(Y ~ ., kernel = "radial", type = "C-classification", data = alldata, gamma = gamma)
  # run model prediction
  pred = predict(svm_model, mygrid)
  # create matrix to give as z argument to the contour
  Y = matrix(pred, length(X1), length(X2))
  # plot contour with SVM classifier on top of data
	contour(X1, X2, Y, add = TRUE, labels = paste("gamma = ", toString(gamma)), levels = 1.5, col = gamma)
}

Από τα plots παρατηρούμε ότι το σημείο που μας δίνεται λογικά θα έπρεπε να κάνει classify στην πρώτη κλάση (μπλε) και όχι στη δεύτερη (κόκκινο).

Τρέχουμε το μοντέλο SVM για διάφορες τιμές του gamma.

Παρατηρούμε ότι για μεγάλες τιμές του gamma έχουμε overtrain και το SVM κάνει missclassify το σημείο που μας δίνεται.

Plot του υπερεπιπέδου για διάφορες τιμές του gamma

Plot του υπερεπιπέδου για διάφορες τιμές του gamma