问题 什么是Matlab的fminunc函数的R等价物?


为了计算最佳θ,例如在逻辑回归中,我必须创建一个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中实现上述功能?


8687
2017-10-27 18:32


起源



答案:


看看吧 optim 功能。它可以使用无约束最小化 method = 'L-BFGS-B' 您还可以指定分析函数来计算渐变

编辑。正如本指出的那样, fminunc 无约束优化,也可以使用 optim 功能选择 Nelder-Mead 要么 BFGS。而且,我也从文档中注意到了 fminunc 它使用进行大规模优化 trust 区域方法。有一个R包 trust 我相信做同样的事情。我建议看看 optimization  任务视图 的


9
2017-10-27 18:38



我很困惑,我认为OP正在要求 不受约束 优化,你正在描述 受限 优化......? (这并不重要, optim 在任何情况下都是正确的答案。) - Ben Bolker
你是对的!我不知道由于某种原因我认为他要求无限制的优化。我添加了一个指向相同的编辑。 - Ramnath


答案:


看看吧 optim 功能。它可以使用无约束最小化 method = 'L-BFGS-B' 您还可以指定分析函数来计算渐变

编辑。正如本指出的那样, fminunc 无约束优化,也可以使用 optim 功能选择 Nelder-Mead 要么 BFGS。而且,我也从文档中注意到了 fminunc 它使用进行大规模优化 trust 区域方法。有一个R包 trust 我相信做同样的事情。我建议看看 optimization  任务视图 的


9
2017-10-27 18:38



我很困惑,我认为OP正在要求 不受约束 优化,你正在描述 受限 优化......? (这并不重要, optim 在任何情况下都是正确的答案。) - Ben Bolker
你是对的!我不知道由于某种原因我认为他要求无限制的优化。我添加了一个指向相同的编辑。 - Ramnath


在R中,您可以使用该功能 nlminb 在R做约束优化!

nlminb(start, objective, gradient = NULL, hessian = NULL, ..., scale = 1, control = list(), lower = -Inf, upper = Inf)

开始是向量包括参数的所有初始值。 objective是成本函数或您想要最小化的任何其他函数。


1
2018-03-19 23:34