【问题标题】:How can optimization be used as a solver?优化如何用作求解器?
【发布时间】:2015-07-20 09:51:29
【问题描述】:

在关于Cross Validated (How to simulate censored data) 的问题中,我看到optim 函数被用作一种求解器而不是优化器。这是一个例子:

optim(1, fn=function(scl){(pweibull(.88, shape=.5, scale=scl, lower.tail=F)-.15)^2})
# $par
# [1] 0.2445312
# ...
pweibull(.88, shape=.5, scale=0.2445312, lower.tail=F)
# [1] 0.1500135

我在optimhere 上找到了一个教程,但我仍然无法弄清楚如何使用optim 作为求解器。我有几个问题:

  1. 什么是第一个参数(即传入的值1)?

  2. 传入的函数是什么?

  3. 我可以理解它是取 Weibull 概率分布并减去 0.15,但我们为什么要对结果进行平方呢?

【问题讨论】:

  • 来自 R 中的 ?Optim:第一次调用 optim 函数是“x”的开始猜测。 IE。告诉“求解器”从哪里开始。
  • 嗨 Repmat,谢谢。我已经做了优化,比如牛顿法,必须使用一个起始值。但是在原始帖子中,该人在一个 Optim 函数中使用了 0.5 的值,在另一个 Optim 函数中使用了 1 的值,这似乎与问题中使用的 Weibull 分布的尺度参数和形状参数的值相同。所以这就是我感到困惑的原因之一。我想知道这是否是他使用与比例和形状参数相同的起始值的偶然情况?
  • 即使您将起始值设置为 10 或 100,您仍然是正确的解决方案 - 但存在一些错误。我认为这只不过是巧合。
  • 好的,感谢您的意见。但他为什么构造函数使其平方是一个谜,
  • 其实是最小二乘法的巧妙改编。当审查率为 0.15 时,OP 想知道如何找到形状参数。这就是他减去 0.15 的原因。下一个; Optim(在 R 中)试图最小化函数,因此在效果中他告诉 R 最小化(平方)之间的差异:pweibull(paramaters) - 0.15

标签: r optimization


【解决方案1】:

我相信您指的是我的回答。让我们来看看几个点:

  • (该问题的)OP 想要从具有指定形状和尺度参数的 Weibull 分布生成(伪)随机数据,并且审查将应用于特定审查时间之后的所有数据,以及以预先指定的审查率结束。问题是一旦你指定了其中的任何三个,第四个就必然是固定的。除非您非常幸运并且您指定的值恰好完美地结合在一起,否则您不能同时指定所有四个。碰巧的是,OP 对这四个首选值并不那么幸运——不可能同时拥有所有四个,因为它们不一致。此时,您可以决定指定任意三个并求解最后一个。我提供的代码是如何做到这一点的示例。

  • ?optim 的文档中所述,第一个参数是par“[i] 要优化的参数的初始值”。

    非常松散地,优化例程的工作方式是在给定函数和输入值的情况下计算输出值。然后它“环顾四周”,看看移动到不同的输入值是否会导致更好的输出值。如果情况确实如此,它会朝那个方向移动并再次开始该过程。 (当看起来向任一方向移动都不会产生更好的输出值时,它就会停止。)

    关键是必须从某个地方开始,并且用户有义务指定该值。在每种情况下,我都从 OP 的首选值开始(尽管实际上我几乎可以从任何地方开始)。

  • 我传入的函数是?pweibull。它是Weibull distributioncumulative distribution function (CDF)。它以分位数(X 值)作为输入,并返回到该点为止已通过的分布比例。因为 OP 想要审查该分布中最极端的 15%,所以我指定 pweibull 返回 尚未通过 的比例(即 lower.tail=F 部分)。然后我从结果中减去.15

  • 因此,理想的输出(在我看来)应该是 0。但是,通过查找使pweibull 的输出optim(或实际上大多数优化器)找到最小化输出值的输入值,这就是它会做的事情。为了防止这种情况发生,我将差异平方。这意味着当优化器“走得太远”并找到一个从pweibull 产生.05 输出的比例参数时,差异为-.10(即),平方产生最终输出+.01(即,> 0,或更糟)。这会将优化器推回到使pweibull 输出(.15-.15)^2 = 0 的比例参数。

  • 一般来说,您在“优化器”和“求解器”之间所做的区别对我来说是不透明的。它们看起来像two different views of the same elephant

  • 这里另一个可能的混淆涉及优化与回归。 Optimization 只是寻找一个最小化(最大化)函数输出的输入值[s]。在regression 中,我们将数据概念化为来自stochastic 函数的数据生成过程。给定一组实现值和函数形式,我们使用优化技术来估计函数的参数,从而从噪声实例中提取数据生成过程。部分回归分析参与优化,但回归的其他方面不太关心优化,优化本身比回归大得多。例如,在我对另一个问题的回答中优化的功能是确定性的,并且没有分析“数据”。

【讨论】:

  • 非常感谢 Gung。我发现我记得的文档说 pweibull 是 PDF(概率分布函数)。我有统计学背景,我在质量 6sigma 统计领域的可靠性分析中使用了 Weibull 分布。因为通过在 weibull 中输入 2 种类型中的一个参数,对于 PDF weibull,将有一个非线性方程需要求解。如果我们正在形成一个最小二乘模型并使用优化程序,我们是否需要一个线性方程(我正在考虑最小二乘线性回归)。
  • 最小二乘算法是否适用于非线性函数?请原谅我的无知,但我只看到在线性回归中应用最小二乘来求解参数。
  • 非线性最小二乘法很常见。
  • 好的,谢谢 Repmat。现在这对我来说更有意义。正因为如此,我现在可以晚上睡觉了。非常感谢 Repmat!!!!
  • @Palu, pweibull 不是 PDF(dweibull 是)。相反,pweibullCDF。在另一个主题上,虽然寻找回归参数(beta)也是优化,但我在这里所做的不是回归。 optim 调用的优化算法是通用搜索算法。它们通常用于为没有封闭形式解决方案的模型查找 beta(线性回归确实有封闭形式解决方案),但它们并非必须如此。寻找 beta 是优化的唯一特殊应用(认为所有的狗都是哺乳动物,但并非所有的哺乳动物都是狗)。
猜你喜欢
  • 1970-01-01
  • 2020-01-06
  • 2018-12-23
  • 1970-01-01
  • 2014-11-01
  • 2022-12-14
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多