r - 为什么梯度下降结果与 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 的值。我相当肯定问题出在功能设置的某个地方(也就是说,我设置错误),但我不知道在哪里。
谢谢你。
解决方案
推荐阅读
- flutter - flutter 如何从 API 获取谷歌地图标记并在谷歌地图上绘图
- flutter - Flutter 安装问题,无法接受带有字母 Y 或 y 的许可证
- python - 提交时Django和React总是错误请求
- javascript - 具有复制的类属性的 JS 编辑变量
- python - 为什么我的测试功能没有激活用户?
- c# - ClientWebsocket SSL 证书验证失败
- python - Python中DF的水平条形图
- azure-devops - Azure DevOps 管道任务以删除 AppService 设置中的密钥
- java - Cassandra - 启动期间遇到异常(java.lang.UnsatisfiedLinkError):找不到依赖库(jna626409071981896679.dll)
- javascript - 使用 sinon 存根私有函数