【机器学习】线性回归模型
一、线性回归模型概述
- 线性回归模型 :简言之,在样本空间中是一条直线或一个平面或更高维的超平面;我们的目标是以使预测值与实际观测值之间的差异最小化。 * 三维样本空间如图所示:

- 二维样本空间:

二、线性回归模型
我们从训练集中获取了一个数据集 D=\{(x_1, y_1), (x_2, y_2), \dots, (x_n, y_n)\}, 其中每个 x_i \in \mathbb{R}^d, 输出值 y \in \mathbb{R}. 我们的任务是建立一个线性回归模型 f(x), 使得对于每一个输入 x_i, 都能够满足以下关系式的要求: f(x_i) ≈ y_i. 模型的具体形式为: f(x) = w^\top x + b, 其中权重向量 w \in \mathbb{R}^d, 偏置项 b ∈ ℝ.
为了便于讨论我们将b整合到w中:定义x_i=[x_i^1,x_i^2,…,x_i^d,1]^T以及w_i=[w_i^1,w_i^2,…,w_i^d,b]^T从而线性回归模型可表示为f(x_i )=w^T x_i
我们将每个样本的预测值与真实值记为:ε_i y_i=w^T x_i+ε_i
假设误差项ε_i遵循独立同分布的高斯分布。即:P(ε_i )=\frac{1}{\sqrt{2πσ}} exp(-\frac{ε_i^2}{2σ^2 })将误差项定义为 ε=y-x, 代入后得到:P(y |x,w)=\frac{1}{\sqrt{2πσ}} exp(-\frac{(y-w^T x)^2}{2σ^2 })在已知参数向量 \omega 与数据点 x 的前提下, 预测值为 \hat y = \omega^T x + \epsilon, 即 \hat y = wx + b
个人感觉有些困惑:当我们使用模型f(x_i )=w^T x_i时,在确定参数w后输入x_i 会得到唯一的预测值f(x_i );同时样本标签\mathbf{y}也是固定的;因此误差项\epsilon_{i}的分布自然转化为给定输入\mathbf{x}_i 下预测值与真实标签之间的关系。
进而得出最大似然函数的形式为:L(w)=∏_{i=1}^{n}P(y_i|x_i,w) = ∏_{i=1}^{n}\frac{1}{\sqrt{2πσ}} \exp(-\frac{(y_i - w'x_i)^2}{2σ²})随后对方程两边取自然对数得:l(w) = \sum_{i=1}^{n}\ln(P(y_i|x_i,w)) = \sum_{i=1}^{n}\ln(\frac{1}{\sqrt{2πσ}}) - \sum_{i=1}^{n}\frac{(y_i - w'x_ i)^ ² }{ ₂ σ²}进一步化简可得:l(w) = n·\ln(\frac{ ₁ }{\sqrt{ ₂ πσ}} ) - \frac { ₁ } { ₂ σ² } · \sum _ { i = ₁ } ^ { n }(y_ i - w'x_ i ) ^ { ₂ }
通过极大似然估计方法使目标函数取得最大值时确定参数向量w从而建立模型。因为目标函数仅与参数向量w相关其它变量视为常数则优化问题转化为最小化以下表达式:
J(w)=\frac{1}{2} \sum_{i=1}^n(y_i - w^T x_i)^2
其中系数\frac{1}{2}是为了简化求导过程而引入的。这正是我们所要解决的最小二乘问题的标准形式。
将上面式子转化为矩阵运算:J(w)=\frac{1}{2} ∑_{i=1}^n(y_i-w^T x_i )^2=\frac{1}{2} \begin{vmatrix} \begin{bmatrix} y_1-w^T x_1 \\ y_2-w^T x_2 \\ \vdots \\ y_n-w^T x_n \end{bmatrix} \end{vmatrix}^2=\frac{1}{2}\begin{vmatrix} Y-X^T W \end{vmatrix}^2=\frac{1}{2} (Y-X^T W)^T (Y-X^T W)其中:Y=[y_1,y_2,…,y_n ]^T∈R^{n×1}X=[x_1,x_2,…,x_n ]∈R^{d+1×n}x_i=[x_i^1,x_i^2,…,x_i^d,1]^T∈R^{d+1×1}w_i=[w_i^1,w_i^2,…,w_i^d,b]^T ∈R^{d+1×1}\begin{vmatrix} \end{vmatrix}为行列式
定义J(w)为线性回归模型的目标函数或损失函数;此函数为凸函数;通过确定其一阶导数等于零的位置,则可获得最佳解。
对函数J(w)进行求导运算:首先展开平方差项\frac{∂J(w)}{∂w}=\frac{1}{2}\cdot\frac{∂}{∂w}\left[(Y-X^\top W)^\top(Y-X^\top W)\right]。随后展开括号内部的内容得到\frac{1}{2}\cdot\frac{∂}{∂w}(Y^\top Y - Y^\top X^\top W - W^\top XY + W^\top XX^\top W)。注意到中间的线性项-Y^\top X^\top W -W^\top XY实际上是一个标量值且满足对称性因此可以合并为-2W^\top XY。于是上式进一步简化为\frac{1}{2}\cdot\frac{∂}{∂w}(Y^\top Y - 2W^\top XY +W^\top XX^\top W)。对每一项分别求导后得到最终结果为X(X^\top W - Y)
线性模型的学习算法主要有:最小二乘法和梯度下降法
三、最小二乘法:
- 最小二乘法是利用矩阵运算求解方程组的思想来直接求解:\frac{∂J(w)}{∂w}=0XX^T W=XY
- 若XX^T可逆:有唯一解:W^*=(XX^T )^{-1} XY=(X^T )^{-1} X^{-1} XY=(X^T )^{-1} Y
- 若XX^T不可逆:可能有多个解,选择哪一个解作为输出,将有学习算法的偏好决定,常见的做法是增加λ扰动:W^*=(XX^T+λI)^{-1} XY
- 算法步骤:
- 从数据集D出发,构建输入矩阵X和输出向量y Y=[y_1,y_2,…,y_n ]^T∈R^{n×1}X=[x_1,x_2,…,x_n ]^T∈R^{n×d+1}
- 计算伪逆(pseudo-inverse):X^+
- 返回w^*= X^+ y,得到线性回归模型为:\hat{y}= {w^*}^T X
四、梯度下降算法:
对J(w)关于w的导数为\frac{∂J(w)}{∂w}=X(X^TW-Y)=X(f(X)-Y)其别称是梯度这是一个向量表示自变量沿此方向函数增长最快因此若朝其反向移动则函数值下降最快这就是基础思想:
]
[
梯度可表示为\frac{∂J(w)}{∂w}=X(X^TW-Y)=X(f(X)-Y)展开后得到\frac{∂J(w)}{∂w_j }=∑_{i=1}^n(f(x_i )-y_i ) x_i^j
]
[
参数w沿逆着梯度方向更新规则如下:
W=W-λ \frac{∂J(w)}{∂w}
其中具体更新每一项时有:
W_i=W_i-λ \frac{∂J(w)}{∂w_j }=W_i-∑_{i=1}^n(f(x_i )-y_i ) x_i^j
其中λ代表步长系数。
