机器学习-线性回归-梯度下降法-03

发布时间 2023-12-11 20:20:54作者: jack-chen666

1. 梯度下降法

梯度:


是一个theta 与 一条样本x 组成的 映射公式


可以看出梯度的计算量主要来自于 左边部分

所有样本参与 -- 批量梯度下降法
随机抽取一条样本参与 -- 随机梯度下降法
一小部分样本参与 -- 小批量 梯度下降法

2. epoch 与 batch

epoch:一次迭代 w t --> w t+1
batch:一次迭代中 一部分样本

例如: 背诵唐诗300首
循环背诵20次
n_sample = 300 (样本总量)
n_epoch = 20 (循环20次)

一次300首太多了 50首 50首的进行
batch_size = 50 (批次的大小 50)
n_batch = 6 (6个批次)

3. 代码实现

import numpy as np

# 创建数据集
X = 2 * np.random.rand(100, 1)  # (100, 1)  0-1之间均匀分布
y = 4 + 3 * X + np.random.randn(100, 1)  # 这里的 4,3需要求解的

X_b = np.c_[np.ones((100, 1)), X]

# 超参
learn_rate = 0.001
n_iterations = 10000


# 初始化theta
theta = np.random.randn(2, 1)


for _ in range(n_iterations):
    gradient = X_b.T.dot((X_b.dot(theta) - y))  # 梯度的计算公式
    theta = theta - learn_rate*gradient  # 梯度下降法 为什么将梯度下降法 因为梯度的前面 有个负号

print(theta)  # 可以看到 接近于 (4, 3)