Функция оптимизации в R, которая может принимать объективный, градиентный, и hessian?

У меня есть сложная целевая функция, которую я ищу для оптимизации. Оптимизация требует значительного времени для оптимизации. К счастью, у меня есть градиент и функция hessian функции.

Есть ли в R пакет оптимизации, который может принимать все три этих входа? Класс "optim" не принимает гессиан. Я просмотрел страницу задач CRAN для оптимизации, и ничего не появляется.

Для чего я могу выполнить оптимизацию в MATLAB с помощью fminunc с аргументами 'GradObj' и 'Hessian'.

Ответ 1

Я думаю, что пакет trust, который оптимизирует область доверия, сделает трюк. Из документации trust вы видите, что

Эта функция выполняет минимизацию или максимизацию функции используя алгоритм области доверия... (он принимает) функцию R, которая вычисляет значение, градиент и гессиан функции, которая должна быть минимизирована или максимизируется, и возвращает их как список со значением компонентов, градиент и гессиан.

На самом деле, я думаю, он использует тот же алгоритм, который используется fminunc.

По умолчанию fminunc выбирает крупномасштабный алгоритм, если вы поставляете градиент в весе и установите GradObj на 'on' с помощью optimset. Этот алгоритм является подпространственным методом доверительных областей и основывается на внутренне отражающий метод Ньютона, описанный в [2] и [3]. каждый итерация включает приближенное решение большой линейной системы используя метод предустановленных сопряженных градиентов (PCG). Видеть Алгоритм большой шкалы fminunc, методы Trust-Region для нелинейных Метод минимизации и условного конъюгатного градиента.

Ответ 2

Оба stats::nlm() и stats::nlminb() принимают аналитические градиенты и hessians. Обратите внимание, однако, что предыдущий (nlm()) в настоящее время не обновляет аналитический градиент правильно, но это исправлено в текущей версии разработки из R (поскольку R-devel, svn rev 72555).