## 10-fold cross-validation을 통한 모수 탐색
//사용할 데이터를 생성한다.
// "kernlab" 패키지의 spam 데이터를 불러온다.
install.packages("kernlab")
library(kernlab)
data(spam)
// 전체자료를 3:1로 분할한다. (학습 : 실험)
n <- nrow(spam)
sub <- sample(1:n , round(0.75 * n)) # 1번째~n번째 관측치를 3:1 비율로 나눈다. (replace 옵션은 디폴트가 FALSE 이다.)
spam.1 <- spam[ sub, ]
spam.2 <- spam[-sub, ]
// svm() 함수에서 모수 gamma와 cost 값을 다르게 두면 모형성과가 다르게 나타날 수 있다.
// e1071 패키지의 tune.svm()으로 SVM 모형의 최적 파라미터를 찾아보자.
// 이 함수는 10-겹 교차 타당성 평가(10-fold cross-validation) 방법을 쓴다.
// gamma 값 0.1, 1 , 10
// cost 값 0.1, 1 , 10
// 총 9개 조합 중에서 최적의 (gamma, cost) 조합을 찾아보자.
// 10-fold cross-validation 하는 tune()함수를 사용
install.packages("e1071")
library(e1071)
tune.svm <- tune(svm, type~. , data= spam.1 , ranges= list(gamma=c(0.1 , 1 , 10) , cost=c(0.1 , 1 , 10))) # 시간 오래 걸림
summary(tune.svm)
// 계산시간을 알아본다. (847초