Matlab中有相当于nlminb
在R?在Matlab中最接近R的nlminb的近似值是什么?
我意识到lsqcurvefit
在Matlab中可用,但我特别需要一个使用基于派生方法的函数,理想情况下,它与nlminb
使用的方法完全相同。
nlminb
在this Stats.StackExhange.com answer中描述。
我不想使用由lsqcurvefit
强加的'trust-region-refelective'
方法来处理受限制的问题。
Matlab中有相当于nlminb
在R?在Matlab中最接近R的nlminb的近似值是什么?
我意识到lsqcurvefit
在Matlab中可用,但我特别需要一个使用基于派生方法的函数,理想情况下,它与nlminb
使用的方法完全相同。
nlminb
在this Stats.StackExhange.com answer中描述。
我不想使用由lsqcurvefit
强加的'trust-region-refelective'
方法来处理受限制的问题。
如果指定了合适的'Algorithm'
选项,则Matlab的fmincon
将使用带有约束的Quasi-Newton methods。显然R的nlminb
是基于L-BFGS-B
code。使用'interior-point'
算法逼近黑森州can be specified的这种方法:
options = optimoptions('fmincon','Algorithm','interior-point','Hessian','lbfgs');
除非你正在运行的内存,使用'lbfgs'
在默认'bfgs'
的价值是值得怀疑的。尝试一切。
在levenberg-marquardt算法中使用lsqcurvefit(即,我放弃了约束条件,但要确保最初的猜测完全在期望的边界内)也能很好地逼近nlminb?或者fmincon更接近? – Bazman
不知道。 Levenberg-Marquardt不是一种准牛顿方法。它是[Gauss-Newton](http://en.wikipedia.org/wiki/Gauss-Newton_algorithm)和梯度下降的组合。它非常强大。 'lsqcurvefit'是为数据拟合而设计的,所以如果这是你的应用程序的话。我不明白你为什么可以使用默认的''trust-region-reflective''',除非其中一个[必需的条件不被使用] [http://www.mathworks.com/help/optim /ug/lsqcurvefit.html#f192109),该函数会警告你。 – horchler
嘿,当我尝试与fminunc运行此我得到:???错误使用==> optimset at 223 OPTIONS参数的无效值算法: 必须是'活动集','信赖区域反射','内部点','内部点凸面', 'levenberg 'marquardt','trust-region-dogleg','lm-line-search'或'sqp'。 错误在==> Optimal_Lambda_fmin在64 options = optimset('Algorithm','quasi-newton','HessUpdate','bfgs','MaxFunEvals',10000,'TolFun',1e-16,'MaxIter' ,10000);虽然“准牛顿”被显示为2013b版的可用算法,但我正在使用2011a! – Bazman
您是否真的在链接的Stats.StackExhange.com问题/答案中执行最大似然估计? – horchler
不,我正在执行最小二乘法拟合,但我想测试一个新的优化器对基于衍生的一个。 – Bazman