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

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

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

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