梯度下降算法返回错误值

问题描述

我正在尝试在 R 中实现梯度下降,但我一直得到的 theta 值太大而无法适应该函数

batchGD <-function(data,x,y,imax)
{
  #max is set to 10000
  #generate random theta values
  theta0 <- runif(1,1)
  theta1 <- runif(1,1)
  #learning rate
  alpha <- 0.0001

  #vectorize dataframe columns
  X <- dplyr::pull(data,x)
  Y <- dplyr::pull(data,y)

  n <- length(X)
  #predict y
  yhat <- theta1 * X + theta0
  iter = 0
  while(iter<imax)
  {
   #calculate new thetas
    temp0 <- theta0 - alpha * ((1/n) * (sum(yhat - Y)))
    temp1 <- theta1 - alpha * ((1/n) * (sum((yhat - Y)*X)))

    #update new thetas
    theta0 <- temp0
    theta1 <- temp1

   iter <- iter + 1
  }
  thetas <- c(theta1,theta0)
  return(thetas)

我曾尝试降低我的 alpha,或提高我的迭代或两者兼而有之,但我的 theta 值总是离最佳值很远。

我不确定我的公式是否有问题?我错过了什么吗? 请帮忙

编辑:我尝试映射成本函数以查看算法如何执行,但成本值只会上升。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)