如何使用带有R的遗传算法优化支持向量机的参数

Posted

技术标签:

【中文标题】如何使用带有R的遗传算法优化支持向量机的参数【英文标题】:how to optimize parameters of of the support vector machine by using the genetic algorithm with R 【发布时间】:2013-07-28 03:07:42 【问题描述】:

为了学习支持向量机,我们必须确定各种参数。

比如有cost、gamma等参数。

我正在尝试使用 R 的“GA”包和“kernlab”包来确定 SVM 的 sigma 和 gamma 参数。

我使用准确性作为遗传算法的评估函数。

我创建了以下代码,并运行了它。

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 函数时,返回以下错误。

“未找到支持向量。您可能需要更改参数”

我不明白为什么代码不好。

【问题讨论】:

如果你只有两个参数需要优化,你真的不需要GA。定义一个合理值的网格,并测试您的模型在网格上的拟合度。 你好,洪欧!感谢您立即回复。上面的代码是一个特别的例子。我计划最终将我自己的自定义内核用于 svm。我计划为 svm 使用五六个参数。如果我使用网格搜索,组合的数量是巨大的。所以,我想用GA来优化参数。 您确定sigmaC 的负值有意义吗? 嘿,文森特佐恩肯德!谢谢你的好意回复。我很抱歉。以上数值设置不完整。我仅作为代码示例给出。我将指定实际分析的确切值。 @VincentZoonekynd 我确定他们不是 【参考方案1】:

将 GA 用于 SVM 参数不是一个好主意 - 只需执行常规网格搜索就足够了(两个 for 循环,一个用于 C,一个用于 gamma 值)。

在 Rs 库 e1071 (which also provides SVMs) there is a methodtune.svm` 中使用网格搜索查找最佳参数。

示例

data(iris)
obj <- tune.svm(Species~., data = iris, sampling = "fix", 
gamma = 2^c(-8,-4,0,4), cost = 2^c(-8,-4,-2,0))
plot(obj, transform.x = log2, transform.y = log2)
plot(obj, type = "perspective", theta = 120, phi = 45)

这也表明了一件重要的事情 - 您应该以几何方式寻找良好的 C 和 gamma 值,例如。 2^xx-10,-8,-6,-6,-4,-2,0,2,4

GA是一种元优化算法,参数空间很大,参数与优化函数之间没有简单的关联。它需要调整比 SVM 更多的参数(代数、种群规模、变异概率、交叉概率、变异算子、交叉算子……),所以这里完全没用。

当然 - 正如之前在 cmets 中所述 - C 和 Gamma 必须严格为正。

有关使用 e1071 的更多详细信息,请查看 CRAN 文档:http://cran.r-project.org/web/packages/e1071/e1071.pdf

【讨论】:

以上是关于如何使用带有R的遗传算法优化支持向量机的参数的主要内容,如果未能解决你的问题,请参考以下文章

优化分类基于matlab遗传算法优化支持向量机分类(多输入多分类)含Matlab源码 QF003期

支持向量机的车载雷达点云目标识别

优化分类基于matlab遗传算法结合爬山算法优化极限学习机分类含Matlab源码 1660期

基于遗传算法优化SVM参数的热负荷预测,GA-SVM回归分析

SVM预测灰狼算法优化svm支持向量机预测matlab源码

SVM预测灰狼算法优化svm支持向量机预测matlab源码