ArcLakeGroupSummary <- read_excel("~/Desktop/EPSRC Project /ArcLakeGroupSummary.xlsx")
dundeedata <- read_csv("~/Desktop/EPSRC Project /dundeedata.csv.xls")
colnames(dundeedata)[1]<-"GloboLakes_ID" # change the GloboLID column name to GloboLakes_ID to make the merge easier.
Data<-merge(ArcLakeGroupSummary, dundeedata, by = "GloboLakes_ID", all = TRUE )
Data<-subset(Data, Group!="NA") # The data set is back to the original 732 rows just with extra columns of information
Data$Group<-as.factor(Data$Group)
In order to use each method, I first prepare a suitable data frame - splitting it into training and test sets and then splitting the training set into 5 folds.
Data1<-data.frame(Data[,c("Group","PC1","PC2")])
# Stratify the entire training set into training and test sets
set.seed(234)
library(caret)
train.index<-createDataPartition(Data1$Group, p=0.8, list = FALSE)
train.set<-Data1[train.index, ]
test.set<-Data1[-train.index, ]
# Stratify the training set into 5 folds
folds <- createFolds(y=factor(train.set$Group), k = 5, list = FALSE)
train.set$fold <- folds
Three main ways of choosing hyperparameters apart from selecting all possible combinations or just randomly performing a self selected sweep of what we think would perform well is to use a
#linear
svm_fit_bayes<-function(logCost){
CV.error<-NULL
for (i in 1:5) {
valid.data <- subset(train.set, fold == i)
train.data <- subset(train.set, fold != i)
svmfit<-svm(Group~PC1+PC2, data = train.data, kernel="linear",
cost=exp(logCost), scale= FALSE)
svm.y<-valid.data$Group
svm.predy<-predict(svmfit, valid.data)
ith.test.error<- mean(svm.y!=svm.predy)
CV.error<-c(CV.error,(nrow(valid.data)/nrow(train.set))*ith.test.error)
}
list(Score=-sum(CV.error), pred=0)
}
set.seed(234)
OPT_Res<- BayesianOptimization(svm_fit_bayes, bounds= list(logCost = c(-5, 20)),
init_grid_dt = NULL, init_points = 50,
n_iter = 20, acq = "ucb", kappa =2.576,
eps=0, verbose = TRUE)
## elapsed = 6.64 Round = 1 logCost = 13.6405 Value = -0.0186
## elapsed = 6.44 Round = 2 logCost = 14.5428 Value = -0.0186
## elapsed = 0.04 Round = 3 logCost = -4.4991 Value = -0.0254
## elapsed = 6.67 Round = 4 logCost = 14.4021 Value = -0.0186
## elapsed = 0.04 Round = 5 logCost = -3.3272 Value = -0.0153
## elapsed = 2.67 Round = 6 logCost = 11.1199 Value = -0.0203
## elapsed = 8.40 Round = 7 logCost = 18.2346 Value = -0.1034
## elapsed = 5.08 Round = 8 logCost = 12.9411 Value = -0.0186
## elapsed = 7.15 Round = 9 logCost = 18.1934 Value = -0.1034
## elapsed = 0.06 Round = 10 logCost = 2.1058 Value = -0.0203
## elapsed = 0.55 Round = 11 logCost = 8.8931 Value = -0.0203
## elapsed = 0.47 Round = 12 logCost = 8.6925 Value = -0.0203
## elapsed = 1.27 Round = 13 logCost = 9.5712 Value = -0.0220
## elapsed = 1.34 Round = 14 logCost = 9.5747 Value = -0.0220
## elapsed = 0.05 Round = 15 logCost = -4.9700 Value = -0.0220
## elapsed = 0.39 Round = 16 logCost = 6.0279 Value = -0.0203
## elapsed = 0.06 Round = 17 logCost = 2.8288 Value = -0.0203
## elapsed = 5.58 Round = 18 logCost = 13.5004 Value = -0.0186
## elapsed = 0.05 Round = 19 logCost = -1.5418 Value = -0.0186
## elapsed = 6.87 Round = 20 logCost = 16.7944 Value = -0.1034
## elapsed = 0.43 Round = 21 logCost = 8.0767 Value = -0.0203
## elapsed = 1.64 Round = 22 logCost = 9.4776 Value = -0.0220
## elapsed = 6.98 Round = 23 logCost = 16.6300 Value = -0.1034
## elapsed = 1.82 Round = 24 logCost = 10.4356 Value = -0.0203
## elapsed = 0.45 Round = 25 logCost = 7.2445 Value = -0.0203
## elapsed = 0.09 Round = 26 logCost = 4.3700 Value = -0.0203
## elapsed = 5.21 Round = 27 logCost = 12.4167 Value = -0.0186
## elapsed = 0.05 Round = 28 logCost = -0.2072 Value = -0.0186
## elapsed = 6.66 Round = 29 logCost = 15.9732 Value = -0.0186
## elapsed = 7.08 Round = 30 logCost = 17.0627 Value = -0.1034
## elapsed = 2.10 Round = 31 logCost = 10.4807 Value = -0.0203
## elapsed = 0.04 Round = 32 logCost = 1.3078 Value = -0.0203
## elapsed = 0.05 Round = 33 logCost = -0.5958 Value = -0.0186
## elapsed = 5.23 Round = 34 logCost = 12.6207 Value = -0.0186
## elapsed = 0.53 Round = 35 logCost = 8.3371 Value = -0.0203
## elapsed = 4.75 Round = 36 logCost = 12.2033 Value = -0.0186
## elapsed = 5.10 Round = 37 logCost = 12.5207 Value = -0.0186
## elapsed = 0.05 Round = 38 logCost = -1.1632 Value = -0.0169
## elapsed = 0.41 Round = 39 logCost = 7.6583 Value = -0.0203
## elapsed = 0.08 Round = 40 logCost = 3.8680 Value = -0.0203
## elapsed = 1.62 Round = 41 logCost = 9.5338 Value = -0.0220
## elapsed = 7.26 Round = 42 logCost = 17.6858 Value = -0.1034
## elapsed = 7.10 Round = 43 logCost = 16.1313 Value = -0.0186
## elapsed = 0.05 Round = 44 logCost = 0.8071 Value = -0.0203
## elapsed = 2.85 Round = 45 logCost = 11.4682 Value = -0.0186
## elapsed = 5.91 Round = 46 logCost = 14.4283 Value = -0.0186
## elapsed = 0.06 Round = 47 logCost = 1.0083 Value = -0.0203
## elapsed = 3.06 Round = 48 logCost = 10.7092 Value = -0.0203
## elapsed = 1.28 Round = 49 logCost = 9.8284 Value = -0.0220
## elapsed = 0.06 Round = 50 logCost = -1.8423 Value = -0.0186
## elapsed = 1.91 Round = 51 logCost = 10.4467 Value = -0.0203
## elapsed = 2.57 Round = 52 logCost = 11.3556 Value = -0.0186
## elapsed = 5.20 Round = 53 logCost = 12.5493 Value = -0.0186
## elapsed = 0.04 Round = 54 logCost = -2.0199 Value = -0.0186
## elapsed = 3.15 Round = 55 logCost = 11.3426 Value = -0.0186
## elapsed = 2.79 Round = 56 logCost = 11.5541 Value = -0.0203
## elapsed = 6.43 Round = 57 logCost = 13.1535 Value = -0.0186
## elapsed = 0.05 Round = 58 logCost = -2.8344 Value = -0.0169
## elapsed = 0.05 Round = 59 logCost = -2.3143 Value = -0.0169
## elapsed = 3.03 Round = 60 logCost = 11.1460 Value = -0.0203
## elapsed = 3.71 Round = 61 logCost = 11.9674 Value = -0.0186
## elapsed = 0.05 Round = 62 logCost = -1.8601 Value = -0.0186
## elapsed = 2.03 Round = 63 logCost = 10.2196 Value = -0.0203
## elapsed = 2.54 Round = 64 logCost = 10.8603 Value = -0.0203
## elapsed = 3.45 Round = 65 logCost = 11.7292 Value = -0.0186
## elapsed = 2.60 Round = 66 logCost = 11.3742 Value = -0.0186
## elapsed = 0.04 Round = 67 logCost = -2.1433 Value = -0.0169
## elapsed = 0.04 Round = 68 logCost = -3.6650 Value = -0.0220
## elapsed = 0.05 Round = 69 logCost = -1.0259 Value = -0.0186
## elapsed = 2.47 Round = 70 logCost = 11.1258 Value = -0.0203
##
## Best Parameters Found:
## Round = 5 logCost = -3.3272 Value = -0.0153
OPT_Res$Best_Par
## logCost
## -3.327248
as.numeric(exp(OPT_Res$Best_Par["logCost"]))
## [1] 0.03589176
CV.error<-NULL
for (i in 1:5) {
valid.data <- subset(train.set, fold == i)
train.data <- subset(train.set, fold != i)
svmfit<-svm(Group~PC1+PC2, data = train.data, kernel="linear",
cost=exp(OPT_Res$Best_Par["logCost"]), scale = FALSE)
svm.y<-valid.data$Group
svm.predy<-predict(svmfit, valid.data)
ith.test.error<- mean(svm.y!=svm.predy)
CV.error<-c(CV.error,(nrow(valid.data)/nrow(train.set))*ith.test.error)
}
sum(CV.error)
## [1] 0.01525424
svm_fit_bayes<-function(logCost, logGamma, Degree){
CV.error<-NULL
for (i in 1:5) {
valid.data <- subset(train.set, fold == i)
train.data <- subset(train.set, fold != i)
svmfit<-svm(Group~PC1+PC2, data = train.data, kernel="polynomial",
cost=exp(logCost), gamma=exp(logGamma), degree=Degree)
svm.y<-valid.data$Group
svm.predy<-predict(svmfit, valid.data)
ith.test.error<- mean(svm.y!=svm.predy)
CV.error<-c(CV.error,(nrow(valid.data)/nrow(train.set))*ith.test.error)
}
list(Score=-sum(CV.error), pred=0)
}
set.seed(234)
OPT_Res<- BayesianOptimization(svm_fit_bayes, bounds= list(logCost = c(-5, 20),
logGamma = c(-9, -0.75),
Degree = c(1L, 5L)),
init_grid_dt = NULL, init_points = 50,
n_iter = 20, acq = "ucb", kappa =2.576,
eps=0, verbose = TRUE)
## elapsed = 0.08 Round = 1 logCost = 13.6405 logGamma = -3.7612 Degree = 4.0000 Value = -0.1627
## elapsed = 0.12 Round = 2 logCost = 14.5428 logGamma = -5.8652 Degree = 4.0000 Value = -0.5305
## elapsed = 0.12 Round = 3 logCost = -4.4991 logGamma = -7.7302 Degree = 2.0000 Value = -0.6678
## elapsed = 0.06 Round = 4 logCost = 14.4021 logGamma = -2.3362 Degree = 3.0000 Value = -0.0153
## elapsed = 0.12 Round = 5 logCost = -3.3272 logGamma = -8.3482 Degree = 2.0000 Value = -0.6678
## elapsed = 0.12 Round = 6 logCost = 11.1199 logGamma = -7.8096 Degree = 5.0000 Value = -0.6678
## elapsed = 0.07 Round = 7 logCost = 18.2346 logGamma = -8.2880 Degree = 2.0000 Value = -0.0915
## elapsed = 0.07 Round = 8 logCost = 12.9411 logGamma = -5.1917 Degree = 2.0000 Value = -0.0831
## elapsed = 16.02 Round = 9 logCost = 18.1934 logGamma = -2.3282 Degree = 2.0000 Value = -0.0729
## elapsed = 0.12 Round = 10 logCost = 2.1058 logGamma = -3.3696 Degree = 3.0000 Value = -0.5712
## elapsed = 0.12 Round = 11 logCost = 8.8931 logGamma = -5.9625 Degree = 4.0000 Value = -0.6678
## elapsed = 0.08 Round = 12 logCost = 8.6925 logGamma = -4.9629 Degree = 2.0000 Value = -0.1407
## elapsed = 0.12 Round = 13 logCost = 9.5712 logGamma = -6.8974 Degree = 3.0000 Value = -0.6678
## elapsed = 0.06 Round = 14 logCost = 9.5747 logGamma = -1.8662 Degree = 3.0000 Value = -0.0271
## elapsed = 0.12 Round = 15 logCost = -4.9700 logGamma = -5.2061 Degree = 2.0000 Value = -0.6678
## elapsed = 0.07 Round = 16 logCost = 6.0279 logGamma = -5.7480 Degree = 1.0000 Value = -0.0542
## elapsed = 0.09 Round = 17 logCost = 2.8288 logGamma = -2.7361 Degree = 2.0000 Value = -0.2186
## elapsed = 0.08 Round = 18 logCost = 13.5004 logGamma = -4.8409 Degree = 2.0000 Value = -0.0763
## elapsed = 0.13 Round = 19 logCost = -1.5418 logGamma = -3.4781 Degree = 4.0000 Value = -0.6678
## elapsed = 0.06 Round = 20 logCost = 16.7944 logGamma = -4.0321 Degree = 3.0000 Value = -0.0271
## elapsed = 0.09 Round = 21 logCost = 8.0767 logGamma = -1.3042 Degree = 4.0000 Value = -0.0814
## elapsed = 0.11 Round = 22 logCost = 9.4776 logGamma = -6.1408 Degree = 3.0000 Value = -0.6678
## elapsed = 0.06 Round = 23 logCost = 16.6300 logGamma = -4.1688 Degree = 3.0000 Value = -0.0271
## elapsed = 0.11 Round = 24 logCost = 10.4356 logGamma = -6.4218 Degree = 3.0000 Value = -0.6678
## elapsed = 0.13 Round = 25 logCost = 7.2445 logGamma = -8.4438 Degree = 4.0000 Value = -0.6678
## elapsed = 0.12 Round = 26 logCost = 4.3700 logGamma = -5.8644 Degree = 2.0000 Value = -0.6678
## elapsed = 0.10 Round = 27 logCost = 12.4167 logGamma = -4.4647 Degree = 4.0000 Value = -0.3356
## elapsed = 0.12 Round = 28 logCost = -0.2072 logGamma = -5.7881 Degree = 4.0000 Value = -0.6678
## elapsed = 0.08 Round = 29 logCost = 15.9732 logGamma = -7.7657 Degree = 2.0000 Value = -0.0932
## elapsed = 0.07 Round = 30 logCost = 17.0627 logGamma = -7.9927 Degree = 2.0000 Value = -0.0966
## elapsed = 0.07 Round = 31 logCost = 10.4807 logGamma = -4.1554 Degree = 3.0000 Value = -0.1153
## elapsed = 0.12 Round = 32 logCost = 1.3078 logGamma = -4.5781 Degree = 2.0000 Value = -0.6678
## elapsed = 0.12 Round = 33 logCost = -0.5958 logGamma = -6.2720 Degree = 4.0000 Value = -0.6678
## elapsed = 0.06 Round = 34 logCost = 12.6207 logGamma = -2.0301 Degree = 5.0000 Value = -0.0508
## elapsed = 0.06 Round = 35 logCost = 8.3371 logGamma = -1.3244 Degree = 3.0000 Value = -0.0271
## elapsed = 0.10 Round = 36 logCost = 12.2033 logGamma = -3.6795 Degree = 5.0000 Value = -0.3102
## elapsed = 0.13 Round = 37 logCost = 12.5207 logGamma = -6.6158 Degree = 4.0000 Value = -0.6678
## elapsed = 0.10 Round = 38 logCost = -1.1632 logGamma = -1.1124 Degree = 2.0000 Value = -0.2542
## elapsed = 0.12 Round = 39 logCost = 7.6583 logGamma = -6.2656 Degree = 4.0000 Value = -0.6678
## elapsed = 0.07 Round = 40 logCost = 3.8680 logGamma = -2.2080 Degree = 2.0000 Value = -0.1102
## elapsed = 0.07 Round = 41 logCost = 9.5338 logGamma = -1.9580 Degree = 4.0000 Value = -0.0932
## elapsed = 0.10 Round = 42 logCost = 17.6858 logGamma = -1.9475 Degree = 5.0000 Value = -0.0356
## elapsed = 0.12 Round = 43 logCost = 16.1313 logGamma = -7.7448 Degree = 3.0000 Value = -0.5034
## elapsed = 0.12 Round = 44 logCost = 0.8071 logGamma = -7.7905 Degree = 4.0000 Value = -0.6678
## elapsed = 0.13 Round = 45 logCost = 11.4682 logGamma = -4.7437 Degree = 5.0000 Value = -0.6593
## elapsed = 0.19 Round = 46 logCost = 14.4283 logGamma = -0.8029 Degree = 5.0000 Value = -0.0322
## elapsed = 0.12 Round = 47 logCost = 1.0083 logGamma = -5.9347 Degree = 2.0000 Value = -0.6678
## elapsed = 0.08 Round = 48 logCost = 10.7092 logGamma = -5.9287 Degree = 2.0000 Value = -0.1373
## elapsed = 0.07 Round = 49 logCost = 9.8284 logGamma = -3.3159 Degree = 2.0000 Value = -0.0746
## elapsed = 0.14 Round = 50 logCost = -1.8423 logGamma = -4.7731 Degree = 3.0000 Value = -0.6678
## elapsed = 0.06 Round = 51 logCost = 11.7216 logGamma = -7.0827 Degree = 1.0000 Value = -0.0237
## elapsed = 0.06 Round = 52 logCost = 9.8926 logGamma = -4.7655 Degree = 1.0000 Value = -0.0153
## elapsed = 0.12 Round = 53 logCost = 11.9598 logGamma = -9.0000 Degree = 2.0000 Value = -0.5576
## elapsed = 0.19 Round = 54 logCost = 20.0000 logGamma = -7.7977 Degree = 1.0000 Value = -0.0203
## elapsed = 0.30 Round = 55 logCost = 20.0000 logGamma = -6.0442 Degree = 2.0000 Value = -0.0780
## elapsed = 23.66 Round = 56 logCost = 16.7543 logGamma = -0.7500 Degree = 4.0000 Value = -0.1051
## elapsed = 11.99 Round = 57 logCost = 14.3533 logGamma = -0.7500 Degree = 2.0000 Value = -0.0712
## elapsed = 0.07 Round = 58 logCost = 16.3753 logGamma = -6.5310 Degree = 1.0000 Value = -0.0203
## elapsed = 7.03 Round = 59 logCost = 19.9506 logGamma = -0.7500 Degree = 1.0000 Value = -0.0203
## elapsed = 68.00 Round = 60 logCost = 20.0000 logGamma = -0.7500 Degree = 2.0000 Value = -0.1220
## elapsed = 5.51 Round = 61 logCost = 20.0000 logGamma = -2.9799 Degree = 1.0000 Value = -0.0424
## elapsed = 0.48 Round = 62 logCost = 16.0386 logGamma = -1.6832 Degree = 1.0000 Value = -0.0186
## elapsed = 8.04 Round = 63 logCost = 11.8412 logGamma = -0.7500 Degree = 4.0000 Value = -0.0746
## elapsed = 0.06 Round = 64 logCost = 3.2181 logGamma = -1.6990 Degree = 1.0000 Value = -0.0441
## elapsed = 0.07 Round = 65 logCost = 8.6984 logGamma = -0.7500 Degree = 1.0000 Value = -0.0186
## elapsed = 1.09 Round = 66 logCost = 20.0000 logGamma = -0.7500 Degree = 5.0000 Value = -0.0271
## elapsed = 0.06 Round = 67 logCost = 5.9144 logGamma = -3.3240 Degree = 1.0000 Value = -0.0288
## elapsed = 0.10 Round = 68 logCost = 20.0000 logGamma = -9.0000 Degree = 1.0000 Value = -0.0203
## elapsed = 0.07 Round = 69 logCost = 2.4833 logGamma = -0.7500 Degree = 5.0000 Value = -0.1220
## elapsed = 0.10 Round = 70 logCost = -5.0000 logGamma = -0.7500 Degree = 5.0000 Value = -0.4661
##
## Best Parameters Found:
## Round = 4 logCost = 14.4021 logGamma = -2.3362 Degree = 3.0000 Value = -0.0153
OPT_Res$Best_Par
## logCost logGamma Degree
## 14.402135 -2.336219 3.000000
as.numeric(exp(OPT_Res$Best_Par["logCost"]))
## [1] 1797909
as.numeric(exp(OPT_Res$Best_Par["logGamma"]))
## [1] 0.09669255
CV.error<-NULL
for (i in 1:5) {
valid.data <- subset(train.set, fold == i)
train.data <- subset(train.set, fold != i)
svmfit<-svm(Group~PC1+PC2, data = train.data, kernel="polynomial",
cost=exp(OPT_Res$Best_Par["logCost"]),
gamma=exp(OPT_Res$Best_Par["logGamma"]),
degree=OPT_Res$Best_Par["Degree"])
svm.y<-valid.data$Group
svm.predy<-predict(svmfit, valid.data)
ith.test.error<- mean(svm.y!=svm.predy)
CV.error<-c(CV.error,(nrow(valid.data)/nrow(train.set))*ith.test.error)
}
sum(CV.error)
## [1] 0.01525424
svm_fit_bayes<-function(logCost, logGamma){
CV.error<-NULL
for (i in 1:5) {
valid.data <- subset(train.set, fold == i)
train.data <- subset(train.set, fold != i)
svmfit<-svm(Group~PC1+PC2, data = train.data, kernel="radial",
cost=exp(logCost), gamma=exp(logGamma))
svm.y<-valid.data$Group
svm.predy<-predict(svmfit, valid.data)
ith.test.error<- mean(svm.y!=svm.predy)
CV.error<-c(CV.error,(nrow(valid.data)/nrow(train.set))*ith.test.error)
}
list(Score=-sum(CV.error), pred=0)
}
set.seed(234)
OPT_Res<- BayesianOptimization(svm_fit_bayes, bounds= list(logCost = c(-5, 20),
logGamma = c(-9, -0.75)),
init_grid_dt = NULL, init_points = 50,
n_iter = 20, acq = "ucb", kappa =2.576,
eps=0, verbose = TRUE)
## elapsed = 0.06 Round = 1 logCost = 13.6405 logGamma = -3.7612 Value = -0.0186
## elapsed = 0.07 Round = 2 logCost = 14.5428 logGamma = -5.8652 Value = -0.0203
## elapsed = 0.15 Round = 3 logCost = -4.4991 logGamma = -7.7302 Value = -0.6678
## elapsed = 0.09 Round = 4 logCost = 14.4021 logGamma = -2.3362 Value = -0.0203
## elapsed = 0.17 Round = 5 logCost = -3.3272 logGamma = -8.3482 Value = -0.6678
## elapsed = 0.07 Round = 6 logCost = 11.1199 logGamma = -7.8096 Value = -0.0254
## elapsed = 0.07 Round = 7 logCost = 18.2346 logGamma = -8.2880 Value = -0.0220
## elapsed = 0.06 Round = 8 logCost = 12.9411 logGamma = -5.1917 Value = -0.0186
## elapsed = 0.49 Round = 9 logCost = 18.1934 logGamma = -2.3282 Value = -0.0237
## elapsed = 0.09 Round = 10 logCost = 2.1058 logGamma = -3.3696 Value = -0.0644
## elapsed = 0.06 Round = 11 logCost = 8.8931 logGamma = -5.9625 Value = -0.0254
## elapsed = 0.06 Round = 12 logCost = 8.6925 logGamma = -4.9629 Value = -0.0237
## elapsed = 0.06 Round = 13 logCost = 9.5712 logGamma = -6.8974 Value = -0.0288
## elapsed = 0.06 Round = 14 logCost = 9.5747 logGamma = -1.8662 Value = -0.0186
## elapsed = 0.15 Round = 15 logCost = -4.9700 logGamma = -5.2061 Value = -0.6678
## elapsed = 0.08 Round = 16 logCost = 6.0279 logGamma = -5.7480 Value = -0.0475
## elapsed = 0.09 Round = 17 logCost = 2.8288 logGamma = -2.7361 Value = -0.0525
## elapsed = 0.05 Round = 18 logCost = 13.5004 logGamma = -4.8409 Value = -0.0186
## elapsed = 0.15 Round = 19 logCost = -1.5418 logGamma = -3.4781 Value = -0.4729
## elapsed = 0.12 Round = 20 logCost = 16.7944 logGamma = -4.0321 Value = -0.0203
## elapsed = 0.06 Round = 21 logCost = 8.0767 logGamma = -1.3042 Value = -0.0186
## elapsed = 0.07 Round = 22 logCost = 9.4776 logGamma = -6.1408 Value = -0.0254
## elapsed = 0.11 Round = 23 logCost = 16.6300 logGamma = -4.1688 Value = -0.0169
## elapsed = 0.05 Round = 24 logCost = 10.4356 logGamma = -6.4218 Value = -0.0237
## elapsed = 0.09 Round = 25 logCost = 7.2445 logGamma = -8.4438 Value = -0.0593
## elapsed = 0.09 Round = 26 logCost = 4.3700 logGamma = -5.8644 Value = -0.0746
## elapsed = 0.06 Round = 27 logCost = 12.4167 logGamma = -4.4647 Value = -0.0203
## elapsed = 0.16 Round = 28 logCost = -0.2072 logGamma = -5.7881 Value = -0.5593
## elapsed = 0.08 Round = 29 logCost = 15.9732 logGamma = -7.7657 Value = -0.0220
## elapsed = 0.06 Round = 30 logCost = 17.0627 logGamma = -7.9927 Value = -0.0153
## elapsed = 0.05 Round = 31 logCost = 10.4807 logGamma = -4.1554 Value = -0.0186
## elapsed = 0.11 Round = 32 logCost = 1.3078 logGamma = -4.5781 Value = -0.1898
## elapsed = 0.14 Round = 33 logCost = -0.5958 logGamma = -6.2720 Value = -0.6678
## elapsed = 0.07 Round = 34 logCost = 12.6207 logGamma = -2.0301 Value = -0.0186
## elapsed = 0.07 Round = 35 logCost = 8.3371 logGamma = -1.3244 Value = -0.0186
## elapsed = 0.06 Round = 36 logCost = 12.2033 logGamma = -3.6795 Value = -0.0186
## elapsed = 0.06 Round = 37 logCost = 12.5207 logGamma = -6.6158 Value = -0.0186
## elapsed = 0.10 Round = 38 logCost = -1.1632 logGamma = -1.1124 Value = -0.0949
## elapsed = 0.06 Round = 39 logCost = 7.6583 logGamma = -6.2656 Value = -0.0390
## elapsed = 0.07 Round = 40 logCost = 3.8680 logGamma = -2.2080 Value = -0.0390
## elapsed = 0.06 Round = 41 logCost = 9.5338 logGamma = -1.9580 Value = -0.0186
## elapsed = 0.39 Round = 42 logCost = 17.6858 logGamma = -1.9475 Value = -0.0271
## elapsed = 0.06 Round = 43 logCost = 16.1313 logGamma = -7.7448 Value = -0.0203
## elapsed = 0.14 Round = 44 logCost = 0.8071 logGamma = -7.7905 Value = -0.6678
## elapsed = 0.05 Round = 45 logCost = 11.4682 logGamma = -4.7437 Value = -0.0186
## elapsed = 0.39 Round = 46 logCost = 14.4283 logGamma = -0.8029 Value = -0.0271
## elapsed = 0.14 Round = 47 logCost = 1.0083 logGamma = -5.9347 Value = -0.4542
## elapsed = 0.05 Round = 48 logCost = 10.7092 logGamma = -5.9287 Value = -0.0186
## elapsed = 0.06 Round = 49 logCost = 9.8284 logGamma = -3.3159 Value = -0.0203
## elapsed = 0.15 Round = 50 logCost = -1.8423 logGamma = -4.7731 Value = -0.6678
## elapsed = 0.16 Round = 51 logCost = 20.0000 logGamma = -5.5360 Value = -0.0220
## elapsed = 0.15 Round = 52 logCost = -5.0000 logGamma = -0.7500 Value = -0.6678
## elapsed = 0.07 Round = 53 logCost = 1.0188 logGamma = -0.7500 Value = -0.0492
## elapsed = 1.04 Round = 54 logCost = 20.0000 logGamma = -0.7500 Value = -0.0271
## elapsed = 0.99 Round = 55 logCost = 20.0000 logGamma = -3.1638 Value = -0.0288
## elapsed = 0.07 Round = 56 logCost = 4.4943 logGamma = -3.9107 Value = -0.0458
## elapsed = 0.07 Round = 57 logCost = 9.1076 logGamma = -9.0000 Value = -0.0475
## elapsed = 0.06 Round = 58 logCost = 4.7001 logGamma = -0.7500 Value = -0.0254
## elapsed = 0.10 Round = 59 logCost = 18.2389 logGamma = -5.8728 Value = -0.0237
## elapsed = 0.07 Round = 60 logCost = 20.0000 logGamma = -9.0000 Value = -0.0220
## elapsed = 0.10 Round = 61 logCost = 20.0000 logGamma = -7.4594 Value = -0.0186
## elapsed = 0.05 Round = 62 logCost = 13.5600 logGamma = -9.0000 Value = -0.0186
## elapsed = 1.62 Round = 63 logCost = 18.2429 logGamma = -0.7500 Value = -0.0271
## elapsed = 0.06 Round = 64 logCost = 16.5019 logGamma = -9.0000 Value = -0.0153
## elapsed = 0.53 Round = 65 logCost = 16.0990 logGamma = -0.7500 Value = -0.0271
## elapsed = 0.06 Round = 66 logCost = 6.3791 logGamma = -0.7500 Value = -0.0186
## elapsed = 0.78 Round = 67 logCost = 20.0000 logGamma = -1.7383 Value = -0.0220
## elapsed = 0.10 Round = 68 logCost = 0.5536 logGamma = -1.6880 Value = -0.0644
## elapsed = 0.09 Round = 69 logCost = -0.2543 logGamma = -0.7500 Value = -0.0695
## elapsed = 0.12 Round = 70 logCost = 4.4249 logGamma = -9.0000 Value = -0.4169
##
## Best Parameters Found:
## Round = 30 logCost = 17.0627 logGamma = -7.9927 Value = -0.0153
OPT_Res$Best_Par
## logCost logGamma
## 17.062727 -7.992727
as.numeric(exp(OPT_Res$Best_Par["logCost"]))
## [1] 25718660
as.numeric(exp(OPT_Res$Best_Par["logGamma"]))
## [1] 0.0003379114
CV.error<-NULL
for (i in 1:5) {
valid.data <- subset(train.set, fold == i)
train.data <- subset(train.set, fold != i)
svmfit<-svm(Group~PC1+PC2, data = train.data, kernel="radial",
cost=exp(OPT_Res$Best_Par["logCost"]),
gamma=exp(OPT_Res$Best_Par["logGamma"]))
svm.y<-valid.data$Group
svm.predy<-predict(svmfit, valid.data)
ith.test.error<- mean(svm.y!=svm.predy)
CV.error<-c(CV.error,(nrow(valid.data)/nrow(train.set))*ith.test.error)
}
sum(CV.error)
## [1] 0.01525424
logCost<-c(13.6405, 14.5428, -4.4991, 14.4021, -3.3272, 11.1199, 18.2346, 12.9411, 18.1934, 2.1058, 8.8931, 8.6925, 9.5712, 9.5747, -4.9700, 6.0279, 2.8288, 13.5004, -1.5418, 16.7944, 8.0767, 9.4776, 16.6300, 10.4356, 7.2445, 4.3700, 12.4167, -0.2072, 15.9732, 17.0627, 10.4807, 1.3078, -0.5958, 12.6207, 8.3371, 12.2033, 12.5207, -1.1632, 7.6583, 3.8680, 9.5338, 17.6858, 16.1313, 0.8071, 11.4682, 14.4283, 1.0083, 10.7092, 9.8284, -1.8423, 20.0000, -5.0000, 1.0188, 20.0000, 20.0000, 4.4943, 9.1076, 4.7001, 18.2389, 20.0000, 20.0000, 13.5600, 18.2429, 16.5019, 16.0990, 6.3791, 20.0000, 0.5536, -0.2543, 4.4249)
logGamma<-c(-3.7612, -5.8652, -7.7302, -2.3362, -8.3482, -7.8096, -8.2880, -5.1917, -2.3282, -3.3696, -5.9625, -4.9629, -6.8974, -1.8662, -5.2061, -5.7480, -2.7361, -4.8409, -3.4781, -4.0321, -1.3042, -6.1408, -4.1688, -6.4218, -8.4438, -5.8644, -4.4647, -5.7881, -7.7657, -7.9927, -4.1554, -4.5781, -6.2720, -2.0301, -1.3244, -3.6795, -6.6158, -1.1124, -6.2656, -2.2080, -1.9580, -1.9475, -7.7448, -7.7905, -4.7437, -0.8029, -5.9347, -5.9287, -3.3159, -4.7731, -5.5360, -0.7500, -0.7500, -0.7500, -3.1638, -3.9107, -9.0000, -0.7500, -5.8728, -9.0000, -7.4594, -9.0000, -0.7500, -9.0000, -0.7500, -0.7500, -1.7383, -1.6880, -0.7500, -9.0000)
Values<-c()
p <- ggplot() + geom_curve(aes(x = logGamma[51:69], y = logCost[51:69],
xend = logGamma[52:70], yend = logCost[52:70]),
arrow = arrow(length = unit(0.03, "npc")), curvature = 0.15)
p + geom_point(aes(x=logGamma[1:50], y=logCost[1:50])) +
geom_point(aes(x=logGamma[51:70], y=logCost[51:70]), colour = "red") +
labs(x = "Log Gamma", y = "Log Cost", title = " B.O Iterations")