1 Reading in the Data

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)

2 For PC1 + PC2

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(42)

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(42)

folds <- createFolds(y=factor(train.set$Group), k = 5, list = FALSE)
train.set$fold <- folds

3 Bayesian Optimization

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.

3.1 SVM Linear Kernel

#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(42)

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 = 9.94   Round = 1   logCost = 17.8702   Value = -0.0288 
## elapsed = 9.97   Round = 2   logCost = 18.4269   Value = -0.0288 
## elapsed = 0.06   Round = 3   logCost = 2.1535    Value = -0.0271 
## elapsed = 9.22   Round = 4   logCost = 15.7612   Value = -0.0271 
## elapsed = 5.95   Round = 5   logCost = 11.0436   Value = -0.0322 
## elapsed = 2.49   Round = 6   logCost = 7.9774    Value = -0.0254 
## elapsed = 7.34   Round = 7   logCost = 13.4147   Value = -0.0271 
## elapsed = 0.04   Round = 8   logCost = -1.6333   Value = -0.0237 
## elapsed = 6.81   Round = 9   logCost = 11.4248   Value = -0.0305 
## elapsed = 7.44   Round = 10  logCost = 12.6266   Value = -0.0271 
## elapsed = 0.59   Round = 11  logCost = 6.4435    Value = -0.0271 
## elapsed = 7.08   Round = 12  logCost = 12.9778   Value = -0.0271 
## elapsed = 10.25  Round = 13  logCost = 18.3668   Value = -0.0288 
## elapsed = 0.05   Round = 14  logCost = 1.3857    Value = -0.0288 
## elapsed = 0.60   Round = 15  logCost = 6.5573    Value = -0.0271 
## elapsed = 10.07  Round = 16  logCost = 18.5004   Value = -0.0288 
## elapsed = 10.12  Round = 17  logCost = 19.4557   Value = -0.0271 
## elapsed = 0.04   Round = 18  logCost = -2.0628   Value = -0.0220 
## elapsed = 0.96   Round = 19  logCost = 6.8749    Value = -0.0271 
## elapsed = 3.57   Round = 20  logCost = 9.0083    Value = -0.0271 
## elapsed = 9.71   Round = 21  logCost = 17.6008   Value = -0.0288 
## elapsed = 0.04   Round = 22  logCost = -1.5322   Value = -0.0237 
## elapsed = 10.54  Round = 23  logCost = 19.7223   Value = -0.0288 
## elapsed = 9.84   Round = 24  logCost = 18.6667   Value = -0.0288 
## elapsed = 0.05   Round = 25  logCost = -2.9391   Value = -0.0288 
## elapsed = 2.03   Round = 26  logCost = 7.8553    Value = -0.0254 
## elapsed = 0.20   Round = 27  logCost = 4.7551    Value = -0.0288 
## elapsed = 10.05  Round = 28  logCost = 17.6435   Value = -0.0288 
## elapsed = 0.48   Round = 29  logCost = 6.1742    Value = -0.0288 
## elapsed = 9.06   Round = 30  logCost = 15.9001   Value = -0.0288 
## elapsed = 7.36   Round = 31  logCost = 13.4399   Value = -0.0271 
## elapsed = 8.90   Round = 32  logCost = 15.2764   Value = -0.0288 
## elapsed = 0.21   Round = 33  logCost = 4.7027    Value = -0.0288 
## elapsed = 6.92   Round = 34  logCost = 12.1292   Value = -0.0288 
## elapsed = 0.04   Round = 35  logCost = -4.9013   Value = -0.0305 
## elapsed = 8.99   Round = 36  logCost = 15.8229   Value = -0.0271 
## elapsed = 0.05   Round = 37  logCost = -4.8166   Value = -0.0322 
## elapsed = 0.05   Round = 38  logCost = 0.1915    Value = -0.0254 
## elapsed = 9.81   Round = 39  logCost = 17.6650   Value = -0.0271 
## elapsed = 5.53   Round = 40  logCost = 10.2945   Value = -0.0305 
## elapsed = 0.21   Round = 41  logCost = 4.4890    Value = -0.0288 
## elapsed = 0.43   Round = 42  logCost = 5.8943    Value = -0.0288 
## elapsed = 0.05   Round = 43  logCost = -4.0642   Value = -0.0254 
## elapsed = 10.50  Round = 44  logCost = 19.3385   Value = -0.0288 
## elapsed = 0.36   Round = 45  logCost = 5.7938    Value = -0.0288 
## elapsed = 10.77  Round = 46  logCost = 18.9394   Value = -0.0288 
## elapsed = 10.03  Round = 47  logCost = 17.1939   Value = -0.0271 
## elapsed = 5.79   Round = 48  logCost = 10.9995   Value = -0.0322 
## elapsed = 10.57  Round = 49  logCost = 19.2742   Value = -0.0288 
## elapsed = 5.12   Round = 50  logCost = 10.4710   Value = -0.0322 
## elapsed = 0.06   Round = 51  logCost = 1.6988    Value = -0.0288 
## elapsed = 0.04   Round = 52  logCost = -2.1662   Value = -0.0220 
## elapsed = 0.18   Round = 53  logCost = 4.4159    Value = -0.0288 
## elapsed = 0.04   Round = 54  logCost = -4.6707   Value = -0.0322 
## elapsed = 0.10   Round = 55  logCost = 2.7847    Value = -0.0271 
## elapsed = 0.05   Round = 56  logCost = -1.4191   Value = -0.0237 
## elapsed = 0.05   Round = 57  logCost = -1.6986   Value = -0.0237 
## elapsed = 0.04   Round = 58  logCost = -0.0897   Value = -0.0254 
## elapsed = 0.04   Round = 59  logCost = -0.5715   Value = -0.0254 
## elapsed = 8.93   Round = 60  logCost = 15.0736   Value = -0.0271 
## elapsed = 0.07   Round = 61  logCost = 2.7860    Value = -0.0271 
## elapsed = 9.71   Round = 62  logCost = 17.8279   Value = -0.0271 
## elapsed = 0.05   Round = 63  logCost = -2.0003   Value = -0.0220 
## elapsed = 6.68   Round = 64  logCost = 11.7706   Value = -0.0288 
## elapsed = 0.05   Round = 65  logCost = -4.9216   Value = -0.0288 
## elapsed = 0.04   Round = 66  logCost = -0.5725   Value = -0.0254 
## elapsed = 0.05   Round = 67  logCost = -2.2271   Value = -0.0237 
## elapsed = 9.17   Round = 68  logCost = 17.7434   Value = -0.0271 
## elapsed = 0.04   Round = 69  logCost = -2.1167   Value = -0.0220 
## elapsed = 0.04   Round = 70  logCost = -1.1410   Value = -0.0237 
## 
##  Best Parameters Found: 
## Round = 18   logCost = -2.0628   Value = -0.0220
  OPT_Res$Best_Par
