我正在尝试从头开始使用普通最小二乘和梯度下降来学习线性回归。
我阅读了 Scikit 学习功能的文档,但没有看到调整学习率或sklearn.linear_model.LinearRegression班级时期的方法。
线性回归模型是否有标准学习率?
我假设的时期是由误差函数的变化决定的,因此取决于数据集,在收敛之前有一些预定的最大值。
是否有任何其他具有线性回归模型的好软件包,我可以使用可调节的学习率和时期来测试我自己的模型?
我正在尝试从头开始使用普通最小二乘和梯度下降来学习线性回归。
我阅读了 Scikit 学习功能的文档,但没有看到调整学习率或sklearn.linear_model.LinearRegression班级时期的方法。
线性回归模型是否有标准学习率?
我假设的时期是由误差函数的变化决定的,因此取决于数据集,在收敛之前有一些预定的最大值。
是否有任何其他具有线性回归模型的好软件包,我可以使用可调节的学习率和时期来测试我自己的模型?
线性回归模型可以通过使用在一个“回合”中解决. 它也可以使用梯度下降来解决,但不需要调整学习率或 epoch 数之类的东西,因为求解器(通常)收敛没有太多麻烦。
这是一个最小的例子R:
x0 <- c(1,1,1,1,1)
x1 <- c(1,2,3,4,5)
x2 <- c(8,4,3,1,8)
x <- as.matrix(cbind(x0,x1,x2))
y <- as.matrix(c(3,7,5,11,14))
x
y
# (X'X)^-1 X'y
beta1 = solve(t(x)%*%x) %*% t(x)%*%y
# R's regression command
beta2 = summary(lm(y ~ x[, 2:3]))
# Gradient decent
m <- nrow(y)
grad <- function(x, y, theta) {
gradient <- (1/m)* (t(x) %*% ((x %*% t(theta)) - y))
return(t(gradient))
}
# define gradient descent update algorithm
grad.descent <- function(x, maxit){
theta <- matrix(c(0, 0, 0), nrow=1) # Initialize the parameters
alpha = .05 # set learning rate
for (i in 1:maxit) {
theta <- theta - alpha * grad(x, y, theta)
}
return(theta)
}
# results without feature scaling
print(grad.descent(x,2000))
beta1
beta2
您可以使用scikit learn 中提供的SGDRegressor来调整学习率。它有多种可以调整的参数。