为了计算最佳θ,例如在逻辑回归中,我必须创建一个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-MeadBFGS来实现。此外,我还从fminunc文档中注意到,它使用trust区域方法进行了大规模优化。我相信有一个R包trust可以做同样的事情。我建议您看看R的optimization task view

关于r - Matlab的fminunc函数的R等效项是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7920590/

10-12 23:10