Подтвердить что ты не робот

Что такое эквивалент 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?

4b9b3361

Ответ 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)

Начало - это вектор, включающий все начальное значение параметров. Цель - это функция стоимости или любая другая функция, которую вы хотите свести к минимуму.