(ai生成自用!!!!)
目录
一、批梯度下降算法
使用批梯度下降算法求解线性回归模型的参数 aa 和 bb(即模型 y=ax+by=ax+b)的步骤如下:
1. 定义损失函数
在线性回归中,损失函数通常使用均方误差 (MSE),其公式为:
其中 nn 是样本数量,yiyi 是真实值,xixi 是特征值。
2. 计算梯度
我们需要对损失函数分别对 aa 和 bb 求偏导数:
3. 更新参数
使用学习率 α 更新参数 a 和 b:
4. 迭代训练
重复执行计算梯度和更新参数的步骤,直到收敛(损失函数变化很小)。
5. 实现代码
以下是使用 Python 实现批梯度下降算法求解线性回归参数的示例代码:
import numpy as np
# 生成示例数据
np.random.seed(42)
X = np.random.rand(100, 1) * 10 # 特征
y = 3 * X.squeeze() + 7 + np.random.randn(100) # 线性关系加噪声
# 初始化参数
a = 0.0
b = 0.0
learning_rate = 0.01
n_iterations = 1000
n = len(y)
# 批梯度下降算法
for _ in range(n_iterations):
# 预测值
y_pred = a * X.squeeze() + b
# 计算梯度
grad_a = -2/n * np.sum(X.squeeze() * (y - y_pred))
grad_b = -2/n * np.sum(y - y_pred)
# 更新参数
a -= learning_rate * grad_a
b -= learning_rate * grad_b
print(f"学习到的参数: a = {a}, b = {b}")
说明
- 数据生成:这里生成了一个随机的线性关系数据集,用于训练模型。
- 参数初始化:初始参数 aa 和 bb 设置为0。
- 学习率:通过设置学习率来控制参数更新的速度。
- 迭代更新:在每次迭代中计算当前模型的预测值,计算梯度,然后更新参数。
X.squeeze()