为了计算最佳θ,例如在逻辑回归中,我必须创建一个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
可以做同样的事情。我建议您看看R的optimization
task view。
关于r - Matlab的fminunc函数的R等效项是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7920590/