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

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

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

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.17   Round = 1   logCost = 4.9976    Value = -0.0373 
## elapsed = 0.06   Round = 2   logCost = -4.4933   Value = -0.0356 
## elapsed = 0.06   Round = 3   logCost = -1.3606   Value = -0.0237 
## elapsed = 0.13   Round = 4   logCost = 4.4379    Value = -0.0373 
## elapsed = 7.75   Round = 5   logCost = 13.8450   Value = -0.0288 
## elapsed = 8.54   Round = 6   logCost = 13.7940   Value = -0.0288 
## elapsed = 1.12   Round = 7   logCost = 7.7509    Value = -0.0288 
## elapsed = 0.25   Round = 8   logCost = 6.0395    Value = -0.0390 
## elapsed = 0.05   Round = 9   logCost = -3.8181   Value = -0.0356 
## elapsed = 9.75   Round = 10  logCost = 16.6838   Value = -0.0288 
## elapsed = 0.05   Round = 11  logCost = -3.2759   Value = -0.0305 
## elapsed = 1.62   Round = 12  logCost = 7.7009    Value = -0.0288 
## elapsed = 7.45   Round = 13  logCost = 11.6638   Value = -0.0288 
## elapsed = 0.13   Round = 14  logCost = 4.9203    Value = -0.0373 
## elapsed = 1.17   Round = 15  logCost = 7.5790    Value = -0.0305 
## elapsed = 0.06   Round = 16  logCost = 2.7752    Value = -0.0373 
## elapsed = 8.95   Round = 17  logCost = 15.3030   Value = -0.0305 
## elapsed = 0.04   Round = 18  logCost = -3.0498   Value = -0.0288 
## elapsed = 0.09   Round = 19  logCost = 3.5257    Value = -0.0373 
## elapsed = 8.29   Round = 20  logCost = 14.4384   Value = -0.0288 
## elapsed = 1.18   Round = 21  logCost = 8.1075    Value = -0.0288 
## elapsed = 0.05   Round = 22  logCost = 2.0402    Value = -0.0373 
## elapsed = 0.04   Round = 23  logCost = -1.9573   Value = -0.0288 
## elapsed = 0.05   Round = 24  logCost = -4.6129   Value = -0.0339 
## elapsed = 0.89   Round = 25  logCost = 7.3699    Value = -0.0322 
## elapsed = 6.55   Round = 26  logCost = 11.2806   Value = -0.0288 
## elapsed = 9.92   Round = 27  logCost = 17.1035   Value = -0.0305 
## elapsed = 0.05   Round = 28  logCost = 2.5779    Value = -0.0373 
## elapsed = 0.80   Round = 29  logCost = 7.2883    Value = -0.0322 
## elapsed = 0.05   Round = 30  logCost = 1.0500    Value = -0.0322 
## elapsed = 0.97   Round = 31  logCost = 7.9194    Value = -0.0288 
## elapsed = 0.05   Round = 32  logCost = -2.5426   Value = -0.0288 
## elapsed = 8.43   Round = 33  logCost = 13.9416   Value = -0.0288 
## elapsed = 10.82  Round = 34  logCost = 18.4818   Value = -0.0288 
## elapsed = 0.61   Round = 35  logCost = 6.7906    Value = -0.0390 
## elapsed = 3.38   Round = 36  logCost = 9.1364    Value = -0.0271 
## elapsed = 9.43   Round = 37  logCost = 15.9119   Value = -0.0288 
## elapsed = 8.44   Round = 38  logCost = 13.7951   Value = -0.0288 
## elapsed = 6.83   Round = 39  logCost = 12.1007   Value = -0.0288 
## elapsed = 0.05   Round = 40  logCost = -4.1721   Value = -0.0339 
## elapsed = 0.58   Round = 41  logCost = 6.7891    Value = -0.0390 
## elapsed = 3.41   Round = 42  logCost = 9.4448    Value = -0.0271 
## elapsed = 0.04   Round = 43  logCost = -2.5372   Value = -0.0288 
## elapsed = 0.05   Round = 44  logCost = -2.9539   Value = -0.0288 
## elapsed = 0.87   Round = 45  logCost = 7.4134    Value = -0.0305 
## elapsed = 8.30   Round = 46  logCost = 14.4325   Value = -0.0288 
## elapsed = 0.04   Round = 47  logCost = -2.1343   Value = -0.0288 
## elapsed = 0.96   Round = 48  logCost = 7.8754    Value = -0.0288 
## elapsed = 9.10   Round = 49  logCost = 15.3679   Value = -0.0305 
## elapsed = 9.44   Round = 50  logCost = 16.0208   Value = -0.0288 
## elapsed = 11.60  Round = 51  logCost = 19.9777   Value = -0.0288 
## elapsed = 8.49   Round = 52  logCost = 14.6973   Value = -0.0288 
## elapsed = 7.10   Round = 53  logCost = 11.6443   Value = -0.0288 
## elapsed = 7.87   Round = 54  logCost = 12.5101   Value = -0.0288 
## elapsed = 7.29   Round = 55  logCost = 11.9291   Value = -0.0288 
## elapsed = 7.38   Round = 56  logCost = 13.0667   Value = -0.0288 
## elapsed = 3.59   Round = 57  logCost = 9.9048    Value = -0.0254 
## elapsed = 5.94   Round = 58  logCost = 10.9024   Value = -0.0305 
## elapsed = 7.01   Round = 59  logCost = 11.6456   Value = -0.0288 
## elapsed = 0.06   Round = 60  logCost = -1.0036   Value = -0.0305 
## elapsed = 6.99   Round = 61  logCost = 11.4797   Value = -0.0305 
## elapsed = 7.33   Round = 62  logCost = 11.7243   Value = -0.0288 
## elapsed = 6.88   Round = 63  logCost = 11.2333   Value = -0.0288 
## elapsed = 6.21   Round = 64  logCost = 11.0818   Value = -0.0288 
## elapsed = 6.85   Round = 65  logCost = 11.5530   Value = -0.0288 
## elapsed = 7.70   Round = 66  logCost = 11.9507   Value = -0.0288 
## elapsed = 5.99   Round = 67  logCost = 11.0190   Value = -0.0288 
## elapsed = 6.18   Round = 68  logCost = 11.0854   Value = -0.0288 
## elapsed = 7.10   Round = 69  logCost = 12.0167   Value = -0.0288 
## elapsed = 5.89   Round = 70  logCost = 11.8331   Value = -0.0288 
## 
##  Best Parameters Found: 
## Round = 3    logCost = -1.3606   Value = -0.0237
  OPT_Res$Best_Par
