为了计算最佳θ,例如在逻辑回归中,我必须创建一个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'
您还可以指定分析函数来计算渐变
编辑。正如本指出的那样, fminunc
无约束优化,也可以使用 optim
功能选择 Nelder-Mead
要么 BFGS
。而且,我也从文档中注意到了 fminunc
它使用进行大规模优化 trust
区域方法。有一个R包 trust
我相信做同样的事情。我建议看看 optimization
任务视图 的
看看吧 optim
功能。它可以使用无约束最小化 method = 'L-BFGS-B'
您还可以指定分析函数来计算渐变
编辑。正如本指出的那样, fminunc
无约束优化,也可以使用 optim
功能选择 Nelder-Mead
要么 BFGS
。而且,我也从文档中注意到了 fminunc
它使用进行大规模优化 trust
区域方法。有一个R包 trust
我相信做同样的事情。我建议看看 optimization
任务视图 的
在R中,您可以使用该功能 nlminb
在R做约束优化!
nlminb(start, objective, gradient = NULL, hessian = NULL, ..., scale = 1, control = list(), lower = -Inf, upper = Inf)
开始是向量包括参数的所有初始值。 objective是成本函数或您想要最小化的任何其他函数。