0

R でコスト関数を最小化するために ucminf 関数を適用できません。

ここに私の費用関数があります:

costfunction <- function(X,y,theta){ 
m <- length(y);
J = 1/m * ((-t(y)%*%log(sigmoid(as.matrix(X)%*%as.matrix(theta))))  - ((1-t(y))%*%log(1-sigmoid(as.matrix(X)%*%as.matrix(theta)))))
}

これが私のシグモイド関数です:

sigmoid <- function(t){
g = 1./(1+exp(-t))  
} 

ここに私の勾配関数があります:

gradfunction <- function(X,y,theta){ 

grad =  1/ m * t(X) %*% (sigmoid(as.matrix(X) %*% as.matrix(theta) - y));

}

私は次のことをしようとしています:

library("ucminf")
data <- read.csv("ex2data1.txt",header=FALSE)
X <<- data[,c(1,2)]
y <<- data[,3]
qplot(X[,1],X[,2],colour=factor(y))
m <- dim(X)[1]
n <- dim(X)[2]
X <- cbind(1,X)
initial_theta <<- matrix(0,nrow=n+1,ncol=1)
cost <- costfunction(X,y,initial_theta)
grad <- gradfunction(X,y,initial_theta)

ここでucminfを呼び出して、最小コストと theta の値を見つけます。これを行う方法がわかりません。

4

2 に答える 2

0

再現可能な例を提供しなかったため、必要なコードを正確に提供することは困難ですが、一般的な考え方は、関数を次のように渡すことですucminf

ucminf(start, costfunction, gradfunction, y = y, theta = initial_theta)

は、2 つの関数startに関して引き渡されたときに結果を生成する必要がある初期開始値のベクトルである必要があることに注意してください。X通常、ランダムな開始値を使用します (例: runif)。

于 2013-05-22T20:28:16.893 に答える