原文链接:http://tecdat.cn/?p=22828 

次要优化办法的疾速概述

咱们介绍次要的优化办法。咱们思考以下问题 .

无导数优化办法

Nelder-Mead办法是最驰名的无导数办法之一,它只应用f的值来搜寻最小值。过程:

  1. 设置初始点x1,...,xn+1
  2. 对点进行排序,使得f(x1)≤f(x2)≤⋯≤f(xn+1)。
  3. 计算xo作为x1,...,xn的中心点。
  4. 反射
  • 计算反射点xr=xo+(xo-xn+1)。
  • 如果f(x1)≤f(xr)<f(xn),那么用xr替换xn+1,转到步骤2。
  • 否则转到第5步。

扩大:

  • 如果f(xr)<f(x1),那么计算扩大点xe=xo+(xo−xn+1).
  • 如果f(xe)<f(xr),那么用xe替换xn+1,转到步骤2。
  • 否则用xr替换xn+1,转到第2步。
  • 否则转到第6步。

膨胀:

  • 计算膨胀点xc=xo+(xo-xn+1).
  • 如果f(xc)<f(xn+1),那么用xc替换xn+1,进入第2步。
  • 否则转到第7步.

缩小:

  • 对于i=2,...,n+1,计算xi=x1+(xi-x1).

Nelder-Mead办法在optim中可用。默认状况下,在optim中,=1,=1/2,=2,=1/2。

Hessian-free 优化办法

对于润滑的非线性函数,个别采纳以下办法:部分办法联合直线搜寻工作的计划xk+1=xk+tkdk,其中部分办法将指定方向dk,直线搜寻将指定步长tk∈R。

基准

为了简化优化办法的基准,咱们创立一个函数,用于计算所有优化办法的现实预计办法。

benchfit <- function(data, distr, ...)

散布的数值阐明

散布的对数似然函数及其梯度

理论值

散布的密度由以下公式给出

其中示意函数。咱们记得(a,b)=(a)(b)/(a+b)。在这里,一组观测值(x1,...,xn)的对数似然性为

与a和b无关的梯度为

R实现

咱们最小化了对数似然的相同_数_:实现了梯度的相同_数_。对数似然和它的梯度都不被输入。

function(par) loglikelihood(par, fix.arg ,...)

 样本的随机生成 

#(1) beta散布n <- 200x <- rbeta(n, 3, 3/4)lnl(c(3, 4), x) #测验
   ``````hist(x, prob=TRUE)

拟合Beta散布

定义控制参数。

list(REPORT=1, maxit=1000)

用默认的优化函数调用,对于不同的优化办法,有梯度和无梯度。

fit(x, "beta", "mle", lower=0,...)

 

在束缚优化的状况下,咱们通过应用对数阻碍容许线性不平等束缚。

应用形态参数1和2的exp/log变换,来确保形态参数严格为正。

#取起始值的对数lapply(default(x, "beta"), log)#为新的参数化从新定义梯度exp <- function(par,...) beta(exp(par), obs) * exp(par)fit(x, distr="beta2", method="mle")

 

#返回到原始参数化expopt <- exp(expopt)

而后,咱们提取拟合参数的值、相应的对数似然值和要最小化的函数的计数及其梯度(无论是实践上的梯度还是数值上的近似值)。

数值考察的后果

结果显示在以下表格中。1)没有指定梯度的原始参数(-B代表有界版本),(2)具备(实在)梯度的原始参数(-B代表有界版本,-G代表梯度),(3)没有指定梯度的对数转换参数,(4)具备(实在)梯度的对数转换参数(-G代表梯度)。

 

 

 咱们绘制了实在值(绿色)和拟合参数(红色)四周的对数似然曲面图。

llsurface(min.arg=c(0.1, 0.1), max.arg=c(7, 3),           plot.arg=c("shape1", "shape2"), nlev=25,          plot.np=50, data=x, distr="beta", back.col = FALSE)points(unconstropt\[1,"BFGS"\], unconstropt\[2,"BFGS"\], pch="+", col="red")points(3, 3/4, pch="x", col="green")
   

