функция оптимизации в R, которая может принимать цель, градиент и гессиан? - PullRequest
10 голосов
/ 11 ноября 2011

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

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

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

Ответы [ 2 ]

10 голосов
/ 11 ноября 2011

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

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

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

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

0 голосов
/ 09 ноября 2017

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

...