サポート ベクター マシンを学習するには、さまざまなパラメーターを決定する必要があります。
たとえば、コストやガンマなどのパラメータがあります。
Rの「GA」パッケージと「kernlab」パッケージを使用して、SVMのシグマとガンマのパラメータを決定しようとしています。
遺伝的アルゴリズムの評価関数として精度を使用します。
次のコードを作成し、実行しました。
library(GA)
library(kernlab)
data(spam)
index <- sample(1:dim(spam)[1])
spamtrain <- spam[index[1:floor(dim(spam)[1]/2)], ]
spamtest <- spam[index[((ceiling(dim(spam)[1]/2)) + 1):dim(spam)[1]], ]
f <- function(x)
{
x1 <- x[1]
x2 <- x[2]
filter <- ksvm(type~.,data=spamtrain,kernel="rbfdot",kpar=list(sigma=x1),C=x2,cross=3)
mailtype <- predict(filter,spamtest[,-58])
t <- table(mailtype,spamtest[,58])
return(t[1,1]+t[2,2])/(t[1,1]+t[1,2]+t[2,1]+t[2,2])
}
GA <- ga(type = "real-valued", fitness = f, min = c(-5.12, -5.12), max = c(5.12, 5.12), popSize = 50, maxiter = 2)
summary(GA)
plot(GA)
ただし、GA関数を呼び出すと、次のエラーが返されます。
「サポート ベクターが見つかりません。パラメータを変更してください」
なぜコードが悪いのか理解できません。