r Nomad分类优化(snomadr)

时间:2017-05-16 09:48:38

标签: r optimization mathematical-optimization

我正在尝试使用Nomad技术从crs包(C实现)中进行黑盒优化,这是通过snomadr函数调用的。该方法在尝试直接数值优化时有效,但在包含分类特征时出错。然而,对于分类优化的帮助并没有很好的记录,所以我很难看到我出错的地方。下面的可重现代码:

library(crs)
library(randomForest)

在randomForest& amp;虹膜数据集。

创建randomForest模型(将最后一行留作优化器的起点)

rfIris <- randomForest(x=iris[-150,-c(1)], y=unlist(iris[-150,1]))

目标函数(我们想要优化的函数)

objFn <- function(x0,model){

  preds <- predict(object = model, newdata = x0)
  as.numeric(preds)
}

测试目标函数是否有效(应该返回~6.37)

objOut <- objFn(x0=unlist(iris[150,-c(1)]),model = rfIris)

为Nomad

创建初始条件,选项列表和上限/下限
x0 <- iris[150,-c(1)]
x0 <- unlist(x0)

options <- list("MAX_BB_EVAL"=10000,
            "MIN_MESH_SIZE"=0.001,
            "INITIAL_MESH_SIZE"=1,
            "MIN_POLL_SIZE"=0.001,
            "NEIGHBORS_EXE" = c(1,2,3),
            "EXTENDED_POLL_ENABLED" = 'yes', 
            "EXTENDED_POLL_TRIGGER" = 'r0.01',
            "VNS_SEARCH" = '1')

up <- c(10,10,10,10)
low <- c(0,0,0,0)

调用优化程序

opt <- snomadr(eval.f = objFn, n = 4, bbin = c(0,0,0,2), bbout = 0, x0= x0 ,model = rfIris, opts=options,
               ub = up, lb = low)

我在选项列表中收到有关 NEIGHBORS_EXE 参数的错误消息。似乎我需要为NEIGHBORS_EXE提供一个对应于一组“扩展轮询”坐标的文件,但是不清楚这些究竟是什么。

该方法通过在选项列表中设置“EXTENDED_POLL_ENABLED”=“no”来工作,因为它会忽略分类变量并默认为数值优化,但这不是我想要的。

我还设法使用

为NEIGHBORS_EXE提取了一些其他信息
snomadr(information=list("help"="-h NEIGHBORS_EXE"))

再次,不明白'neighbours.exe'是什么意思。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

这是郑华编写R接口的回复:

  

问题是他没有正确配置参数“NEIGHBORS_EXE”。他需要准备一个可执行文件来定义邻居,将可执行文件放在调用R的文件夹中,然后将参数“NEIGHBORS_EXE”设置为可执行文件名。

如果您想继续讨论,可以通过nomad@gerad.ca与我们联系。

答案 1 :(得分:-1)

关于neighbours_exe参数,您可以参考Nomad用户指南的第7.1节 https://www.gerad.ca/nomad/Downloads/user_guide.pdf