在线性回归空间中使用梯度下降有什么好处?看起来我们可以用解析法解决这个问题(找到成本函数最小的θ0-n),那么为什么我们还想用梯度下降法来做同样的事情呢?谢谢
我从https://stats.stackexchange.com/questions/23128/solving-for-regression-parameters-in-closed-form-vs-gradient-descent那里看到了一个很好的答案
基本上,原因是:
1.对于大多数非线性回归问题,没有封闭形式的解。
2.即使在线性回归(封闭形式解决方案可用的少数情况之一)中,使用公式也可能不切实际。下面的示例显示了这种情况发生的一种方式。
你们应该提供更多关于你们的问题的细节——你们到底在问什么——我们是在讨论一维线性回归还是多维线性回归?简单的还是广义的?
一般来说,人们为什么使用GD?
那么分析解决方案呢?嗯,我们确实使用它们,你的说法在这里是错误的(如果我们是在笼统地谈论),例如OLS方法是一个封闭的形式,分析html" target="_blank">解决方案,它被广泛使用。如果您可以使用分析解决方案,它在计算上是负担得起的(因为有时GD更便宜或更快),那么您可以,甚至应该使用它。
但这始终是一个有利和不利因素的问题-分析解决方案与模型密切相关,因此,如果您计划在将来推广/更改您的模型,则实现它们可能效率低下。有时,它们的效率低于数值近似值,有时更难实现。如果以上都不是真的-你应该使用解析解,人们真的这么做了。
总之,在以下情况下,您宁愿使用GD而不是分析溶液:
当您使用正态方程解析求解成本函数时,您必须计算:
其中X是输入观测值矩阵,y是输出向量。此操作的问题是计算nxn矩阵的逆的时间复杂性,即O(n^3),随着n的增加,可能需要很长时间才能完成。
当n为低(n
我试图在java中实现线性回归。我的假设是θ0θ1*x[i]。我试图计算θ0和θ1的值,使成本函数最小。我正在用梯度下降来找出值- 在 在收敛之前,这种重复是什么?我知道这是局部最小值,但我应该在while循环中输入的确切代码是什么? 我对机器学习非常陌生,刚开始编写基本的算法以获得更好的理解。任何帮助都将不胜感激。
我试图在MatLab中实现一个函数,该函数使用牛顿法计算最佳线性回归。然而,我陷入了一个问题。我不知道如何求二阶导数。所以我不能实施它。这是我的密码。 谢谢你的帮助。 编辑:: 我用一些纸和笔解决了这个问题。你所需要的只是一些微积分和矩阵运算。我找到了二阶导数,它现在正在工作。我正在为感兴趣的人分享我的工作代码。
我试图实现梯度下降的线性回归,如本文(https://towardsdatascience.com/linear-regression-using-gradient-descent-97a6c8700931)所述。我已经严格遵循了实现,但是经过几次迭代后,我的结果会溢出。我试图得到这个结果大约: y=-0.02x 8499.6。 代码: 在这里,它可以在围棋场上工作:https://play.go
我用JavaScript实现了一个非常简单的线性回归和梯度下降算法,但是在查阅了多个源代码并尝试了几件事情之后,我无法使它收敛。 数据是绝对线性的,只是数字0到30作为输入,x*3作为正确的输出来学习。 这就是梯度下降背后的逻辑: 我从不同的地方取了公式,包括: 乌达城深度学习基金会纳米学位的练习 吴恩达的线性回归梯度下降课程(也在这里) 斯坦福CS229讲义 我从卡内基梅隆大学找到的其他PDF幻
好的,那么这个算法到底意味着什么呢? 据我所知: i) 阿尔法:梯度下降的步骤有多大。 ii)现在,∑{hTheta[x(i)]-y(i)}:指给定θ值的总误差。 误差是指预测值{hTheta[x(i)]}与实际值之间的差值。[y(i)] σ{hTheta[x(i)]-y(i)}给出了所有训练示例中所有误差的总和。 结尾的Xj^(i)代表什么? 在为多元线性回归实现梯度下降时,我们是否在执行以下操
我正在学习机器学习/线性回归的Coursera课程。下面是他们如何描述用于求解估计OLS系数的梯度下降算法: 因此,他们对系数使用,对设计矩阵(或他们称之为特征)使用,对因变量使用。它们的收敛准则通常是RSS梯度的范数小于容差ε;也就是说,他们对“不收敛”的定义是: 我很难让这个算法收敛,我想知道在我的实现中是否忽略了一些东西。下面是代码。请注意,我还通过statsmodels回归库运行了我在其中