训练线性回归模型 — “闭式”解方法、梯度下降(GD)

目录

1.训练前你需要了解

简单说,线性模型就是对输入特征加权求和,再加上一个我们称为偏置项(也称为截距项)的常数

向量化的形式:

训练模型就是设置模型参数直到模型最拟合训练集的过程。
常见的性能指标:性能指标是均方根误差(RMSE)
在实践中,将均方误差(MSE)最小化比最小化RMSE更为简单,二者效果相同

 

上面的MSE就是所谓的成本函数, 训练模型的目的就是使这个成本函数最小化
训练模型的方式有如下两种:“闭式”解方法、梯度下降(GD)

2.“闭式”解方法(直接求θ的方程)

 

我们针对y=4+3×1+高斯噪声这个模型来测试一下这个公式 

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl

mpl.rc('axes', labelsize=14)
mpl.rc('xtick', labelsize=12)
mpl.rc('ytick', labelsize=12)

X = 2 * np.random.rand(100, 1) # 生成100x1个随机数,随机数取值范围为[0,2)
y = 4 + 3 * X + np.random.randn(100, 1) # y=4+3x1+高斯噪声
plt.plot(X, y, "b.")
plt.xlabel("$x_1$", fontsize=18)
plt.ylabel("$y$", rotation=0, fontsize=18)
plt.axis([0, 2, 0, 15])
plt.show()

X_b = np.c_[np.ones((100, 1)), X]  # 特征向量增加一个x0,x0始终为1,和偏差项θ相对应
theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y) # np.linalg.inv用于对矩阵求逆
theta_best
# 输出:array([[3.74930688],[3.06809202]])

# 你也可以直接用Scikit-Learn中的线性回归模型,拿到模型的参数
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X, y)
lin_reg.intercept_, lin_reg.coef_
# 输出:(array([3.74930688]), array([[3.06809202]]))

y=4+3×1+高斯噪声这个模型中的θ0=4,θ1=3
我们得到的是θ0=3.74930688,θ1=3.06809202
非常接近,噪声的存在使其不可能完全还原为原本的函数。

现在我们就可以利用theta_best,也就是\widehat{\Theta },求预测值y=\widehat{\Theta }

X_new = np.array([[0], [2]])
X_new_b = np.c_[np.ones((2, 1)), X_new]  # 特征向量增加一个x0,x0始终为1,和偏差项θ相对应
y_predict = X_new_b.dot(theta_best) # 拿到预测值
# 绘制图形
plt.plot(X_new, y_predict, "r-", linewidth=2, label="Predictions")
plt.plot(X, y, "b.")
plt.xlabel("$x_1$", fontsize=18)
plt.ylabel("$y$", rotation=0, fontsize=18)
plt.legend(loc="upper left", fontsize=14)
plt.axis([0, 2, 0, 15])
plt.show()

该方法的缺点:特征数量比较大时,该方程的计算将极其缓慢,因为计算x^{T}x的逆时,x^{T}x是一个(n+1)×(n+1)的矩阵(n是特征数量)。

3.梯度下降(GD) 

梯度下降的中心思想就是迭代地调整参数从而使成本函数最小化。
具体来说,首先使用一个随机的θ值(这被称为随机初始化),然后逐步改进,每次踏出一步,每一步都尝试降低一点成本函数(如MSE),直到算法收敛出一个最小值。

梯度下降中一个重要参数是每一步的步长,这取决于超参数学习率。
如果学习率太低,算法需要经过大量迭代才能收敛,这将耗费很长时间。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2022年5月10日
下一篇 2022年5月10日

相关推荐