优化不适合R

时间:2017-10-28 13:17:50

标签: r optimization

我尝试使用R中的函数U48meas优化Th0U8measoptim,但正如您在下面的代码中看到的那样,结果相当差:结果{{1 }}和U48calc分别远离目标Th0U8calcU48meas值。

有没有人有关于如何改善健康的提示?

Th0U8meas

1 个答案:

答案 0 :(得分:0)

嗯,通常我不会认为这是一个答案,但是评论的时间太长了。

  

如何改善健康的提示?

  • 其中两项估计是在边界上。以下是估算值与您给出的界限的对比情况:

         est lbound   ubound
    1.00e-12  1e-14  1.0e-12  estimate = upper bound
    1.00e+04  1e+04  6.0e+04  estimate = lower bound
    1.22e+00  1e+00  1.3e+00  nicely in the middle
    

对边界的估计通常很糟糕。你应该考虑边界的来源,并确保它们准确设置。

  • 参数具有极其不同的比例。这对optim不利,当任何参数的1单位变化与另一参数的1单位变化具有大致相似的效果时,基于梯度的方法效果最佳。您可以提供parscale参数以自动重新缩放它们。 ?optim帮助说" 优化是在par/parscale上执行的,这些应该具有可比性,因为任何元素的单位变化都会产生缩放值的单位变化&#34 ;.这些不必接近精确,但让参数范围接近同一数量级可能会有很大帮助。

  • 与无界参数值相比,边界总是不太理想。与重新缩放类似,您可以缩放参数以生成边界(0,1),然后应用logit变换将其映射到(-Inf,Inf)。然后,您可以估计这些无界参数并应用逆变换以获得原始比例的值。这为您提供了更大的灵活性,因为您可以使用任何方法,而不仅仅是L-BFGS。

  • 使用其他control参数来尝试诊断问题并提高性能。打开trace可以更好地了解正在发生的事情。也许减少公差并增加最大迭代次数。

  • 请改用optimxoptimoptimx的作者John Nash建议人们使用他的for pixel in polygon: # predetermined using a basic scan-line polygon-fill algorithm edge_distances = {} for edge in polygon: distance = calc_point_to_line_distance(pixel, edge) # simple formula, constant time edge_distances[edge] = distance colour = calc_pixel_colour(edge_distances) # runs in O(num_edges) time set_pixel_colour(pixel, colour) 软件包以获得更好的性能和稳健性。