Что такое эквивалент R функции Matlab fminunc?
Чтобы вычислить оптимальный тета, например, в логистической регрессии, я должен создать costFunction (функция, которая должна быть минимизирована), которая затем передается fminunc для получения оптимальной тета.
Кроме того, если градиент costFunction может быть вычислен, я устанавливаю параметр "GradObj" на 'on', используя
options = optimset('GradObj','on');
и закодируйте функцию costFunction, чтобы он возвращал в качестве второго выходного аргумента значение градиента g из X.
Тогда я даю
[theta, cost] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
где X - матрица данных, а y - ответ. Как я могу реализовать выше в R?
Ответы
Ответ 1
Взгляните на функцию optim
. Он может выполнять неограниченное минимизацию с помощью method = 'L-BFGS-B'
, и вы также можете указать аналитическую функцию для вычисления градиента
ИЗМЕНИТЬ. Как указал Бен, fminunc
выполняет неограниченную оптимизацию, что также может быть достигнуто с помощью функции optim
, выбирая Nelder-Mead
или BFGS
. Более того, я также заметил из документации fminunc
, что он делает крупномасштабную оптимизацию с использованием методов области trust
. Существует R-пакет trust
, который, я считаю, делает то же самое. Я бы рекомендовал взглянуть на представление optimization
задачи в R.
Ответ 2
В R вы можете использовать функцию nlminb
в R, чтобы сделать ограниченную оптимизацию!
nlminb(start, objective, gradient = NULL, hessian = NULL, ..., scale = 1, control = list(), lower = -Inf, upper = Inf)
Начало - это вектор, включающий все начальное значение параметров. Цель - это функция стоимости или любая другая функция, которую вы хотите свести к минимуму.