##   logCost 
## -1.360628
  as.numeric(exp(OPT_Res$Best_Par["logCost"]))
## [1] 0.2564997
      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.02881356

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

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.11   Round = 1   logCost = 4.9976    logGamma = -5.8029  Degree = 2.0000 Value = -0.6559 
## elapsed = 0.11   Round = 2   logCost = -4.4933   logGamma = -2.4588  Degree = 4.0000 Value = -0.6678 
## elapsed = 0.11   Round = 3   logCost = -1.3606   logGamma = -4.9197  Degree = 4.0000 Value = -0.6678 
## elapsed = 0.08   Round = 4   logCost = 4.4379    logGamma = -1.7974  Degree = 4.0000 Value = -0.2186 
## elapsed = 0.07   Round = 5   logCost = 13.8450   logGamma = -6.9840  Degree = 2.0000 Value = -0.1220 
## elapsed = 0.08   Round = 6   logCost = 13.7940   logGamma = -8.1420  Degree = 2.0000 Value = -0.2169 
## elapsed = 0.05   Round = 7   logCost = 7.7509    logGamma = -1.8201  Degree = 3.0000 Value = -0.0492 
## elapsed = 0.11   Round = 8   logCost = 6.0395    logGamma = -3.9130  Degree = 4.0000 Value = -0.6051 
## elapsed = 0.11   Round = 9   logCost = -3.8181   logGamma = -4.1670  Degree = 5.0000 Value = -0.6678 
## elapsed = 0.13   Round = 10  logCost = 16.6838   logGamma = -6.6171  Degree = 4.0000 Value = -0.6254 
## elapsed = 0.11   Round = 11  logCost = -3.2759   logGamma = -2.3208  Degree = 4.0000 Value = -0.6678 
## elapsed = 0.06   Round = 12  logCost = 7.7009    logGamma = -0.9896  Degree = 3.0000 Value = -0.0390 
## elapsed = 0.06   Round = 13  logCost = 11.6638   logGamma = -2.9073  Degree = 3.0000 Value = -0.0390 
## elapsed = 0.07   Round = 14  logCost = 4.9203    logGamma = -2.4940  Degree = 3.0000 Value = -0.1559 
## elapsed = 0.11   Round = 15  logCost = 7.5790    logGamma = -5.3271  Degree = 5.0000 Value = -0.6678 
## elapsed = 0.10   Round = 16  logCost = 2.7752    logGamma = -6.5438  Degree = 2.0000 Value = -0.6678 
## elapsed = 0.11   Round = 17  logCost = 15.3030   logGamma = -6.4579  Degree = 4.0000 Value = -0.6627 
## elapsed = 0.10   Round = 18  logCost = -3.0498   logGamma = -4.7046  Degree = 2.0000 Value = -0.6678 
## elapsed = 0.10   Round = 19  logCost = 3.5257    logGamma = -4.6557  Degree = 3.0000 Value = -0.6678 
## elapsed = 0.06   Round = 20  logCost = 14.4384   logGamma = -2.8219  Degree = 3.0000 Value = -0.0424 
## elapsed = 0.05   Round = 21  logCost = 8.1075    logGamma = -0.8283  Degree = 5.0000 Value = -0.0508 
## elapsed = 0.11   Round = 22  logCost = 2.0402    logGamma = -6.4437  Degree = 4.0000 Value = -0.6678 
## elapsed = 0.11   Round = 23  logCost = -1.9573   logGamma = -8.8188  Degree = 3.0000 Value = -0.6678 
## elapsed = 0.10   Round = 24  logCost = -4.6129   logGamma = -8.7169  Degree = 1.0000 Value = -0.6678 
## elapsed = 0.05   Round = 25  logCost = 7.3699    logGamma = -1.0580  Degree = 3.0000 Value = -0.0390 
## elapsed = 0.06   Round = 26  logCost = 11.2806   logGamma = -1.4243  Degree = 5.0000 Value = -0.0559 
## elapsed = 0.14   Round = 27  logCost = 17.1035   logGamma = -2.0076  Degree = 3.0000 Value = -0.0271 
## elapsed = 0.11   Round = 28  logCost = 2.5779    logGamma = -5.9509  Degree = 4.0000 Value = -0.6678 
## elapsed = 0.11   Round = 29  logCost = 7.2883    logGamma = -7.6365  Degree = 2.0000 Value = -0.6678 
## elapsed = 0.10   Round = 30  logCost = 1.0500    logGamma = -6.6123  Degree = 4.0000 Value = -0.6678 
## elapsed = 0.09   Round = 31  logCost = 7.9194    logGamma = -1.6144  Degree = 2.0000 Value = -0.0881 
## elapsed = 0.10   Round = 32  logCost = -2.5426   logGamma = -3.5168  Degree = 3.0000 Value = -0.6678 
## elapsed = 0.09   Round = 33  logCost = 13.9416   logGamma = -3.4413  Degree = 1.0000 Value = -0.0356 
## elapsed = 0.11   Round = 34  logCost = 18.4818   logGamma = -6.4738  Degree = 5.0000 Value = -0.6678 
## elapsed = 0.11   Round = 35  logCost = 6.7906    logGamma = -8.6939  Degree = 5.0000 Value = -0.6678 
## elapsed = 0.07   Round = 36  logCost = 9.1364    logGamma = -4.5129  Degree = 2.0000 Value = -0.1169 
## elapsed = 0.07   Round = 37  logCost = 15.9119   logGamma = -2.4021  Degree = 3.0000 Value = -0.0339 
## elapsed = 14.97  Round = 38  logCost = 13.7951   logGamma = -0.8881  Degree = 4.0000 Value = -0.1017 
## elapsed = 0.10   Round = 39  logCost = 12.1007   logGamma = -3.6571  Degree = 5.0000 Value = -0.3051 
## elapsed = 0.12   Round = 40  logCost = -4.1721   logGamma = -2.0741  Degree = 2.0000 Value = -0.6678 
## elapsed = 0.09   Round = 41  logCost = 6.7891    logGamma = -3.6745  Degree = 3.0000 Value = -0.2407 
## elapsed = 0.07   Round = 42  logCost = 9.4448    logGamma = -2.8692  Degree = 2.0000 Value = -0.0915 
## elapsed = 0.11   Round = 43  logCost = -2.5372   logGamma = -7.6402  Degree = 2.0000 Value = -0.6678 
## elapsed = 0.12   Round = 44  logCost = -2.9539   logGamma = -2.5407  Degree = 3.0000 Value = -0.6678 
## elapsed = 0.12   Round = 45  logCost = 7.4134    logGamma = -8.6822  Degree = 4.0000 Value = -0.6678 
## elapsed = 0.07   Round = 46  logCost = 14.4325   logGamma = -4.8723  Degree = 1.0000 Value = -0.0339 
## elapsed = 0.12   Round = 47  logCost = -2.1343   logGamma = -7.3993  Degree = 3.0000 Value = -0.6678 
## elapsed = 0.11   Round = 48  logCost = 7.8754    logGamma = -8.2963  Degree = 2.0000 Value = -0.6678 
## elapsed = 0.12   Round = 49  logCost = 15.3679   logGamma = -8.1864  Degree = 3.0000 Value = -0.6678 
## elapsed = 5.16   Round = 50  logCost = 16.0208   logGamma = -3.1077  Degree = 2.0000 Value = -0.0915 
## elapsed = 18.05  Round = 51  logCost = 14.1079   logGamma = -0.7500  Degree = 2.0000 Value = -0.0915 
## elapsed = 0.05   Round = 52  logCost = 12.0238   logGamma = -6.2209  Degree = 1.0000 Value = -0.0254 
## elapsed = 0.07   Round = 53  logCost = 3.3324    logGamma = -0.7500  Degree = 2.0000 Value = -0.1017 
## elapsed = 4.70   Round = 54  logCost = 10.3545   logGamma = -0.7500  Degree = 4.0000 Value = -0.0983 
## elapsed = 35.61  Round = 55  logCost = 20.0000   logGamma = -0.7500  Degree = 4.0000 Value = -0.1627 
## elapsed = 8.45   Round = 56  logCost = 18.0813   logGamma = -0.7500  Degree = 1.0000 Value = -0.0390 
## elapsed = 70.83  Round = 57  logCost = 20.0000   logGamma = -0.7500  Degree = 2.0000 Value = -0.1949 
## elapsed = 0.07   Round = 58  logCost = 20.0000   logGamma = -3.5313  Degree = 3.0000 Value = -0.0288 
## elapsed = 0.05   Round = 59  logCost = 16.4806   logGamma = -9.0000  Degree = 1.0000 Value = -0.0305 
## elapsed = 0.06   Round = 60  logCost = 16.9870   logGamma = -7.3316  Degree = 1.0000 Value = -0.0339 
## elapsed = 0.54   Round = 61  logCost = 14.1727   logGamma = -0.7500  Degree = 1.0000 Value = -0.0373 
## elapsed = 0.10   Round = 62  logCost = 20.0000   logGamma = -9.0000  Degree = 1.0000 Value = -0.0373 
## elapsed = 4.87   Round = 63  logCost = 20.0000   logGamma = -3.9945  Degree = 1.0000 Value = -0.0322 
## elapsed = 0.30   Round = 64  logCost = 20.0000   logGamma = -6.6415  Degree = 2.0000 Value = -0.0898 
## elapsed = 0.06   Round = 65  logCost = 2.8077    logGamma = -0.7500  Degree = 5.0000 Value = -0.1153 
## elapsed = 0.05   Round = 66  logCost = 4.7152    logGamma = -0.7500  Degree = 1.0000 Value = -0.0339 
## elapsed = 0.05   Round = 67  logCost = 8.8335    logGamma = -0.7500  Degree = 1.0000 Value = -0.0339 
## elapsed = 0.10   Round = 68  logCost = 19.7121   logGamma = -2.6884  Degree = 5.0000 Value = -0.0542 
## elapsed = 7.74   Round = 69  logCost = 20.0000   logGamma = -2.3324  Degree = 1.0000 Value = -0.0356 
## elapsed = 6.80   Round = 70  logCost = 17.7685   logGamma = -2.4550  Degree = 4.0000 Value = -0.0966 
## 
##  Best Parameters Found: 
## Round = 52   logCost = 12.0238   logGamma = -6.2209  Degree = 1.0000 Value = -0.0254
  OPT_Res$Best_Par
