线性回归之梯度下降法和最小二乘法

回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析;如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。常用的方法有梯度下降法和最小二乘法。

1.梯度下降法(GD)

1.1 原理:

        \theta =\theta -\alpha \frac{\partial }{\partial \theta }J\left ( \theta \right )

        其中,\alpha为学习速率或步长(Learning rate)

1.2 假设函数:

        h_{\theta }\left ( x \right )=\theta _{0}+\theta _{1}x_{1}+...+\theta _{n}x_{n}

1.3 损失函数:

        J\left ( \theta \right )=\frac{1}{2m}\sum_{i=1}^{m}\left ( h_{\theta }\left ( x^{\left ( i \right )} \right )-y^{\left ( i \right )} \right )^{2} 

1.4 分析过程:

        1.4.1 批量梯度下降法(BGD)

               批量梯度下降法,是梯度下降法最常用的形式,具体做法也就是在更新参数时使用所有m个的样本来进行更新。更新公式为:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我来为您解答。 首先,最小二乘法梯度下降法都是线性回归算法的常见求解方法之一。它们的目标都是最小化预测值与真实值之间的平均误差,即最小化损失函数。下面我将分别给出两种方法的实现过程。 1. 最小二乘法实现线性回归 最小二乘法是一种基于最小化残差平方和的线性回归算法,它的数学推导可以参考统计学习方法中的第三章。在这里,我们直接给出最小二乘法的实现代码。 ```python import numpy as np class LinearRegression: def __init__(self): self.w = None def fit(self, X, y): X = np.hstack((np.ones((X.shape[0], 1)), X)) self.w = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y) def predict(self, X): X = np.hstack((np.ones((X.shape[0], 1)), X)) return X.dot(self.w) ``` 在上述代码中,fit方法中的X为输入数据,y为对应的真实值。在实现中,我们将X的第一列加上了全为1的一列,以便于计算截距项。然后,我们直接调用numpy的线性代数库求解w的最优解。最后,predict方法用于对新的数据进行预测,其中同样需要将输入数据的第一列加上全为1的一列。 2. 梯度下降法实现线性回归 梯度下降法是一种基于不断迭代更新权重的方法,通过最小化损失函数来求解线性回归的最优解。其数学推导可以参考统计学习方法中的第四章。下面是梯度下降法的实现代码。 ```python import numpy as np class LinearRegression: def __init__(self, lr=0.01, max_iter=1000): self.lr = lr self.max_iter = max_iter self.w = None def fit(self, X, y): X = np.hstack((np.ones((X.shape[0], 1)), X)) self.w = np.zeros(X.shape[1]) for i in range(self.max_iter): grad = X.T.dot(X.dot(self.w) - y) / X.shape[0] self.w -= self.lr * grad def predict(self, X): X = np.hstack((np.ones((X.shape[0], 1)), X)) return X.dot(self.w) ``` 在上述代码中,fit方法中的lr为学习率,max_iter为最大迭代次数,X为输入数据,y为对应的真实值。在实现中,我们同样将X的第一列加上了全为1的一列,以便于计算截距项。然后,我们通过不断迭代更新权重w来最小化损失函数,其中grad为损失函数对权重的梯度。最后,predict方法用于对新的数据进行预测,其中同样需要将输入数据的第一列加上全为1的一列。 至此,我已经为您分别基于最小二乘法梯度下降法实现了书上小花数量预测的线性回归算法。如有疑问,欢迎继续追问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值