线性回归知识点梳理

🏠 线性回归可以称得上最经典的回归模型,从房子值多少钱,再到股票价格的涨跌🌈 ,疾病与各种因素的关联,广告投放的收益等,都使它擅长的领域💼 接下来让我们走进线性回归💖

1.线性回归的概念

利用 回归方程(函数) 对 一个或多个自变量(特征值)和因变量(目标值)之间 关系进行建模的一种分析方式.
y=w1x1+w2x2+....+w(n)+b= wT+b
  • w=weight
  • b=bias wT x为将权重系数转置并与x相乘,矩阵的乘法
常用于分类与回归问题

2.损失函数

loss function/cost function/目标函数/成本函数
最小二乘损失计算:

\[ J(w,b)=\sum_{i=0}^m\bigl(h\bigl(x^i\bigr)-y^i\bigr)^2 \]

均方误差MSE

\[ J(w,b)=\frac1m\sum_{i=0}^m\left(h\left(x^i\right)-y^i\right)^2 \]

平均绝对误差MAE
注: MSE与MAE既能在模型训练阶段作为损失函数求解拟合函数最优解,又可作为模型评估阶段,衡量已有模型误差大小

3.损失函数推导_正规方程法

\[ J(w) =∥Xw−y∥_2^2 \]

\[ w=(X^TX)^{-1}*X^Ty \]

优点:可以精确求解
缺点:计算量极大,X^T X的逆不存在时无解

4.梯度与导数

导数表征了函数在某点处的变化速率.
梯度(gradient)
  • 多元函数中,导数不再是一个单一的数值,而是一个向量,因为它涉及到函数对多个自变量的变化率。这个向量被称为梯度(gradient),它表示了函数在某一点上沿着各个自变量方向的变化率。
梯度的性质
  • 梯度的方向是函数在给定点增长最快的方向。
  • 梯度的模(长度)是函数在给定点处沿最大增长方向的增长率
  • 梯度是垂直于等值面的
  • 对函数求导

\[ f(\theta)=\theta_0x_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+\cdots+\theta_nx_n \]

\[ \nabla f=\begin{bmatrix}\frac{\partial f}{\partial\theta_0}\\\frac{\partial f}{\partial\theta_1}\\\vdots\\\frac{\partial f}{\partial\theta_n}\end{bmatrix}=\begin{bmatrix}x_0\\x_1\\\vdots\\x_n\end{bmatrix} \]

5.梯度下降

梯度下降公式
  • 循环迭代求当前点的梯度,更新当前的权重参数

\[ \theta_{i+1}=\theta_i-\alpha\frac\partial{\partial\theta_i}J(\theta) \] - θ_i:初始位置 α:学习率(步长),一般取值范围0.001 ~ 0.01 ∂/(∂θ_i ) J(θ) :损失函数在i处的导数

梯度下降优化过程
  • 给定学习率,步长,初始位置

  • 计算该点梯度方向并取反

  • 向梯度反方向移动

  • 重复以上步骤

  • 达到收敛条件

    • 两次差距小于指定的阈值 •
    • 达到指定的迭代次数
学习率
  • 步长决定了在梯度下降迭代过程中
  • 学习率太小,下降的速度会慢
  • 学习率太大:容易造成错过最低点、产生下降过程中 的震荡、甚至梯度爆炸
推导过程
  • 已知

\[ h_{(\theta)}=\theta_{1}x_{1}+\theta_{2}x_{2}+\cdots+\theta_{\mathrm{m}}x_{\mathrm{m}}+b\\=\theta_{0}x_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+\cdots+\theta_{\mathrm{m}}x_{\mathrm{m}} \] - 损失函数

\[ J_{(\theta)}=\frac1{2m}\sum_{i=1}^m(h_\theta(x^i)-y^i)^2 \] - 梯度下降公式

\[ \theta_{i+1}=\theta_i-\alpha\frac\partial{\partial\theta_i}J(\theta) \]

  • 对损失函数求导

\[ J'_{(\theta)}=\frac{\partial\mathrm{J}(\theta)}{\partial\theta}=\frac{2*1}{2m}\sum_{i=1}^{m}(h_{\theta}\big(x^{i}\big)-y^{i})^{2-1}*h_{\theta}\big(x^{i}\big)^{\prime} \] - 带入梯度下降公式

\[ \theta_j=\theta_j-\alpha\frac1m\sum_{i=1}^m(h_\theta(x^i)-y^i)*x_j^i \] - 参数说明

θ_j:当前损失函数的梯度位置/原函数的特征权重
m,n:行数,列数
i,j:列索引,行索引
x,y:特征向量与目标向量

6.常见梯度下降算法

全梯度下降算法 FGD
  • 每次迭代使用全样本梯度
  • (硬件要求极高,数据量大时无法实现)
随机梯度下降 SGD
  • 每次迭代随机选择并使用一个样本梯度
  • (容易受异常值影响)
小批量梯度下降算法 mini-bantch 最常用√
  • 每次迭代随机选择并使用小批量的样本梯度
  • (在硬件性能满足的情况下,每批的量应该尽可能大)
随机平均梯度下降 SAG
  • 每次迭代随机选择并使用一个样本梯度并和以往样本梯度值做平均
  • (解决异常值影响问题,但训练初期受异常值影响较大)

7.回归问题的评估方法

平方误差MSE

\[ =\frac{1}{n}\sum_{i=1}^{n}(y_{i}-\hat{y}_{i})^{2} \]

平均绝对误差MAE

\[ =\frac{1}{n}\sum_{i=1}^{n}|y_{i}-\hat{y}_{i}| \]

均方根误差

\[ RMSE=\sqrt{\frac1n\sum_{i=1}^n\left(y_i-\hat{y}_i\right)^2} \]

8.模型拟合

过拟合
  • 原因

    • 模型过于复杂,学习到了过多异常特征
    • 数据噪声大
  • 解决方案

    • 数据清洗
    • 正则化
    • 精简特征维度
    • 增加数据量
欠拟合
  • 原因

    • 模型复杂度低
    • 特征选择不当
    • 数据量不足
    • 正则化过度
  • 解决方案

    • 添加多项式特征项
    • 添加其它特征
    • 增加训练量

9.正则化

概念:在模型训练时,数据中有些特征影响模型复杂度、或者某个特征的异常值较多, 所以要尽量减少这个特征的影响(甚至删除某个特征的影响),这就是正则化。正则化是添加在损失函数中的特殊项.
L1正则化:

\[ J(w)=\mathrm{MSE}(w)+\alpha\sum_{i=1}^{n}\mid w_{i}\mid \] - • α 叫做惩罚系数,该值越大则权重调整的幅度就越大,即:表示对特征权重惩罚力度就越大 - L1 正则化会使得权重趋向于 0,甚至等于 0,使得某些特征失效,达到特征筛选的目的 - from sklearn.linear_model import Lasso

L2正则化

\[ J(w)=\mathrm{MSE}(w)+\alpha\sum_{i=1}^nw_i^2 \] - L2 正则化会使得权重趋向于 0,一般不等于 0 - from sklearn.linear_model import Ridge - L2的线性回归又称为岭回归


线性回归知识点梳理
https://linxkon.github.io/线性回归知识点梳理.html
作者
linxkon
发布于
2019年3月11日
许可协议