我正在使用gradDescent
包来处理一些组成的数据,以便对此有所了解。据我了解,当我将线性方程生成的相同数据应用于线性回归和梯度下降时,应该会得到相似的结果,但是输出却大不相同。
尽管lm
给了我对三个系数(所有系数都设为5)的合理估计,但梯度下降似乎正在起作用。我认为所讨论的数据集不需要进行特征缩放,因此我没有使用它,因此估计的系数约为10 ^ 22。当我添加特征缩放比例时,所有估计的系数都下降到1以下。无论哪种方式,我似乎都无法获得接近预期值的结果。
(我尝试关闭会话并重新开始,但是结果是相同的。)
这是数据集的生成方式:
N <- 100
n <- 10
x1 <- runif(N, 12, 40)
x2 <- runif(N, 10, 35)
x3 <- runif(N, 8, 25)
coef <- 5
dev <- 5
y <- coef*x1 + coef*x2 + coef*x3 + rnorm(N, 0, dev)
data <- as.data.frame(cbind(x1, x2, x3, y))
names(data) <- c("x1", "x2", "x3", "y")
我正在将gradDescent
用于梯度下降算法,并使用以下版本。
gradDescentR.learn(data, featureScaling = TRUE,
scalingMethod = "MINMAX", learningMethod = "GD", control = list(),
seed = NULL)
gradDescentR.learn(data, featureScaling = FALSE,
scalingMethod = "MINMAX", learningMethod = "GD", control = list(),
seed = NULL)
我希望gradDescent
返回约5的系数值。我相当确定问题出在功能设置中(即我设置不正确),但是我不知道在哪里。
谢谢。