Chapter 09 (page 368): 5, 7, 8

Q5

a

set.seed(421) x1 = runif(500) - 0.5 x2 = runif(500) - 0.5 y = 1 * (x1^2 - x2^2 > 0) #b plot(x1[y == 0], x2[y == 0], col = “red”, xlab = “X1”, ylab = “X2”, pch = “+”) points(x1[y == 1], x2[y == 1], col = “blue”, pch = 4) #c lm.fit = glm(y ~ x1 + x2, family = binomial) summary(lm.fit) #d data = data.frame(x1 = x1, x2 = x2, y = y) lm.prob = predict(lm.fit, data, type = “response”) lm.pred = ifelse(lm.prob > 0.52, 1, 0) data.pos = data[lm.pred == 1, ] data.neg = data[lm.pred == 0, ] plot(data.pos\(x1, data.pos\)x2, col = “blue”, xlab = “X1”, ylab = “X2”, pch = “+”) points(data.neg\(x1, data.neg\)x2, col = “red”, pch = 4) #e lm.fit = glm(y ~ poly(x1, 2) + poly(x2, 2) + I(x1 * x2), data = data, family = binomial) #f lm.prob = predict(lm.fit, data, type = “response”) lm.pred = ifelse(lm.prob > 0.5, 1, 0) data.pos = data[lm.pred == 1, ] data.neg = data[lm.pred == 0, ] plot(data.pos\(x1, data.pos\)x2, col = “blue”, xlab = “X1”, ylab = “X2”, pch = “+”) points(data.neg\(x1, data.neg\)x2, col = “red”, pch = 4) #g library(e1071) svm.fit = svm(as.factor(y) ~ x1 + x2, data, kernel = “linear”, cost = 0.1) svm.pred = predict(svm.fit, data) data.pos = data[svm.pred == 1, ] data.neg = data[svm.pred == 0, ] plot(data.pos\(x1, data.pos\)x2, col = “blue”, xlab = “X1”, ylab = “X2”, pch = “+”) points(data.neg\(x1, data.neg\)x2, col = “red”, pch = 4) #h svm.fit = svm(as.factor(y) ~ x1 + x2, data, gamma = 1) svm.pred = predict(svm.fit, data) data.pos = data[svm.pred == 1, ] data.neg = data[svm.pred == 0, ] plot(data.pos\(x1, data.pos\)x2, col = “blue”, xlab = “X1”, ylab = “X2”, pch = “+”) points(data.neg\(x1, data.neg\)x2, col = “red”, pch = 4)

#Q7 #a library(ISLR) gas.med = median(Auto\(mpg) new.var = ifelse(Auto\)mpg > gas.med, 1, 0) Auto$mpglevel = as.factor(new.var) #b library(e1071) set.seed(3255) tune.out = tune(svm, mpglevel ~ ., data = Auto, kernel = “linear”, ranges = list(cost = c(0.01, 0.1, 1, 5, 10, 100))) summary(tune.out) #c set.seed(21) tune.out = tune(svm, mpglevel ~ ., data = Auto, kernel = “polynomial”, ranges = list(cost = c(0.1, 1, 5, 10), degree = c(2, 3, 4))) summary(tune.out) #d svm.linear = svm(mpglevel ~ ., data = Auto, kernel = “linear”, cost = 1) svm.poly = svm(mpglevel ~ ., data = Auto, kernel = “polynomial”, cost = 10, degree = 2) svm.radial = svm(mpglevel ~ ., data = Auto, kernel = “radial”, cost = 10, gamma = 0.01) plotpairs = function(fit) { for (name in names(Auto)[!(names(Auto) %in% c(“mpg”, “mpglevel”, “name”))]) { plot(fit, Auto, as.formula(paste(“mpg~”, name, sep = ""))) } } plotpairs(svm.linear)

#Q8 #a library(ISLR) set.seed(9004) train = sample(dim(OJ)[1], 800) OJ.train = OJ[train, ] OJ.test = OJ[-train, ] #b library(e1071) svm.linear = svm(Purchase ~ ., kernel = “linear”, data = OJ.train, cost = 0.01) summary(svm.linear)

#c train.pred = predict(svm.linear, OJ.train) table(OJ.train\(Purchase, train.pred) test.pred = predict(svm.linear, OJ.test) table(OJ.test\)Purchase, test.pred) #d set.seed(1554) tune.out = tune(svm, Purchase ~ ., data = OJ.train, kernel = “linear”, ranges = list(cost = 10^seq(-2, 1, by = 0.25))) summary(tune.out) #e svm.linear = svm(Purchase ~ ., kernel = “linear”, data = OJ.train, cost = tune.out\(best.parameters\)cost) train.pred = predict(svm.linear, OJ.train) table(OJ.train\(Purchase, train.pred) test.pred = predict(svm.linear, OJ.test) table(OJ.test\)Purchase, test.pred) #f set.seed(410) svm.radial = svm(Purchase ~ ., data = OJ.train, kernel = “radial”) summary(svm.radial) train.pred = predict(svm.radial, OJ.train) table(OJ.train\(Purchase, train.pred)test.pred = predict(svm.radial, OJ.test) table(OJ.test\)Purchase, test.pred) set.seed(755) tune.out = tune(svm, Purchase ~ ., data = OJ.train, kernel = “radial”, ranges = list(cost = 10^seq(-2, 1, by = 0.25))) summary(tune.out) svm.radial = svm(Purchase ~ ., data = OJ.train, kernel = “radial”, cost = tune.out\(best.parameters\)cost) train.pred = predict(svm.radial, OJ.train) table(OJ.train$Purchase, train.pred)