问题描述
我正在尝试在 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 (将#修改为@)