##   logCost 
## -2.062816
  as.numeric(exp(OPT_Res$Best_Par["logCost"]))
## [1] 0.1270956
      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.02711864

3.2 SVM polynomial kernel

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(42)

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.10   Round = 1   logCost = 17.8702   logGamma = -6.2492  Degree = 4.0000 Value = -0.4475 
## elapsed = 0.18   Round = 2   logCost = 18.4269   logGamma = -6.1393  Degree = 2.0000 Value = -0.0932 
## elapsed = 0.10   Round = 3   logCost = 2.1535    logGamma = -5.7125  Degree = 2.0000 Value = -0.6678 
## elapsed = 0.06   Round = 4   logCost = 15.7612   logGamma = -2.5263  Degree = 3.0000 Value = -0.0305 
## elapsed = 0.12   Round = 5   logCost = 11.0436   logGamma = -8.6788  Degree = 5.0000 Value = -0.6678 
## elapsed = 0.08   Round = 6   logCost = 7.9774    logGamma = -2.8224  Degree = 5.0000 Value = -0.3051 
## elapsed = 0.07   Round = 7   logCost = 13.4147   logGamma = -3.4125  Degree = 4.0000 Value = -0.1356 
## elapsed = 0.11   Round = 8   logCost = -1.6333   logGamma = -7.5871  Degree = 4.0000 Value = -0.6678 
## elapsed = 0.11   Round = 9   logCost = 11.4248   logGamma = -6.8460  Degree = 3.0000 Value = -0.6678 
## elapsed = 0.05   Round = 10  logCost = 12.6266   logGamma = -4.7561  Degree = 1.0000 Value = -0.0288 
## elapsed = 0.08   Round = 11  logCost = 6.4435    logGamma = -3.4262  Degree = 3.0000 Value = -0.2085 
## elapsed = 10.24  Round = 12  logCost = 12.9778   logGamma = -0.8918  Degree = 4.0000 Value = -0.0949 
## elapsed = 4.98   Round = 13  logCost = 18.3668   logGamma = -2.7338  Degree = 4.0000 Value = -0.0797 
## elapsed = 0.12   Round = 14  logCost = 1.3857    logGamma = -4.3265  Degree = 3.0000 Value = -0.6678 
## elapsed = 0.06   Round = 15  logCost = 6.5573    logGamma = -1.9901  Degree = 3.0000 Value = -0.0508 
## elapsed = 0.13   Round = 16  logCost = 18.5004   logGamma = -7.4368  Degree = 3.0000 Value = -0.2051 
## elapsed = 0.81   Round = 17  logCost = 19.4557   logGamma = -6.7619  Degree = 1.0000 Value = -0.0305 
## elapsed = 0.11   Round = 18  logCost = -2.0628   logGamma = -2.1677  Degree = 2.0000 Value = -0.6153 
## elapsed = 0.08   Round = 19  logCost = 6.8749    logGamma = -3.2811  Degree = 3.0000 Value = -0.1593 
## elapsed = 0.12   Round = 20  logCost = 9.0083    logGamma = -7.0155  Degree = 4.0000 Value = -0.6678 
## elapsed = 0.06   Round = 21  logCost = 17.6008   logGamma = -8.6453  Degree = 2.0000 Value = -0.1169 
## elapsed = 0.12   Round = 22  logCost = -1.5322   logGamma = -7.8410  Degree = 3.0000 Value = -0.6678 
## elapsed = 0.07   Round = 23  logCost = 19.7223   logGamma = -7.2148  Degree = 3.0000 Value = -0.1153 
## elapsed = 0.06   Round = 24  logCost = 18.6667   logGamma = -5.0450  Degree = 3.0000 Value = -0.0373 
## elapsed = 0.13   Round = 25  logCost = -2.9391   logGamma = -7.3714  Degree = 4.0000 Value = -0.6678 
## elapsed = 0.07   Round = 26  logCost = 7.8553    logGamma = -3.0653  Degree = 3.0000 Value = -0.0949 
## elapsed = 0.12   Round = 27  logCost = 4.7551    logGamma = -8.9350  Degree = 5.0000 Value = -0.6678 
## elapsed = 0.11   Round = 28  logCost = 17.6435   logGamma = -5.9022  Degree = 5.0000 Value = -0.6542 
## elapsed = 0.12   Round = 29  logCost = 6.1742    logGamma = -4.7561  Degree = 2.0000 Value = -0.2525 
## elapsed = 0.11   Round = 30  logCost = 15.9001   logGamma = -8.9870  Degree = 4.0000 Value = -0.6678 
## elapsed = 0.09   Round = 31  logCost = 13.4399   logGamma = -4.2018  Degree = 5.0000 Value = -0.4085 
## elapsed = 0.11   Round = 32  logCost = 15.2764   logGamma = -7.6973  Degree = 3.0000 Value = -0.5593 
## elapsed = 0.12   Round = 33  logCost = 4.7027    logGamma = -6.0380  Degree = 4.0000 Value = -0.6678 
## elapsed = 0.09   Round = 34  logCost = 12.1292   logGamma = -3.6735  Degree = 5.0000 Value = -0.3153 
## elapsed = 0.11   Round = 35  logCost = -4.9013   logGamma = -2.5995  Degree = 4.0000 Value = -0.6678 
## elapsed = 0.05   Round = 36  logCost = 15.8229   logGamma = -4.3499  Degree = 3.0000 Value = -0.0441 
## elapsed = 0.12   Round = 37  logCost = -4.8166   logGamma = -7.0719  Degree = 4.0000 Value = -0.6678 
## elapsed = 0.11   Round = 38  logCost = 0.1915    logGamma = -8.2577  Degree = 1.0000 Value = -0.6678 
## elapsed = 0.12   Round = 39  logCost = 17.6650   logGamma = -8.2937  Degree = 4.0000 Value = -0.6678 
## elapsed = 0.10   Round = 40  logCost = 10.2945   logGamma = -6.4819  Degree = 3.0000 Value = -0.6678 
## elapsed = 0.08   Round = 41  logCost = 4.4890    logGamma = -3.4937  Degree = 2.0000 Value = -0.2085 
## elapsed = 0.10   Round = 42  logCost = 5.8943    logGamma = -8.9980  Degree = 1.0000 Value = -0.2915 
## elapsed = 0.11   Round = 43  logCost = -4.0642   logGamma = -7.2793  Degree = 3.0000 Value = -0.6678 
## elapsed = 30.59  Round = 44  logCost = 19.3385   logGamma = -1.3025  Degree = 4.0000 Value = -0.1661 
## elapsed = 0.07   Round = 45  logCost = 5.7938    logGamma = -1.3634  Degree = 4.0000 Value = -0.1186 
## elapsed = 4.02   Round = 46  logCost = 18.9394   logGamma = -2.9437  Degree = 4.0000 Value = -0.0814 
## elapsed = 0.07   Round = 47  logCost = 17.1939   logGamma = -6.2522  Degree = 2.0000 Value = -0.0864 
## elapsed = 0.11   Round = 48  logCost = 10.9995   logGamma = -4.7507  Degree = 5.0000 Value = -0.6644 
## elapsed = 22.27  Round = 49  logCost = 19.2742   logGamma = -2.8622  Degree = 2.0000 Value = -0.0898 
## elapsed = 0.06   Round = 50  logCost = 10.4710   logGamma = -3.8919  Degree = 2.0000 Value = -0.0915 
## elapsed = 0.45   Round = 51  logCost = 20.0000   logGamma = -8.4288  Degree = 1.0000 Value = -0.0305 
## elapsed = 0.06   Round = 52  logCost = 12.2936   logGamma = -6.8629  Degree = 1.0000 Value = -0.0322 
## elapsed = 0.05   Round = 53  logCost = 7.7753    logGamma = -3.9863  Degree = 1.0000 Value = -0.0322 
## elapsed = 63.43  Round = 54  logCost = 18.7258   logGamma = -0.7500  Degree = 2.0000 Value = -0.1593 
## elapsed = 0.08   Round = 55  logCost = 16.6480   logGamma = -7.6470  Degree = 1.0000 Value = -0.0305 
## elapsed = 0.07   Round = 56  logCost = 20.0000   logGamma = -7.8906  Degree = 2.0000 Value = -0.0898 
## elapsed = 0.10   Round = 57  logCost = 11.8187   logGamma = -0.7500  Degree = 5.0000 Value = -0.0373 
## elapsed = 2.40   Round = 58  logCost = 16.4863   logGamma = -2.4596  Degree = 1.0000 Value = -0.0339 
## elapsed = 0.06   Round = 59  logCost = 8.8246    logGamma = -0.8514  Degree = 1.0000 Value = -0.0288 
## elapsed = 0.07   Round = 60  logCost = 4.7186    logGamma = -0.7500  Degree = 1.0000 Value = -0.0305 
## elapsed = 0.06   Round = 61  logCost = 7.4310    logGamma = -1.8694  Degree = 2.0000 Value = -0.0881 
## elapsed = 0.10   Round = 62  logCost = 16.5898   logGamma = -1.5565  Degree = 5.0000 Value = -0.0424 
## elapsed = 9.11   Round = 63  logCost = 20.0000   logGamma = -3.7614  Degree = 1.0000 Value = -0.0305 
## elapsed = 12.80  Round = 64  logCost = 20.0000   logGamma = -0.7500  Degree = 1.0000 Value = -0.0390 
## elapsed = 0.05   Round = 65  logCost = 12.0678   logGamma = -9.0000  Degree = 1.0000 Value = -0.0288 
## elapsed = 0.10   Round = 66  logCost = 6.5200    logGamma = -2.1638  Degree = 1.0000 Value = -0.0322 
## elapsed = 1.63   Round = 67  logCost = 15.0111   logGamma = -0.7500  Degree = 1.0000 Value = -0.0322 
## elapsed = 0.16   Round = 68  logCost = 20.0000   logGamma = -2.4477  Degree = 3.0000 Value = -0.0390 
## elapsed = 0.11   Round = 69  logCost = 10.3782   logGamma = -9.0000  Degree = 2.0000 Value = -0.6678 
## elapsed = 0.49   Round = 70  logCost = 16.6415   logGamma = -4.7413  Degree = 1.0000 Value = -0.0305 
## 
##  Best Parameters Found: 
## Round = 10   logCost = 12.6266   logGamma = -4.7561  Degree = 1.0000 Value = -0.0288
  OPT_Res$Best_Par
