2012-07-18 89 views
3

多元函数我有我想要优化过一个参数的多元函数:优化中的R

cost <- function(theta, X, y) { 
    m <- nrow(X) 
    X <- as.matrix(X) 
    J <- sum(-y * log(sigmoid(X %*% theta)) - (1-y) * log(1 - sigmoid(X %*% theta)))/m; 
    return(J) 
} 

优化它,我使用的Optim功能。首先,我创建一个包装,然后使用的Optim功能来优化包装函数:

# X and y initialized before 
initial_theta <- rep(0,ncol(X)) 
wrapper <- function(theta) cost(theta, X=X, y=y) 
o <- optim(initial_theta, wrapper) 

如何优化与Optim一个多元函数,而无需创建附加的功能呢?

+3

你不需要包装的话 - '的Optim(initial_theta,成本,X = X,Y = Y)'应该工作 – 2012-07-18 16:40:23

+0

@BenBolker - 谢谢你,它的工作原理。它张贴作为一个答案,如果你希望你的答案被接受。 – 2012-07-18 16:42:59

+0

向前并接受@达诚公司,它说了同样的事情。 – 2012-07-18 16:43:41

回答

3

optim需要一个...参数,它将任何添加输入传递给感兴趣的函数。所以,你不需要创建只要一个新的功能要优化过的参数是感兴趣的函数的第一个参数。

optim(initial_theta, cost, X = X, y = y) 

应该提供与创建额外功能相同的功能。