为了计算最佳 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'
您也可以指定一个分析函数来计算梯度
编辑。正如本正确指出的那样,fminunc
进行无约束优化,这也可以使用optim
功能选择Nelder-Mead
or BFGS
。此外,我还从文档中注意到fminunc
它使用进行大规模优化trust
区域方法。有一个R包trust
我相信它也能起到同样的作用。我建议看一下optimization
任务视图 http://cran.r-project.org/web/views/Optimization.html of R.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)