##   logCost  logGamma    Degree 
## 12.626620 -4.756093  1.000000
  as.numeric(exp(OPT_Res$Best_Par["logCost"]))
## [1] 304558.8
  as.numeric(exp(OPT_Res$Best_Par["logGamma"]))
## [1] 0.008599138
      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.03220339

3.3 SVM Radial Kernel

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(42)

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.06   Round = 1   logCost = 17.8702   logGamma = -8.6453  Value = -0.0390 
## elapsed = 0.08   Round = 2   logCost = 18.4269   logGamma = -7.8410  Value = -0.0356 
## elapsed = 0.14   Round = 3   logCost = 2.1535    logGamma = -7.2148  Value = -0.4763 
## elapsed = 0.14   Round = 4   logCost = 15.7612   logGamma = -5.0450  Value = -0.0305 
## elapsed = 0.06   Round = 5   logCost = 11.0436   logGamma = -7.3714  Value = -0.0322 
## elapsed = 0.05   Round = 6   logCost = 7.9774    logGamma = -3.0653  Value = -0.0305 
## elapsed = 0.06   Round = 7   logCost = 13.4147   logGamma = -8.9350  Value = -0.0322 
## elapsed = 0.14   Round = 8   logCost = -1.6333   logGamma = -5.9022  Value = -0.6678 
## elapsed = 0.06   Round = 9   logCost = 11.4248   logGamma = -4.7561  Value = -0.0305 
## elapsed = 0.05   Round = 10  logCost = 12.6266   logGamma = -8.9870  Value = -0.0305 
## elapsed = 0.07   Round = 11  logCost = 6.4435    logGamma = -4.2018  Value = -0.0322 
## elapsed = 0.06   Round = 12  logCost = 12.9778   logGamma = -7.6973  Value = -0.0254 
## elapsed = 0.16   Round = 13  logCost = 18.3668   logGamma = -6.0380  Value = -0.0271 
## elapsed = 0.11   Round = 14  logCost = 1.3857    logGamma = -3.6735  Value = -0.1068 
## elapsed = 0.05   Round = 15  logCost = 6.5573    logGamma = -2.5995  Value = -0.0339 
## elapsed = 0.43   Round = 16  logCost = 18.5004   logGamma = -4.3499  Value = -0.0288 
## elapsed = 0.09   Round = 17  logCost = 19.4557   logGamma = -7.0719  Value = -0.0390 
## elapsed = 0.15   Round = 18  logCost = -2.0628   logGamma = -8.2577  Value = -0.6678 
## elapsed = 0.09   Round = 19  logCost = 6.8749    logGamma = -8.2937  Value = -0.0847 
## elapsed = 0.06   Round = 20  logCost = 9.0083    logGamma = -6.4819  Value = -0.0288 
## elapsed = 0.77   Round = 21  logCost = 17.6008   logGamma = -3.4937  Value = -0.0271 
## elapsed = 0.14   Round = 22  logCost = -1.5322   logGamma = -8.9980  Value = -0.6678 
## elapsed = 0.09   Round = 23  logCost = 19.7223   logGamma = -7.2793  Value = -0.0322 
## elapsed = 2.58   Round = 24  logCost = 18.6667   logGamma = -1.3025  Value = -0.0390 
## elapsed = 0.14   Round = 25  logCost = -2.9391   logGamma = -1.3634  Value = -0.4203 
## elapsed = 0.05   Round = 26  logCost = 7.8553    logGamma = -2.9437  Value = -0.0305 
## elapsed = 0.09   Round = 27  logCost = 4.7551    logGamma = -6.2522  Value = -0.0864 
## elapsed = 0.37   Round = 28  logCost = 17.6435   logGamma = -4.7507  Value = -0.0271 
## elapsed = 0.05   Round = 29  logCost = 6.1742    logGamma = -2.8622  Value = -0.0356 
## elapsed = 0.47   Round = 30  logCost = 15.9001   logGamma = -3.8919  Value = -0.0288 
## elapsed = 0.10   Round = 31  logCost = 13.4399   logGamma = -3.8335  Value = -0.0288 
## elapsed = 0.08   Round = 32  logCost = 15.2764   logGamma = -7.2084  Value = -0.0305 
## elapsed = 0.10   Round = 33  logCost = 4.7027    logGamma = -7.2133  Value = -0.1119 
## elapsed = 0.06   Round = 34  logCost = 12.1292   logGamma = -5.7912  Value = -0.0305 
## elapsed = 0.15   Round = 35  logCost = -4.9013   logGamma = -1.2247  Value = -0.6678 
## elapsed = 1.49   Round = 36  logCost = 15.8229   logGamma = -1.0585  Value = -0.0356 
## elapsed = 0.14   Round = 37  logCost = -4.8166   logGamma = -2.8962  Value = -0.6678 
## elapsed = 0.10   Round = 38  logCost = 0.1915    logGamma = -2.9507  Value = -0.1305 
## elapsed = 0.44   Round = 39  logCost = 17.6650   logGamma = -4.5800  Value = -0.0288 
## elapsed = 0.07   Round = 40  logCost = 10.2945   logGamma = -8.9812  Value = -0.0475 
## elapsed = 0.08   Round = 41  logCost = 4.4890    logGamma = -3.9763  Value = -0.0593 
## elapsed = 0.06   Round = 42  logCost = 5.8943    logGamma = -2.0964  Value = -0.0339 
## elapsed = 0.14   Round = 43  logCost = -4.0642   logGamma = -2.7999  Value = -0.6678 
## elapsed = 0.21   Round = 44  logCost = 19.3385   logGamma = -5.2650  Value = -0.0271 
## elapsed = 0.07   Round = 45  logCost = 5.7938    logGamma = -4.5797  Value = -0.0492 
## elapsed = 0.62   Round = 46  logCost = 18.9394   logGamma = -4.5666  Value = -0.0407 
## elapsed = 0.06   Round = 47  logCost = 17.1939   logGamma = -8.9886  Value = -0.0356 
## elapsed = 0.07   Round = 48  logCost = 10.9995   logGamma = -6.0658  Value = -0.0271 
## elapsed = 0.75   Round = 49  logCost = 19.2742   logGamma = -3.9499  Value = -0.0390 
## elapsed = 0.09   Round = 50  logCost = 10.4710   logGamma = -2.1612  Value = -0.0271 
## elapsed = 0.15   Round = 51  logCost = 3.3357    logGamma = -6.0570  Value = -0.1288 
## elapsed = 0.11   Round = 52  logCost = 3.6687    logGamma = -5.6123  Value = -0.0898 
## elapsed = 0.07   Round = 53  logCost = 4.9621    logGamma = -4.2688  Value = -0.0559 
## elapsed = 0.17   Round = 54  logCost = 14.6173   logGamma = -4.1352  Value = -0.0305 
## elapsed = 0.18   Round = 55  logCost = -4.0266   logGamma = -3.0628  Value = -0.6678 
## elapsed = 0.10   Round = 56  logCost = 13.7199   logGamma = -5.7415  Value = -0.0305 
## elapsed = 0.09   Round = 57  logCost = 11.9319   logGamma = -1.4166  Value = -0.0254 
## elapsed = 0.13   Round = 58  logCost = -0.7184   logGamma = -1.0588  Value = -0.0949 
## elapsed = 0.15   Round = 59  logCost = 1.5272    logGamma = -7.0734  Value = -0.5492 
## elapsed = 0.06   Round = 60  logCost = 7.8603    logGamma = -3.0229  Value = -0.0305 
## elapsed = 0.10   Round = 61  logCost = 11.8902   logGamma = -1.5450  Value = -0.0254 
## elapsed = 1.15   Round = 62  logCost = 19.5704   logGamma = -4.0213  Value = -0.0339 
## elapsed = 0.14   Round = 63  logCost = 13.9886   logGamma = -3.7901  Value = -0.0288 
## elapsed = 0.07   Round = 64  logCost = 9.1622    logGamma = -1.2666  Value = -0.0254 
## elapsed = 0.74   Round = 65  logCost = 16.2422   logGamma = -1.9835  Value = -0.0305 
## elapsed = 0.15   Round = 66  logCost = -0.2632   logGamma = -4.2165  Value = -0.4068 
## elapsed = 0.08   Round = 67  logCost = 1.7822    logGamma = -2.2234  Value = -0.0763 
## elapsed = 0.06   Round = 68  logCost = 15.7040   logGamma = -8.0618  Value = -0.0322 
## elapsed = 0.08   Round = 69  logCost = 12.3301   logGamma = -2.6928  Value = -0.0271 
## elapsed = 0.13   Round = 70  logCost = 1.0136    logGamma = -3.8552  Value = -0.1305 
## elapsed = 0.07   Round = 71  logCost = 0.6157    logGamma = -0.7500  Value = -0.0678 
## elapsed = 0.06   Round = 72  logCost = 4.0695    logGamma = -0.7500  Value = -0.0288 
## elapsed = 0.09   Round = 73  logCost = 8.4292    logGamma = -9.0000  Value = -0.0763 
## elapsed = 0.17   Round = 74  logCost = -5.0000   logGamma = -9.0000  Value = -0.6678 
## elapsed = 0.30   Round = 75  logCost = 13.9021   logGamma = -0.7500  Value = -0.0339 
## elapsed = 0.08   Round = 76  logCost = 16.9930   logGamma = -7.3682  Value = -0.0288 
## elapsed = 0.06   Round = 77  logCost = 7.6373    logGamma = -6.4932  Value = -0.0458 
## elapsed = 0.23   Round = 78  logCost = 20.0000   logGamma = -5.7431  Value = -0.0305 
## elapsed = 4.14   Round = 79  logCost = 17.5871   logGamma = -0.7500  Value = -0.0305 
## elapsed = 0.07   Round = 80  logCost = 9.7130    logGamma = -4.1466  Value = -0.0288 
## elapsed = 0.05   Round = 81  logCost = 14.8315   logGamma = -9.0000  Value = -0.0271 
## elapsed = 0.06   Round = 82  logCost = 20.0000   logGamma = -9.0000  Value = -0.0254 
## elapsed = 0.07   Round = 83  logCost = 4.8784    logGamma = -0.7500  Value = -0.0288 
## elapsed = 0.07   Round = 84  logCost = 10.5386   logGamma = -0.7500  Value = -0.0254 
## elapsed = 0.06   Round = 85  logCost = 3.0395    logGamma = -2.6821  Value = -0.0610 
## elapsed = 0.06   Round = 86  logCost = 7.7719    logGamma = -0.7500  Value = -0.0237 
## elapsed = 0.07   Round = 87  logCost = 9.9055    logGamma = -7.2239  Value = -0.0288 
## elapsed = 1.54   Round = 88  logCost = 18.1004   logGamma = -1.9317  Value = -0.0339 
## elapsed = 2.41   Round = 89  logCost = 20.0000   logGamma = -2.2000  Value = -0.0288 
## elapsed = 0.37   Round = 90  logCost = 14.7405   logGamma = -2.1144  Value = -0.0237 
## 
##  Best Parameters Found: 
## Round = 86   logCost = 7.7719    logGamma = -0.7500  Value = -0.0237
  OPT_Res$Best_Par
##   logCost  logGamma 
##  7.771934 -0.750000
  as.numeric(exp(OPT_Res$Best_Par["logCost"]))
## [1] 2373.055
  as.numeric(exp(OPT_Res$Best_Par["logGamma"]))
## [1] 0.4723666
      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.03220339