В R есть очень удобный пакет оптимизации под названием optim а>. Вы можете передать ему функцию, начальную позицию, а иногда и другой управляющий ввод, и это оптимизирует вашу функцию.
Я пытаюсь использовать это с моделью h2o.ai следующим образом:
make_model <- h2o.stuff(x,y,training, parameters)
f <- function(x,make_model){ h2o.predict() %>% ...}
f2 <- function(x){f(x,make_model)}
optim(start, function=f2, ...)
Когда я запускаю тестовые примеры, они работают:
f2(start_point)
f2(known_values)
Они возвращают именно то, что я ищу. Они возвращают те значения, которые должны.
Когда я пытаюсь запустить optim для функции, она не хочет работать и выдает следующую ошибку:
java.lang.IllegalArgumentException: Test/Validation dataset has no columns in common with the training set
java.lang.IllegalArgumentException: Test/Validation dataset has no columns in common with the training set
at hex.Model.adaptTestForTrain(Model.java:1383)
at hex.Model.adaptTestForTrain(Model.java:1222)
at hex.Model.score(Model.java:1509)
at water.api.ModelMetricsHandler$1.compute2(ModelMetricsHandler.java:396)
at water.H2O$H2OCountedCompleter.compute(H2O.java:1557)
at jsr166y.CountedCompleter.exec(CountedCompleter.java:468)
at jsr166y.ForkJoinTask.doExec(ForkJoinTask.java:263)
at jsr166y.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:974)
at jsr166y.ForkJoinPool.runWorker(ForkJoinPool.java:1477)
at jsr166y.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)
Error: java.lang.IllegalArgumentException: Test/Validation dataset has no columns in common with the training set
Called from: doTryCatch(return(expr), name, parentenv, handler)
Теперь мне кажется, что оптимизация на основе C и h2o.ai на основе Java не хотят работать вместе. Функция немного нелинейна, но она оценивает известные точки напрямую и правильно.
Есть ли достойный способ обойти это, не меняя архитектуры?