繁体   English   中英

Matlab 的 fminunc 函数的 R 等价物是多少?

[英]What is the R equivalent of Matlab's fminunc function?

为了计算最佳 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-MeadBFGS 此外,我还从fminunc的文档中注意到它使用trust域方法进行大规模优化。 我相信有一个 R 包trust可以做同样的事情。 我建议看一下 R 的optimization任务视图

在R中,可以使用R中的函数nlminb做约束优化!

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

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

你试过ucminf包的ucminf功能了吗? 如果您的问题是不受约束的问题(并且在许多情况下,您可以轻松地将受约束的问题转换为不受约束的问题),则ucminf与 Matlab 的fmincon非常相似。 两者在使用信任区域类型监控的意义上是相似的。 fmincon (依赖于内点算法)不同, ucminf基于拟牛顿类型的算法。 但是, usminf为您提供了与fmincon相同类型的控件。 根据我的经验, ucminf非常擅长复制fmincon的输出, ucminf

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM