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