【问题标题】:Hessian is -1 * Hessian when finding function maxima with optimHessian 是 -1 * Hessian 在使用 optim 找到函数最大值时
【发布时间】:2015-10-03 23:56:22
【问题描述】:

我想求函数的最大值:

Fd <- 224 * d1 + 84 * d2 + d1 * d2 - 2 * d1^2 - d2^2

我可以使用以下代码进行“详尽”搜索:

my.data <- expand.grid(x1 = seq(0, 200, 1), x2 = seq(0, 200, 1))

d1 <- my.data[,1]
d2 <- my.data[,2]
Fd <- 224 * d1 + 84 * d2 + d1 * d2 - 2 * d1^2 - d2^2

new.data <- data.frame(Fd = Fd, d1 = d1, d2 = d2)

# identify values of d1 and d2 that maximize Fd
new.data[new.data$Fd == max(new.data$Fd),]
#          Fd d1 d2
# 16157 11872 76 80

d1 = 76d2 = 80时,函数的最大值为11872

我还可以使用optim 和下面的代码找到最大值:

Fd <- function(betas) {
     b1 = betas[1]
     b2 = betas[2]
     -1 * (224 * b1 + 84 * b2 + b1 * b2 - 2 * b1^2 - b2^2)
}

optim(c(1,1), Fd, hessian = TRUE)

我将上面的函数乘以-1 以获得最大值,并注意到此代码返回的最大值是真正最大值的负数。此外,此代码返回的 Hessian 是真正的 Hessian * -1:

true.hessian <- matrix(c(-4, 1, 1, -2), nrow = 2, byrow = TRUE)
true.hessian

estimated.hessian <- -1 * true.hessian
estimated.hessian

直到现在我才意识到这一点,也没有在optim 页面上看到它。我应该担心吗?如果有,在什么情况下?

optim 语句中是否有一个选项可以在找到最大值时返回原始函数的真正 Hessian 而不是 -1 * 原始函数?或者我应该知道,当我搜索最大值(而不是搜索最小值)并自己更正 Hessian 时,Hessian 乘以 -1?

【问题讨论】:

    标签: r mathematical-optimization hessian-matrix


    【解决方案1】:

    这将在最大化函数时返回正确的 Hessian:

    Fd <- function(betas) {
    
         b1 = betas[1]
         b2 = betas[2]
    
         (224 * b1 + 84 * b2 + b1 * b2 - 2 * b1^2 - b2^2)
    
    }
    
    optim(c(1,1), Fd, control=list(fnscale=-1), hessian = TRUE)
    
    # $par
    # [1] 76.00046 79.99999
    #
    # $value
    # [1] 11872
    #
    # $counts
    # function gradient 
    #      129       NA 
    #
    # $convergence
    # [1] 0
    #
    # $message
    # NULL
    #
    # $hessian
    #           [,1]      [,2]
    # [1,] -3.999998  0.999999
    # [2,]  0.999999 -2.000000
    

    【讨论】:

      猜你喜欢
      • 2016-12-30
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 2015-04-21
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 2017-07-06
      相关资源
      最近更新 更多