Python 什么是梯度下降法。梯度下降法比线性回归算法能给出更好的结果吗

Python 什么是梯度下降法。梯度下降法比线性回归算法能给出更好的结果吗,python,scikit-learn,Python,Scikit Learn,为什么我们使用梯度下降,因为sklearn可以自动为我们的数据找到最佳拟合线。梯度下降的目的是什么。 如果你想使用梯度下降法,你应该考虑在SKEXEL中使用SDR分类器,因为SKlearn给出了使用线性回归的两种方法。第一个是线性回归类,使用scipy的普通最小二乘解算器 另一个是SDR分类器类,它是梯度下降算法的一个实现。因此,要回答您的问题,如果您在SKlearn中使用SDR分类器,那么您将在幕后使用梯度下降算法的实现。来自维基百科本身 梯度下降法是一种一阶迭代优化算法 求函数的最小值。求a

为什么我们使用梯度下降,因为sklearn可以自动为我们的数据找到最佳拟合线。梯度下降的目的是什么。

如果你想使用梯度下降法,你应该考虑在SKEXEL中使用SDR分类器,因为SKlearn给出了使用线性回归的两种方法。第一个是线性回归类,使用scipy的普通最小二乘解算器


另一个是SDR分类器类,它是梯度下降算法的一个实现。因此,要回答您的问题,如果您在SKlearn中使用SDR分类器,那么您将在幕后使用梯度下降算法的实现。

来自维基百科本身

梯度下降法是一种一阶迭代优化算法 求函数的最小值。求a的局部极小值 函数使用梯度下降,一个步骤与 函数的梯度(或近似梯度)在 当前点

梯度下降只是另一种用于收敛、最大化可能性的方法。还有其他的选择,但有其局限性


sklearn中的线性回归模型只是scipy中内置的最小二乘解算器(scipy.linalg.lstsq)的一个奇特包装器。

梯度下降只不过是局部跟随坡度

如果你使用的是梯度下降法,你基本上是在考虑你试图最小化的函数的值作为一个或多个参数的函数发生了多少变化。您可以使用这些信息更好地猜测哪些参数值最有可能在下一步最小化函数

函数是二维的(因此只有2个参数决定要最小化的函数的值)。但是,它在概念上仍然是相同的(只是在幕后使用了更难的数学),并且有您想要使用的尽可能多的参数


因此,梯度下降,本质上,意味着骑自行车,让局部坡度引导你到最近的局部最小值。

直接回答你的问题:梯度下降可以得到许多模型的解决方案-从逻辑回归到神经网络,称为SKlearn(MLP)中的多层感知器

如果你只为一个简单的线性模型求解,那么使用梯度下降法(就像Basilisk的答案一样)确实有一些以性能为代价的小好处(更灵活,但速度更慢)。当我需要更多的灵活性时,我就使用它


除此之外,请注意,这个问题不是关于编程的,而是关于机器学习的,应该转到而不是堆栈溢出-尽管您可能还想从基础知识开始(想想这个-我们所说的“最佳拟合线”是什么意思?).

Basilisk哪一种是最好的线性回归模型或SDR分类器。哪一种会给你更好的结果。@ManinderSingh:我认为这有时要视情况而定,但一般来说,带梯度下降的线性回归比普通最小二乘法(OLS)好。其思想是,如果任务简单且可以使用OLS直接解决,则使用OLS更好,但如果任务更复杂,则使用梯度下降更好,因为这是一个迭代过程,可以找到回归问题的最佳解决方案。@ManinderSingh OLS不是一个迭代过程,它使用多元演算来解方程,如果你有一个大数据集,这是低效的,如果在数学上没有问题的解决方案,这将失败,相反,如果你有一个大数据集,梯度下降是一种方法(因为搜索解是一个迭代过程)即使数学上没有解决问题的方法,它也会搜索一个局部极小值,你可以认为它是解决回归问题的最佳方法。