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(41)
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
set.seed(41)
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 Grid Search, Random Search or Bayesian Optimization.
The upper confidence bound was used as the acquisition function.
The log of cost and gamma were used for reasons of scale.
#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(41)
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 = 0.05 Round = 1 logCost = 0.3373 Value = -0.0237
## elapsed = 8.20 Round = 2 logCost = 19.2807 Value = -0.0271
## elapsed = 2.16 Round = 3 logCost = 9.4547 Value = -0.0271
## elapsed = 0.04 Round = 4 logCost = -1.4480 Value = -0.0237
## elapsed = 52.89 Round = 5 logCost = 16.0439 Value = -0.0288
## elapsed = 8.68 Round = 6 logCost = 19.0508 Value = -0.0271
## elapsed = 7.64 Round = 7 logCost = 17.5318 Value = -0.0288
## elapsed = 1.50 Round = 8 logCost = 8.0481 Value = -0.0271
## elapsed = 7.31 Round = 9 logCost = 15.4367 Value = -0.0288
## elapsed = 5.08 Round = 10 logCost = 11.7073 Value = -0.0305
## elapsed = 4.76 Round = 11 logCost = 12.2307 Value = -0.0305
## elapsed = 5.54 Round = 12 logCost = 13.3478 Value = -0.0288
## elapsed = 5.35 Round = 13 logCost = 13.1377 Value = -0.0288
## elapsed = 0.08 Round = 14 logCost = 2.2712 Value = -0.0288
## elapsed = 0.04 Round = 15 logCost = -3.5725 Value = -0.0237
## elapsed = 6.67 Round = 16 logCost = 14.9389 Value = -0.0288
## elapsed = 6.96 Round = 17 logCost = 16.0374 Value = -0.0288
## elapsed = 0.05 Round = 18 logCost = -2.7718 Value = -0.0220
## elapsed = 8.18 Round = 19 logCost = 19.6416 Value = -0.0288
## elapsed = 0.04 Round = 20 logCost = -2.3553 Value = -0.0203
## elapsed = 0.05 Round = 21 logCost = -2.1683 Value = -0.0203
## elapsed = 6.46 Round = 22 logCost = 15.6712 Value = -0.0288
## elapsed = 0.07 Round = 23 logCost = 1.9624 Value = -0.0288
## elapsed = 5.00 Round = 24 logCost = 12.8285 Value = -0.0305
## elapsed = 7.14 Round = 25 logCost = 16.3636 Value = -0.0288
## elapsed = 1.70 Round = 26 logCost = 7.5369 Value = -0.0288
## elapsed = 0.21 Round = 27 logCost = 4.3945 Value = -0.0288
## elapsed = 0.05 Round = 28 logCost = 1.4274 Value = -0.0271
## elapsed = 0.75 Round = 29 logCost = 6.9563 Value = -0.0288
## elapsed = 0.58 Round = 30 logCost = 6.7300 Value = -0.0288
## elapsed = 3.86 Round = 31 logCost = 10.7302 Value = -0.0305
## elapsed = 2.57 Round = 32 logCost = 9.2050 Value = -0.0288
## elapsed = 5.60 Round = 33 logCost = 13.6591 Value = -0.0288
## elapsed = 8.68 Round = 34 logCost = 19.5733 Value = -0.0288
## elapsed = 6.69 Round = 35 logCost = 15.2529 Value = -0.0288
## elapsed = 6.61 Round = 36 logCost = 14.7889 Value = -0.0288
## elapsed = 2.56 Round = 37 logCost = 9.5096 Value = -0.0271
## elapsed = 0.05 Round = 38 logCost = -0.3604 Value = -0.0237
## elapsed = 7.69 Round = 39 logCost = 19.7132 Value = -0.0288
## elapsed = 1751.03 Round = 40 logCost = 18.2380 Value = -0.0288
## elapsed = 0.05 Round = 41 logCost = -0.3938 Value = -0.0237
## elapsed = 10.78 Round = 42 logCost = 18.0284 Value = -0.0322
## elapsed = 9.07 Round = 43 logCost = 19.5951 Value = -0.0288
## elapsed = 1.53 Round = 44 logCost = 8.1563 Value = -0.0271
## elapsed = 0.04 Round = 45 logCost = -1.9546 Value = -0.0203
## elapsed = 0.69 Round = 46 logCost = 6.7782 Value = -0.0288
## elapsed = 0.87 Round = 47 logCost = 7.0301 Value = -0.0288
## elapsed = 6.95 Round = 48 logCost = 15.9020 Value = -0.0288
## elapsed = 5.17 Round = 49 logCost = 11.5312 Value = -0.0305
## elapsed = 5.49 Round = 50 logCost = 13.1444 Value = -0.0288
## elapsed = 0.05 Round = 51 logCost = -4.3602 Value = -0.0305
## elapsed = 0.05 Round = 52 logCost = -2.2967 Value = -0.0203
## elapsed = 0.04 Round = 53 logCost = -3.1973 Value = -0.0220
## elapsed = 0.05 Round = 54 logCost = -2.2340 Value = -0.0203
## elapsed = 0.05 Round = 55 logCost = -2.2777 Value = -0.0203
## elapsed = 0.05 Round = 56 logCost = -1.7345 Value = -0.0237
## elapsed = 0.07 Round = 57 logCost = -2.2654 Value = -0.0203
## elapsed = 0.05 Round = 58 logCost = -1.5961 Value = -0.0237
## elapsed = 0.04 Round = 59 logCost = -2.4288 Value = -0.0203
## elapsed = 0.04 Round = 60 logCost = -2.3218 Value = -0.0203
## elapsed = 0.05 Round = 61 logCost = -2.2698 Value = -0.0203
## elapsed = 0.05 Round = 62 logCost = -3.0443 Value = -0.0237
## elapsed = 0.04 Round = 63 logCost = -2.1376 Value = -0.0203
## elapsed = 0.04 Round = 64 logCost = -2.5156 Value = -0.0203
## elapsed = 0.04 Round = 65 logCost = -2.3780 Value = -0.0203
## elapsed = 0.05 Round = 66 logCost = -2.2436 Value = -0.0203
## elapsed = 0.05 Round = 67 logCost = -2.1059 Value = -0.0203
## elapsed = 0.05 Round = 68 logCost = -2.5488 Value = -0.0203
## elapsed = 0.05 Round = 69 logCost = -2.3428 Value = -0.0203
## elapsed = 0.04 Round = 70 logCost = -2.3109 Value = -0.0203
##
## Best Parameters Found:
## Round = 20 logCost = -2.3553 Value = -0.0203
OPT_Res$Best_Par
## logCost
## -2.355268
as.numeric(exp(OPT_Res$Best_Par["logCost"]))
## [1] 0.09486805
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=0.03589176, 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.02372881
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(41)
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 = 0.3373 logGamma = -1.1023 Degree = 3.0000 Value = -0.1610
## elapsed = 0.05 Round = 2 logCost = 19.2807 logGamma = -3.3870 Degree = 5.0000 Value = -0.0542
## elapsed = 0.11 Round = 3 logCost = 9.4547 logGamma = -7.2146 Degree = 3.0000 Value = -0.6678
## elapsed = 0.11 Round = 4 logCost = -1.4480 logGamma = -2.1090 Degree = 2.0000 Value = -0.5186
## elapsed = 0.11 Round = 5 logCost = 16.0439 logGamma = -8.2069 Degree = 3.0000 Value = -0.6661
## elapsed = 0.07 Round = 6 logCost = 19.0508 logGamma = -7.6481 Degree = 2.0000 Value = -0.0847
## elapsed = 0.06 Round = 7 logCost = 17.5318 logGamma = -6.3136 Degree = 3.0000 Value = -0.1000
## elapsed = 0.10 Round = 8 logCost = 8.0481 logGamma = -7.6278 Degree = 3.0000 Value = -0.6678
## elapsed = 0.11 Round = 9 logCost = 15.4367 logGamma = -8.6862 Degree = 5.0000 Value = -0.6678
## elapsed = 0.07 Round = 10 logCost = 11.7073 logGamma = -6.2735 Degree = 2.0000 Value = -0.1373
## elapsed = 0.05 Round = 11 logCost = 12.2307 logGamma = -5.0400 Degree = 1.0000 Value = -0.0271
## elapsed = 0.05 Round = 12 logCost = 13.3478 logGamma = -1.7827 Degree = 3.0000 Value = -0.0373
## elapsed = 0.05 Round = 13 logCost = 13.1377 logGamma = -7.7645 Degree = 1.0000 Value = -0.0237
## elapsed = 0.10 Round = 14 logCost = 2.2712 logGamma = -6.2505 Degree = 3.0000 Value = -0.6678
## elapsed = 0.11 Round = 15 logCost = -3.5725 logGamma = -2.9520 Degree = 5.0000 Value = -0.6678
## elapsed = 0.05 Round = 16 logCost = 14.9389 logGamma = -3.3755 Degree = 3.0000 Value = -0.0407
## elapsed = 0.05 Round = 17 logCost = 16.0374 logGamma = -4.4575 Degree = 3.0000 Value = -0.0475
## elapsed = 0.10 Round = 18 logCost = -2.7718 logGamma = -5.4850 Degree = 3.0000 Value = -0.6678
## elapsed = 0.10 Round = 19 logCost = 19.6416 logGamma = -8.6630 Degree = 3.0000 Value = -0.4542
## elapsed = 0.10 Round = 20 logCost = -2.3553 logGamma = -7.1308 Degree = 3.0000 Value = -0.6678
## elapsed = 0.11 Round = 21 logCost = -2.1683 logGamma = -6.6632 Degree = 4.0000 Value = -0.6678
## elapsed = 0.11 Round = 22 logCost = 15.6712 logGamma = -8.7388 Degree = 4.0000 Value = -0.6678
## elapsed = 0.10 Round = 23 logCost = 1.9624 logGamma = -2.2424 Degree = 4.0000 Value = -0.4407
## elapsed = 0.11 Round = 24 logCost = 12.8285 logGamma = -6.7961 Degree = 4.0000 Value = -0.6678
## elapsed = 0.12 Round = 25 logCost = 16.3636 logGamma = -1.6454 Degree = 5.0000 Value = -0.0407
## elapsed = 0.07 Round = 26 logCost = 7.5369 logGamma = -1.9613 Degree = 2.0000 Value = -0.0847
## elapsed = 0.11 Round = 27 logCost = 4.3945 logGamma = -2.8474 Degree = 4.0000 Value = -0.4407
## elapsed = 0.11 Round = 28 logCost = 1.4274 logGamma = -7.9855 Degree = 2.0000 Value = -0.6678
## elapsed = 0.10 Round = 29 logCost = 6.9563 logGamma = -7.3945 Degree = 2.0000 Value = -0.6678
## elapsed = 0.11 Round = 30 logCost = 6.7300 logGamma = -8.2793 Degree = 3.0000 Value = -0.6678
## elapsed = 0.11 Round = 31 logCost = 10.7302 logGamma = -6.5497 Degree = 5.0000 Value = -0.6678
## elapsed = 0.07 Round = 32 logCost = 9.2050 logGamma = -2.8522 Degree = 2.0000 Value = -0.0847
## elapsed = 0.08 Round = 33 logCost = 13.6591 logGamma = -3.8370 Degree = 4.0000 Value = -0.1763
## elapsed = 0.11 Round = 34 logCost = 19.5733 logGamma = -8.2600 Degree = 5.0000 Value = -0.6678
## elapsed = 0.10 Round = 35 logCost = 15.2529 logGamma = -4.8898 Degree = 5.0000 Value = -0.4729
## elapsed = 0.11 Round = 36 logCost = 14.7889 logGamma = -7.9618 Degree = 4.0000 Value = -0.6678
## elapsed = 0.06 Round = 37 logCost = 9.5096 logGamma = -1.2037 Degree = 5.0000 Value = -0.0525
## elapsed = 0.10 Round = 38 logCost = -0.3604 logGamma = -6.4467 Degree = 1.0000 Value = -0.6678
## elapsed = 52.50 Round = 39 logCost = 19.7132 logGamma = -1.5105 Degree = 2.0000 Value = -0.1153
## elapsed = 0.10 Round = 40 logCost = 18.2380 logGamma = -7.4265 Degree = 3.0000 Value = -0.2322
## elapsed = 0.12 Round = 41 logCost = -0.3938 logGamma = -5.2663 Degree = 1.0000 Value = -0.5746
## elapsed = 0.08 Round = 42 logCost = 18.0284 logGamma = -2.5912 Degree = 5.0000 Value = -0.0492
## elapsed = 7.39 Round = 43 logCost = 19.5951 logGamma = -4.6069 Degree = 2.0000 Value = -0.0780
## elapsed = 0.08 Round = 44 logCost = 8.1563 logGamma = -8.3780 Degree = 1.0000 Value = -0.0627
## elapsed = 0.12 Round = 45 logCost = -1.9546 logGamma = -4.9403 Degree = 2.0000 Value = -0.6678
## elapsed = 0.12 Round = 46 logCost = 6.7782 logGamma = -6.9840 Degree = 4.0000 Value = -0.6678
## elapsed = 0.13 Round = 47 logCost = 7.0301 logGamma = -7.3119 Degree = 4.0000 Value = -0.6678
## elapsed = 0.17 Round = 48 logCost = 15.9020 logGamma = -1.1983 Degree = 5.0000 Value = -0.0373
## elapsed = 0.06 Round = 49 logCost = 11.5312 logGamma = -2.7419 Degree = 3.0000 Value = -0.0424
## elapsed = 0.09 Round = 50 logCost = 13.1444 logGamma = -4.0222 Degree = 4.0000 Value = -0.2153
## elapsed = 0.26 Round = 51 logCost = 20.0000 logGamma = -4.1023 Degree = 4.0000 Value = -0.0949
## elapsed = 9.28 Round = 52 logCost = 11.2560 logGamma = -0.7500 Degree = 4.0000 Value = -0.0864
## elapsed = 10.98 Round = 53 logCost = 13.3564 logGamma = -0.7500 Degree = 2.0000 Value = -0.0780
## elapsed = 0.05 Round = 54 logCost = 6.3637 logGamma = -0.7500 Degree = 3.0000 Value = -0.0458
## elapsed = 0.10 Round = 55 logCost = 15.1698 logGamma = -5.0592 Degree = 2.0000 Value = -0.0780
## elapsed = 0.07 Round = 56 logCost = 20.0000 logGamma = -4.4268 Degree = 3.0000 Value = -0.0373
## elapsed = 0.05 Round = 57 logCost = 8.8943 logGamma = -0.7500 Degree = 1.0000 Value = -0.0254
## elapsed = 9.85 Round = 58 logCost = 20.0000 logGamma = -0.7500 Degree = 1.0000 Value = -0.0288
## elapsed = 1.27 Round = 59 logCost = 14.8778 logGamma = -0.7500 Degree = 1.0000 Value = -0.0305
## elapsed = 0.78 Round = 60 logCost = 20.0000 logGamma = -6.6780 Degree = 1.0000 Value = -0.0288
## elapsed = 0.06 Round = 61 logCost = 3.8861 logGamma = -0.7500 Degree = 1.0000 Value = -0.0322
## elapsed = 0.30 Round = 62 logCost = 20.0000 logGamma = -9.0000 Degree = 1.0000 Value = -0.0305
## elapsed = 8.46 Round = 63 logCost = 20.0000 logGamma = -0.7500 Degree = 5.0000 Value = -0.0746
## elapsed = 0.06 Round = 64 logCost = 6.8816 logGamma = -3.3407 Degree = 1.0000 Value = -0.0322
## elapsed = 0.11 Round = 65 logCost = -5.0000 logGamma = -0.7500 Degree = 3.0000 Value = -0.5085
## elapsed = 0.06 Round = 66 logCost = 9.9426 logGamma = -6.4965 Degree = 1.0000 Value = -0.0322
## elapsed = 5.07 Round = 67 logCost = 18.2607 logGamma = -2.9550 Degree = 1.0000 Value = -0.0237
## elapsed = 35.53 Round = 68 logCost = 18.4152 logGamma = -0.7500 Degree = 4.0000 Value = -0.1424
## elapsed = 0.06 Round = 69 logCost = 11.0920 logGamma = -9.0000 Degree = 1.0000 Value = -0.0322
## elapsed = 0.06 Round = 70 logCost = 16.3732 logGamma = -9.0000 Degree = 1.0000 Value = -0.0254
##
## Best Parameters Found:
## Round = 13 logCost = 13.1377 logGamma = -7.7645 Degree = 1.0000 Value = -0.0237
OPT_Res$Best_Par
## logCost logGamma Degree
## 13.137721 -7.764544 1.000000
as.numeric(exp(OPT_Res$Best_Par["logCost"]))
## [1] 507738.1
as.numeric(exp(OPT_Res$Best_Par["logGamma"]))
## [1] 0.0004245231
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=1797909,
gamma=0.09669255,
degree=3)
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.03728814
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(41)
OPT_Res<- BayesianOptimization(svm_fit_bayes, bounds= list(logCost = c(-5, 20),
logGamma = c(-9, -0.75)),
init_grid_dt = NULL, init_points = 70,
n_iter = 20, acq = "ucb", kappa =2.576,
eps=0, verbose = TRUE)
## elapsed = 0.14 Round = 1 logCost = 0.3373 logGamma = -6.6632 Value = -0.5729
## elapsed = 0.06 Round = 2 logCost = 19.2807 logGamma = -8.7388 Value = -0.0305
## elapsed = 0.06 Round = 3 logCost = 9.4547 logGamma = -2.2424 Value = -0.0237
## elapsed = 0.15 Round = 4 logCost = -1.4480 logGamma = -6.7961 Value = -0.6678
## elapsed = 1.21 Round = 5 logCost = 16.0439 logGamma = -1.6454 Value = -0.0288
## elapsed = 2.69 Round = 6 logCost = 19.0508 logGamma = -1.9613 Value = -0.0339
## elapsed = 2.73 Round = 7 logCost = 17.5318 logGamma = -2.8474 Value = -0.0288
## elapsed = 0.07 Round = 8 logCost = 8.0481 logGamma = -7.9855 Value = -0.0542
## elapsed = 0.07 Round = 9 logCost = 15.4367 logGamma = -7.3945 Value = -0.0271
## elapsed = 0.06 Round = 10 logCost = 11.7073 logGamma = -8.2793 Value = -0.0373
## elapsed = 0.06 Round = 11 logCost = 12.2307 logGamma = -6.5497 Value = -0.0220
## elapsed = 0.19 Round = 12 logCost = 13.3478 logGamma = -2.8522 Value = -0.0288
## elapsed = 0.09 Round = 13 logCost = 13.1377 logGamma = -3.8370 Value = -0.0271
## elapsed = 0.13 Round = 14 logCost = 2.2712 logGamma = -8.2600 Value = -0.5593
## elapsed = 0.15 Round = 15 logCost = -3.5725 logGamma = -4.8898 Value = -0.6678
## elapsed = 0.06 Round = 16 logCost = 14.9389 logGamma = -7.9618 Value = -0.0237
## elapsed = 1.32 Round = 17 logCost = 16.0374 logGamma = -1.2037 Value = -0.0339
## elapsed = 0.15 Round = 18 logCost = -2.7718 logGamma = -6.4467 Value = -0.6678
## elapsed = 4.71 Round = 19 logCost = 19.6416 logGamma = -1.5105 Value = -0.0407
## elapsed = 0.15 Round = 20 logCost = -2.3553 logGamma = -7.4265 Value = -0.6678
## elapsed = 0.15 Round = 21 logCost = -2.1683 logGamma = -5.2663 Value = -0.6678
## elapsed = 0.72 Round = 22 logCost = 15.6712 logGamma = -2.5912 Value = -0.0305
## elapsed = 0.11 Round = 23 logCost = 1.9624 logGamma = -4.6069 Value = -0.1169
## elapsed = 0.07 Round = 24 logCost = 12.8285 logGamma = -8.3780 Value = -0.0237
## elapsed = 0.18 Round = 25 logCost = 16.3636 logGamma = -4.9403 Value = -0.0288
## elapsed = 0.07 Round = 26 logCost = 7.5369 logGamma = -6.9840 Value = -0.0492
## elapsed = 0.12 Round = 27 logCost = 4.3945 logGamma = -7.3119 Value = -0.1339
## elapsed = 0.08 Round = 28 logCost = 1.4274 logGamma = -1.1983 Value = -0.0610
## elapsed = 0.07 Round = 29 logCost = 6.9563 logGamma = -2.7419 Value = -0.0254
## elapsed = 0.06 Round = 30 logCost = 6.7300 logGamma = -4.0222 Value = -0.0322
## elapsed = 0.07 Round = 31 logCost = 10.7302 logGamma = -5.5162 Value = -0.0237
## elapsed = 0.06 Round = 32 logCost = 9.2050 logGamma = -1.5744 Value = -0.0237
## elapsed = 0.07 Round = 33 logCost = 13.6591 logGamma = -5.3923 Value = -0.0271
## elapsed = 0.09 Round = 34 logCost = 19.5733 logGamma = -7.9497 Value = -0.0271
## elapsed = 0.16 Round = 35 logCost = 15.2529 logGamma = -4.1454 Value = -0.0271
## elapsed = 0.07 Round = 36 logCost = 14.7889 logGamma = -6.0992 Value = -0.0271
## elapsed = 0.06 Round = 37 logCost = 9.5096 logGamma = -3.8867 Value = -0.0288
## elapsed = 0.14 Round = 38 logCost = -0.3604 logGamma = -4.9835 Value = -0.5102
## elapsed = 2.96 Round = 39 logCost = 19.7132 logGamma = -1.4555 Value = -0.0339
## elapsed = 0.15 Round = 40 logCost = 18.2380 logGamma = -6.2212 Value = -0.0305
## elapsed = 0.16 Round = 41 logCost = -0.3938 logGamma = -8.3195 Value = -0.6678
## elapsed = 0.19 Round = 42 logCost = 18.0284 logGamma = -5.4584 Value = -0.0322
## elapsed = 0.07 Round = 43 logCost = 19.5951 logGamma = -8.5871 Value = -0.0322
## elapsed = 0.07 Round = 44 logCost = 8.1563 logGamma = -4.9127 Value = -0.0339
## elapsed = 0.12 Round = 45 logCost = -1.9546 logGamma = -1.3845 Value = -0.2322
## elapsed = 0.06 Round = 46 logCost = 6.7782 logGamma = -4.2554 Value = -0.0339
## elapsed = 0.07 Round = 47 logCost = 7.0301 logGamma = -4.5575 Value = -0.0322
## elapsed = 0.22 Round = 48 logCost = 15.9020 logGamma = -3.8623 Value = -0.0271
## elapsed = 0.06 Round = 49 logCost = 11.5312 logGamma = -3.8637 Value = -0.0271
## elapsed = 0.08 Round = 50 logCost = 13.1444 logGamma = -4.2720 Value = -0.0305
## elapsed = 1.71 Round = 51 logCost = 18.9323 logGamma = -2.3087 Value = -0.0288
## elapsed = 0.07 Round = 52 logCost = 12.0091 logGamma = -2.6868 Value = -0.0254
## elapsed = 0.11 Round = 53 logCost = 0.4104 logGamma = -2.2709 Value = -0.0847
## elapsed = 0.90 Round = 54 logCost = 15.8819 logGamma = -2.1466 Value = -0.0288
## elapsed = 0.13 Round = 55 logCost = -2.5968 logGamma = -1.2979 Value = -0.3203
## elapsed = 0.14 Round = 56 logCost = -0.9033 logGamma = -7.4120 Value = -0.6678
## elapsed = 0.08 Round = 57 logCost = 3.1405 logGamma = -3.2806 Value = -0.0627
## elapsed = 0.14 Round = 58 logCost = -0.8420 logGamma = -7.5265 Value = -0.6678
## elapsed = 0.15 Round = 59 logCost = -4.0492 logGamma = -5.9758 Value = -0.6678
## elapsed = 0.09 Round = 60 logCost = 3.2623 logGamma = -5.1614 Value = -0.0847
## elapsed = 0.06 Round = 61 logCost = 7.0000 logGamma = -1.4500 Value = -0.0237
## elapsed = 0.10 Round = 62 logCost = 16.8706 logGamma = -6.0600 Value = -0.0271
## elapsed = 0.12 Round = 63 logCost = -1.2562 logGamma = -2.4532 Value = -0.2983
## elapsed = 0.08 Round = 64 logCost = 3.3317 logGamma = -1.7390 Value = -0.0339
## elapsed = 0.15 Round = 65 logCost = 13.3274 logGamma = -1.3850 Value = -0.0305
## elapsed = 0.14 Round = 66 logCost = 12.0439 logGamma = -1.8210 Value = -0.0271
## elapsed = 0.08 Round = 67 logCost = 8.7652 logGamma = -0.8659 Value = -0.0305
## elapsed = 0.13 Round = 68 logCost = 5.6515 logGamma = -8.9107 Value = -0.1797
## elapsed = 0.16 Round = 69 logCost = -3.9787 logGamma = -7.4721 Value = -0.6678
## elapsed = 0.11 Round = 70 logCost = 0.6642 logGamma = -4.0491 Value = -0.2220
## elapsed = 0.08 Round = 71 logCost = 4.8893 logGamma = -0.7500 Value = -0.0305
## elapsed = 0.10 Round = 72 logCost = -0.4501 logGamma = -0.7500 Value = -0.0746
## elapsed = 0.05 Round = 73 logCost = 16.5700 logGamma = -9.0000 Value = -0.0288
## elapsed = 0.06 Round = 74 logCost = 4.6929 logGamma = -3.8217 Value = -0.0542
## elapsed = 3.22 Round = 75 logCost = 18.0524 logGamma = -0.7500 Value = -0.0373
## elapsed = 0.06 Round = 76 logCost = 9.7585 logGamma = -9.0000 Value = -0.0542
## elapsed = 4.04 Round = 77 logCost = 20.0000 logGamma = -0.7500 Value = -0.0492
## elapsed = 1.20 Round = 78 logCost = 20.0000 logGamma = -4.3159 Value = -0.0339
## elapsed = 0.15 Round = 79 logCost = -5.0000 logGamma = -0.7500 Value = -0.6678
## elapsed = 0.07 Round = 80 logCost = 10.1615 logGamma = -0.7500 Value = -0.0339
## elapsed = 0.06 Round = 81 logCost = 13.8417 logGamma = -9.0000 Value = -0.0220
## elapsed = 1.69 Round = 82 logCost = 20.0000 logGamma = -2.3876 Value = -0.0339
## elapsed = 0.16 Round = 83 logCost = 20.0000 logGamma = -6.0829 Value = -0.0339
## elapsed = 0.06 Round = 84 logCost = 9.5956 logGamma = -7.2894 Value = -0.0322
## elapsed = 0.06 Round = 85 logCost = 5.4140 logGamma = -2.0967 Value = -0.0322
## elapsed = 0.07 Round = 86 logCost = 17.5721 logGamma = -8.1886 Value = -0.0237
## elapsed = 0.06 Round = 87 logCost = 3.1556 logGamma = -0.7500 Value = -0.0339
## elapsed = 0.20 Round = 88 logCost = 19.2063 logGamma = -5.1813 Value = -0.0356
## elapsed = 0.09 Round = 89 logCost = 5.7022 logGamma = -6.7214 Value = -0.0661
## elapsed = 0.06 Round = 90 logCost = 8.3094 logGamma = -3.0880 Value = -0.0254
##
## Best Parameters Found:
## Round = 11 logCost = 12.2307 logGamma = -6.5497 Value = -0.0220
OPT_Res$Best_Par
## logCost logGamma
## 12.230737 -6.549724
as.numeric(exp(OPT_Res$Best_Par["logCost"]))
## [1] 204994.2
as.numeric(exp(OPT_Res$Best_Par["logGamma"]))
## [1] 0.001430511
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=258660,
gamma=0.0003379114)
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.02542373