Nelder-Mead优化方法

Gün*_*nal 1 optimization r

R,optim命令使用Nelder-Mead方法来优化函数.一篇文章指出

The parameters to be estimated are optimized over initial values. As a result,
different initial values will lead to different estimates.
Run Code Online (Sandbox Code Playgroud)

它是什么意思the parameters to be estimated are optimized over initial values

Ari*_*man 10

@ GavinSimpson要求引用您的消息来源是有充分根据的.

也就是说,这是一个基本的优化概念.通常,您必须为参数选择起始值(或者例程必须为您猜测它们).因为优化通常会找到局部最小值或最大值,如果您开始接近不是全局最小值的局部最小值,您可能会找到本地最小值,而不是全局最小值.

这是一个例子.首先,创建并绘制一个6阶多项式(具有多个局部最小值).然后从三个不同点开始优化.

f <- function(x)  {
  1/30 * (x+3.5)*(x+2)*(x+1)*(x-1)*(x-3)*(x-4) + 2
}
vec <- seq(-4,4, .01)
plot( f(vec) ~ vec, type="l" )

for( startX in c(-3.5,-.5,3) ) {
  opt <- optim( list(x=startX), fn=f )
  points( x=opt$par, y=opt$value, pch="x", col="red"  )
}
Run Code Online (Sandbox Code Playgroud)

看看起始值如何重要?

情节

NB我意识到Nelder-Mead并不适合单变量分布,但我在这里使用它是为了简单,因为它说明了这一点.