首页 > 解决方案 > 为什么梯度下降结果与 lm 结果相差如此之远?

问题描述

我在一些虚构的数据上玩弄这个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 的值。我相当肯定问题出在功能设置的某个地方(也就是说,我设置错误),但我不知道在哪里。

谢谢你。

标签: rmachine-learninglinear-regressiongradient-descent

解决方案


推荐阅读