2012-07-18 122 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) 

應該提供與創建額外功能相同的功能。