##   logCost  logGamma    Degree 
## 12.023780 -6.220874  1.000000
  as.numeric(exp(OPT_Res$Best_Par["logCost"]))
## [1] 166671.5
  as.numeric(exp(OPT_Res$Best_Par["logGamma"]))
## [1] 0.001987507
      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

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

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 = 4.9976    logGamma = -0.8283  Value = -0.0373 
## elapsed = 0.13   Round = 2   logCost = -4.4933   logGamma = -6.4437  Value = -0.6678 
## elapsed = 0.15   Round = 3   logCost = -1.3606   logGamma = -8.8188  Value = -0.6678 
## elapsed = 0.12   Round = 4   logCost = 4.4379    logGamma = -8.7169  Value = -0.3898 
## elapsed = 0.33   Round = 5   logCost = 13.8450   logGamma = -1.0580  Value = -0.0322 
## elapsed = 0.25   Round = 6   logCost = 13.7940   logGamma = -1.4243  Value = -0.0322 
## elapsed = 0.05   Round = 7   logCost = 7.7509    logGamma = -2.0076  Value = -0.0339 
## elapsed = 0.07   Round = 8   logCost = 6.0395    logGamma = -5.9509  Value = -0.0508 
## elapsed = 0.13   Round = 9   logCost = -3.8181   logGamma = -7.6365  Value = -0.6678 
## elapsed = 0.08   Round = 10  logCost = 16.6838   logGamma = -6.6123  Value = -0.0322 
## elapsed = 0.13   Round = 11  logCost = -3.2759   logGamma = -1.6144  Value = -0.4661 
## elapsed = 0.05   Round = 12  logCost = 7.7009    logGamma = -3.5168  Value = -0.0390 
## elapsed = 0.06   Round = 13  logCost = 11.6638   logGamma = -3.4413  Value = -0.0288 
## elapsed = 0.08   Round = 14  logCost = 4.9203    logGamma = -6.4738  Value = -0.0847 
## elapsed = 0.08   Round = 15  logCost = 7.5790    logGamma = -8.6939  Value = -0.0814 
## elapsed = 0.08   Round = 16  logCost = 2.7752    logGamma = -4.5129  Value = -0.0881 
## elapsed = 0.39   Round = 17  logCost = 15.3030   logGamma = -2.4021  Value = -0.0254 
## elapsed = 0.12   Round = 18  logCost = -3.0498   logGamma = -0.8881  Value = -0.3881 
## elapsed = 0.07   Round = 19  logCost = 3.5257    logGamma = -3.6571  Value = -0.0610 
## elapsed = 0.28   Round = 20  logCost = 14.4384   logGamma = -2.0741  Value = -0.0305 
## elapsed = 0.06   Round = 21  logCost = 8.1075    logGamma = -3.6745  Value = -0.0322 
## elapsed = 0.08   Round = 22  logCost = 2.0402    logGamma = -2.8692  Value = -0.0695 
## elapsed = 0.13   Round = 23  logCost = -1.9573   logGamma = -7.6402  Value = -0.6678 
## elapsed = 0.13   Round = 24  logCost = -4.6129   logGamma = -2.5407  Value = -0.6678 
## elapsed = 0.08   Round = 25  logCost = 7.3699    logGamma = -8.6822  Value = -0.0847 
## elapsed = 0.05   Round = 26  logCost = 11.2806   logGamma = -4.8723  Value = -0.0305 
## elapsed = 0.06   Round = 27  logCost = 17.1035   logGamma = -7.3993  Value = -0.0322 
## elapsed = 0.13   Round = 28  logCost = 2.5779    logGamma = -8.2963  Value = -0.5542 
## elapsed = 0.07   Round = 29  logCost = 7.2883    logGamma = -8.1864  Value = -0.0661 
## elapsed = 0.09   Round = 30  logCost = 1.0500    logGamma = -3.1077  Value = -0.0966 
## elapsed = 0.07   Round = 31  logCost = 7.9194    logGamma = -7.8122  Value = -0.0508 
## elapsed = 0.13   Round = 32  logCost = -2.5426   logGamma = -3.3805  Value = -0.5593 
## elapsed = 0.20   Round = 33  logCost = 13.9416   logGamma = -2.4672  Value = -0.0288 
## elapsed = 0.84   Round = 34  logCost = 18.4818   logGamma = -2.9069  Value = -0.0356 
## elapsed = 0.06   Round = 35  logCost = 6.7906    logGamma = -6.1491  Value = -0.0508 
## elapsed = 0.05   Round = 36  logCost = 9.1364    logGamma = -6.1807  Value = -0.0322 
## elapsed = 0.12   Round = 37  logCost = 15.9119   logGamma = -5.1921  Value = -0.0271 
## elapsed = 0.21   Round = 38  logCost = 13.7951   logGamma = -2.0902  Value = -0.0305 
## elapsed = 0.12   Round = 39  logCost = 12.1007   logGamma = -1.4483  Value = -0.0305 
## elapsed = 0.13   Round = 40  logCost = -4.1721   logGamma = -2.7064  Value = -0.6678 
## elapsed = 0.05   Round = 41  logCost = 6.7891    logGamma = -3.7400  Value = -0.0339 
## elapsed = 0.05   Round = 42  logCost = 9.4448    logGamma = -5.3702  Value = -0.0322 
## elapsed = 0.13   Round = 43  logCost = -2.5372   logGamma = -5.7813  Value = -0.6678 
## elapsed = 0.13   Round = 44  logCost = -2.9539   logGamma = -5.5085  Value = -0.6678 
## elapsed = 0.05   Round = 45  logCost = 7.4134    logGamma = -1.0438  Value = -0.0356 
## elapsed = 0.05   Round = 46  logCost = 14.4325   logGamma = -7.6846  Value = -0.0305 
## elapsed = 0.13   Round = 47  logCost = -2.1343   logGamma = -3.7295  Value = -0.5576 
## elapsed = 0.06   Round = 48  logCost = 7.8754    logGamma = -6.2933  Value = -0.0458 
## elapsed = 0.09   Round = 49  logCost = 15.3679   logGamma = -5.0124  Value = -0.0237 
## elapsed = 0.11   Round = 50  logCost = 16.0208   logGamma = -5.0004  Value = -0.0271 
## elapsed = 0.05   Round = 51  logCost = 4.6881    logGamma = -0.9372  Value = -0.0390 
## elapsed = 0.19   Round = 52  logCost = 14.8217   logGamma = -3.1529  Value = -0.0271 
## elapsed = 0.05   Round = 53  logCost = 7.3646    logGamma = -3.9471  Value = -0.0356 
## elapsed = 0.05   Round = 54  logCost = 16.8260   logGamma = -8.6347  Value = -0.0339 
## elapsed = 0.11   Round = 55  logCost = 1.1090    logGamma = -4.9790  Value = -0.3186 
## elapsed = 0.12   Round = 56  logCost = -2.3999   logGamma = -1.5651  Value = -0.3492 
## elapsed = 0.13   Round = 57  logCost = 16.7573   logGamma = -5.4452  Value = -0.0305 
## elapsed = 0.06   Round = 58  logCost = 10.4150   logGamma = -2.6218  Value = -0.0288 
## elapsed = 0.05   Round = 59  logCost = 9.6455    logGamma = -5.9889  Value = -0.0356 
## elapsed = 0.08   Round = 60  logCost = 2.2210    logGamma = -3.4497  Value = -0.0814 
## elapsed = 0.05   Round = 61  logCost = 15.2401   logGamma = -7.4723  Value = -0.0288 
## elapsed = 0.41   Round = 62  logCost = 19.2740   logGamma = -4.3672  Value = -0.0407 
## elapsed = 0.05   Round = 63  logCost = 13.4626   logGamma = -7.9805  Value = -0.0288 
## elapsed = 0.40   Round = 64  logCost = 14.7152   logGamma = -1.5422  Value = -0.0356 
## elapsed = 0.06   Round = 65  logCost = 6.1301    logGamma = -1.6108  Value = -0.0339 
## elapsed = 0.11   Round = 66  logCost = 2.4430    logGamma = -6.3864  Value = -0.3254 
## elapsed = 0.09   Round = 67  logCost = 2.7034    logGamma = -5.2797  Value = -0.1203 
## elapsed = 0.05   Round = 68  logCost = 8.0164    logGamma = -1.8365  Value = -0.0339 
## elapsed = 0.05   Round = 69  logCost = 8.1646    logGamma = -1.7136  Value = -0.0322 
## elapsed = 0.05   Round = 70  logCost = 13.7216   logGamma = -7.8870  Value = -0.0254 
## elapsed = 0.06   Round = 71  logCost = 12.9190   logGamma = -6.5142  Value = -0.0288 
## elapsed = 1.51   Round = 72  logCost = 18.5956   logGamma = -0.7500  Value = -0.0390 
## elapsed = 0.06   Round = 73  logCost = 20.0000   logGamma = -9.0000  Value = -0.0288 
## elapsed = 0.11   Round = 74  logCost = 20.0000   logGamma = -6.2767  Value = -0.0271 
## elapsed = 1.21   Round = 75  logCost = 20.0000   logGamma = -1.4887  Value = -0.0322 
## elapsed = 0.07   Round = 76  logCost = 10.2905   logGamma = -0.7500  Value = -0.0356 
## elapsed = 0.06   Round = 77  logCost = 1.4013    logGamma = -0.7500  Value = -0.0559 
## elapsed = 0.07   Round = 78  logCost = 20.0000   logGamma = -7.7935  Value = -0.0254 
## elapsed = 1.78   Round = 79  logCost = 17.7941   logGamma = -1.6525  Value = -0.0356 
## elapsed = 0.05   Round = 80  logCost = 14.6522   logGamma = -9.0000  Value = -0.0288 
## elapsed = 3.34   Round = 81  logCost = 20.0000   logGamma = -0.7500  Value = -0.0407 
## elapsed = 0.05   Round = 82  logCost = 13.1277   logGamma = -4.7904  Value = -0.0288 
## elapsed = 0.06   Round = 83  logCost = 2.9465    logGamma = -0.7500  Value = -0.0356 
## elapsed = 1.09   Round = 84  logCost = 16.7555   logGamma = -0.7500  Value = -0.0373 
## elapsed = 1.75   Round = 85  logCost = 20.0000   logGamma = -3.0789  Value = -0.0305 
## elapsed = 0.07   Round = 86  logCost = 11.0889   logGamma = -7.1515  Value = -0.0322 
## elapsed = 0.06   Round = 87  logCost = 10.0852   logGamma = -3.9408  Value = -0.0339 
## elapsed = 0.08   Round = 88  logCost = 9.7792    logGamma = -8.4922  Value = -0.0458 
## elapsed = 0.06   Round = 89  logCost = 18.8025   logGamma = -9.0000  Value = -0.0288 
## elapsed = 0.10   Round = 90  logCost = 18.9055   logGamma = -6.4522  Value = -0.0288 
## 
##  Best Parameters Found: 
## Round = 49   logCost = 15.3679   logGamma = -5.0124  Value = -0.0237
  OPT_Res$Best_Par
##   logCost  logGamma 
## 15.367864 -5.012404
  as.numeric(exp(OPT_Res$Best_Par["logCost"]))
## [1] 4722571
  as.numeric(exp(OPT_Res$Best_Par["logGamma"]))
## [1] 0.006654885
      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.02881356