#Chapter 08 (page 332): 3, 8, 9 #Q3 p = seq(0, 1, 0.01) gini.index = 2 * p * (1 - p) class.error = 1 - pmax(p, 1 - p) cross.entropy =- (p * log(p) + (1 - p) * log(1 - p)) matplot(p, cbind(gini.index, class.error, cross.entropy), col = c(“red”, “green”, “blue”)) #Q8 #a library(ISLR) set.seed(1) train = sample(1:nrow(Carseats), nrow(Carseats) / 2) Carseats.train = Carseats[train, ] Carseats.test = Carseats[-train, ] #b library(tree) tree.carseats = tree(Sales ~ ., data = Carseats.train) summary(tree.carseats) plot(tree.carseats) text(tree.carseats, pretty = 0) plot(tree.carseats) text(tree.carseats, pretty = 0) #c cv.carseats = cv.tree(tree.carseats) plot(cv.carseats\(size, cv.carseats\)dev, type = “b”) tree.min = which.min(cv.carseats\(dev) points(tree.min, cv.carseats\)dev[tree.min], col = “red”, cex = 2, pch = 20) prune.carseats = prune.tree(tree.carseats, best = 8) plot(prune.carseats) text(prune.carseats, pretty = 0) yhat = predict(prune.carseats, newdata = Carseats.test) mean((yhat - Carseats.test\(Sales)^2) #d bag.carseats = randomForest(Sales ~ ., data = Carseats.train, mtry = 10, ntree = 500, importance = TRUE) yhat.bag = predict(bag.carseats, newdata = Carseats.test) mean((yhat.bag - Carseats.test\)Sales)^2) importance(bag.carseats) #e rf.carseats = randomForest(Sales ~ ., data = Carseats.train, mtry = 3, ntree = 500, importance = TRUE) yhat.rf = predict(rf.carseats, newdata = Carseats.test) mean((yhat.rf - Carseats.test\(Sales)^2) importance(rf.carseats) #Q9 #a set.seed(1) train = sample(1:nrow(OJ), 800) OJ.train = OJ[train, ] OJ.test = OJ[-train, ] #b tree.oj = tree(Purchase ~ ., data = OJ.train) summary(tree.oj) #c tree.oj #d plot(tree.oj) text(tree.oj, pretty = 0) #e tree.pred = predict(tree.oj, OJ.test, type = "class") table(tree.pred, OJ.test\)Purchase) #f cv.oj = cv.tree(tree.oj, FUN = prune.misclass) cv.oj #g plot(cv.oj\(size, cv.oj\)dev, type = “b”, xlab = “Tree size”, ylab = “Deviance”) #i prune.oj = prune.misclass(tree.oj, best = 2) plot(prune.oj) text(prune.oj, pretty = 0) knitr::opts_chunk$set(echo = TRUE) ```