创建损失函数

时间:2019-04-15 03:55:24

标签: r

我试图在下面创建损失函数。 其中tts是平方的总和,x是值1-100,t是给定的y hat。 W0 + W1应该是par(0,1),但是我在使函数正确时遇到问题,但是我不确定为什么。

x
t
loss <- function(par){
  th<-w0+w1*x
  tts<-(t-th)^2
  return(sum(tts))

}



```{r, error = TRUE}
results <- optim(par = c(0,1), fn = loss, method = 'BFGS')
results$par


1 个答案:

答案 0 :(得分:0)

要使用optim优化的任何函数的第一个参数必须是optim将搜索的参数的向量。您将此向量命名为par,但随后在函数中的任何地方都没有使用par。在下面的示例中,我将调用参数params的向量,以免将其与optim的第一个参数混合使用,您会发现它已被使用(即,损失函数使用params[1]等):

# define loss function
loss <- function(params, x, y) {
    yhat  <- params[1] + params[2]*x
    tss <- (y - yhat)^2
    return(sum(tss))
}

# generate fake data
n <- 100
x <- 1:n
w0_true <- 2
w1_true <- 3
y <- w0_true + w1_true*x + rnorm(n)

# find w0_hat and w1_hat with optim
optim(par=c(0,1), fn=loss, x=x, y=y)

# check with lm
summary(lm(y ~ x))