浪子归家|求解线性回归应使用哪些方法?

作为任何机器学习工具箱中的基础算法集 , 可以使用多种方法来解决线性回归问题 。 在这里 , 我们讨论 。 结合代码示例 , 四种方法 , 并演示应如何使用它们 。
线性回归是一种受监督的机器学习算法 。 它基于给定的因变量(x)预测自变量(y)之间的线性关系 , 以使自变量(y)的 成本最低 。
解决线性回归模型的不同方法为了提高效率 , 可以将许多方法应用于线性回归模型 。 但是 , 我们将在这里讨论其中最常见的问题 。

  1. 梯度下降
  2. 最小二乘法/正态方程法
  3. Adam
  4. 奇异值分解(SVD)
好吧 , 让我们开始吧...
梯度下降对于初学者来说 , 解决线性回归问题的最常见 , 最简单的方法之一就是梯度下降 。
梯度下降的工作原理
现在 , 让我们假设我们以散点图的形式绘制了数据 , 并且当我们对它应用成本函数时 , 我们的模型将做出预测 。 现在 , 此预测可能非常好 , 或者可能与我们的理想预测相去甚远(这意味着其成本将会很高) 。 因此 , 为了最小化该成本(误差) , 我们对其应用了梯度下降 。
现在 , 梯度下降将使我们的假设逐渐收敛到成本 最低的全局最小值。 为此 , 我们必须手动设置alpha的值,并且假设的斜率相对于我们alpha的值而变化 。 如果alpha值较大 , 则将采取较大步骤 。 否则 , 在小阿尔法的情况下 , 我们的假设将缓慢收敛并通过小步伐收敛 。
浪子归家|求解线性回归应使用哪些方法?梯度下降公式为
浪子归家|求解线性回归应使用哪些方法?在Python中实现梯度下降
import numpy as npfrom matplotlib import pyplot#creating our dataX = np.random.rand(10,1)y = np.random.rand(10,1)m = len(y)theta = np.ones(1)#applying gradient descenta = 0.0005cost_list = []for i in range(len(y)):theta = theta - a*(1/m)*np.transpose(X)@(X@theta - y)cost_val = (1/m)*np.transpose(X)@(X@theta - y)cost_list.append(cost_val)#Predicting our Hypothesisb = thetayhat = X.dot(b)#Plotting our resultspyplot.scatter(X, y, color='red')pyplot.plot(X, yhat, color='blue')pyplot.show()首先 , 我们创建了数据集 , 然后遍历了所有训练示例 , 以最大程度地降低假设成本 。
优点:
梯度下降的重要优点是
  • 与SVD或ADAM相比 , 计算成本更低
  • 运行时间为O(kn2)
  • 与更多功能一起使用效果很好
缺点:
梯度下降的重要缺点是
  • 需要选择一些学习率 α
  • 需要多次迭代才能收敛
  • 可以卡在本地最小值
  • 如果学习率 α不合适 , 则可能无法收敛 。
最小二乘法最小二乘法也称为 正态方程 ,也是轻松求解线性回归模型的最常用方法之一 。 但是 , 这需要具有线性代数的一些基本知识 。
最小二乘法如何工作
在普通的LSM中 , 我们直接求解系数值 。 简而言之 , 我们一步就能达到光学的最低点 , 或者我们只能说一步就可以以最低的成本使我们的假设适合我们的数据 。
浪子归家|求解线性回归应使用哪些方法?LSM的公式是
浪子归家|求解线性回归应使用哪些方法?在Python中实现LSM


推荐阅读