线性回归可以使用以下几种算法:
- 标准方程
- SVD (奇异值分解法)
- 批量梯度下降 (耗费时间大,逐步稳定地走向全局最小值)
- 随机梯度下降 (花费时间短,但会持续反弹,永远达不到全局最小值)
- 小批量随机梯度下降 (在参数空间探索时更稳定,花费时间较短
如果要训练的模型有庞大的特征数量,则应选择“梯度下降法”。
标准方程:
小批量梯度下降算法
# Scikit-Learn ≥0.20 is required
import sklearn
assert sklearn.__version__ >= "0.20"# Common imports
import numpy as np
theta_path_mgd = []
n_iterations = 50
minibatch_size = 20np.random.seed(42)
theta = np.random.randn(2,1) # random initializationt0, t1 = 200, 1000
def learning_schedule(t):
return t0 / (t + t1)t = 0
for epoch in range(n_iterations):
shuffled_indices = np.r