为了计算最佳 theta,例如在逻辑回归中,我必须创建一个 costFunction(要最小化的函数),然后将其传递给 fminunc 以获得最佳 theta。 此外,如果可以计算 costFunction 的梯度,我将“GradObj”选项设置为“on”,使用
options = optimset('GradObj','on');
并对 costFunction 进行编码,使其作为第二个输出参数返回 X 的梯度值 g。 然后我给
[theta, cost] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
其中 X 是数据矩阵,y 是响应。如何在 R 中实现上述内容?
最佳答案
看看 optim
函数。它可以使用 method = 'L-BFGS-B'
进行无约束最小化,您也可以指定一个分析函数来计算梯度
编辑。正如 Ben 正确指出的那样,fminunc
进行无约束优化,这也可以使用 optim
函数选择 Nelder-Mead
或 来实现BFGS
。此外,我还从 fminunc
的文档中注意到它使用 trust
区域方法进行了大规模优化。我相信有一个 R 包 trust
可以做同样的事情。我建议您查看优化
task view的 R.
关于r - Matlab 的 fminunc 函数的 R 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7920590/