为什么梯度下降结果与lm结果相差甚远?

时间:2019-04-23 08:06:44

标签: r machine-learning linear-regression gradient-descent

我正在使用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的系数值。我相当确定问题出在功能设置中(即我设置不正确),但是我不知道在哪里。

谢谢。

0 个答案:

没有答案