咱们能够用bootdist函数来模仿bootstrap 复制的状况。

boot(fit(x, "beta", method="mle", optim.method="BFGS"))

plot(b1)abline(v=3, h=3/4, col="red", lwd=1.5)

负二项分布的演示

负二项分布的对数似然函数及其梯度

理论值

负二项分布的p.m.f.由以下公式给出

其中示意函数。存在另一种示意办法,即=m(1-p)/p或等价于p=m/(m+)。因而,一组观测值(x1,...,xn)的对数似然性是

绝对于m和p的梯度是

R实现

咱们最小化对数似然性的相同_数_:实现梯度的相同_数_。

  m <- x\[1\]  p <- x\[2\]  c(sum(psigamma(obs+m)) - n\*psigamma(m) + n\*log(p),    m*n/p - sum(obs)/(1-p))
   

样本的随机生成

#(1) 散布trueval <- c("size"=10, "prob"=3/4, "mu"=10/3)x <- rnbinom(n, trueval\["size"\], trueval\["prob"\])hist(x, prob=TRUE, ylim=c(0, .3))

拟合负二项分布

定义控制参数并做基准。

list(trace=0, REPORT=1, maxit=1000)fit(x, "nbinom", "mle", lower=0)

在束缚优化的状况下,咱们通过应用对数阻碍容许线性不平等束缚。

应用形态参数1和2的exp/log变换,来确保形态参数严格为正。

#对起始值进行变换mu <- size / (size+mu)arg <- list(size=log(start), prob=log(start/(1-start)))#为新的参数化从新定义梯度function(x)  c(exp(x\[1\]), plogis(x\[2\]))fit(x, distr="nbinom2", method="mle")

#返回到原始参数化expo <- apply(expo, 2, Trans)
   

而后,咱们提取拟合参数的值、相应的对数似然值和要最小化的函数的计数及其梯度(无论是实践上的梯度还是数值上的近似值)。

数值考察的后果

结果显示在以下表格中。1)没有指定梯度的原始参数(-B代表有界版本),(2)具备(实在)梯度的原始参数(-B代表有界版本,-G代表梯度),(3)没有指定梯度的对数转换参数,(4)具备(实在)梯度的对数转换参数(-G代表梯度)。

 

 咱们绘制了实在值(绿色)和拟合参数(红色)四周的对数似然曲面图。

surface(min.arg=c(5, 0.3), max.arg=c(15, 1),          )points(trueval , pch="x")
   

咱们能够用bootdist函数来模仿bootstrap 复制的状况。

boot(fit(x, "nbinom", method="mle")

 

plot(b1)abline(v=trueval)
   

论断

基于后面的两个例子,咱们察看到所有的办法都收敛到了同一个点。

然而,不同办法的函数评估(和梯度评估)的后果是十分不同的。此外,指定对数似然性的实在梯度对拟合过程没有任何帮忙,通常会减慢收敛速度。一般来说,最好的办法是规范BFGS办法或对参数进行指数变换的BFGS办法。因为指数函数是可微的,所以渐进个性仍被保留(通过Delta办法),但对于无限样本来说,这可能会产生一个小的偏差。


最受欢迎的见解

1.Matlab马尔可夫链蒙特卡罗法(MCMC)预计随机稳定率(SV,Stochastic Volatility) 模型

2.基于R语言的疾病制图中自适应核密度估计的阈值抉择办法

3.WinBUGS对多元随机稳定率模型:贝叶斯预计与模型比拟

4.R语言回归中的hosmer-lemeshow拟合优度测验

5.matlab实现MCMC的马尔可夫切换ARMA – GARCH模型预计

6.R语言区间数据回归剖析

7.R语言WALD测验 VS 似然比测验

8.python用线性回归预测股票价格

9.R语言如何在生存剖析与Cox回归中计算IDI,NRI指标