一、线性回归简介
1.定义与公式
线性回归是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。
-
特点:只有一个自变量的情况称为单变量回归,多余一个自变量情况的叫做多元回归
-
通用公式:
y = β 0 + β 1 x 1 + β 2 x 2 + . . . + β p x p + ε y = β₀ + β₁x₁ + β₂x₂ + ... + βₚxₚ + ε y=β0+β1x1+β2x2+...+βpxp+ε
其中,y是因变量(目标值),x₁、x₂、…、xₚ是自变量(特征值),β₀、β₁、β₂、…、βₚ是模型的参数(权重),ε是误差项,表示模型预测值与实际观测值之间的差异,它是一个随机项,表示模型无法完全准确地解释因变量的变异性。 -
举例:
- 期末成绩 = 0.7 × 考试成绩 + 0.3 × 平时成绩
- 房子价格 = 0.02 × 中心区域的距离 + 0.04 × 城市一氧化氮浓度 + (-0.12 × 自住房平均房价)+ 0.254 × 城镇犯罪率
上面两个例子,可以看到特征值与目标值之间建立了一个关系,这个关系可以理解为线性模型。
2.线性回归的特征与目标的关系分析
线性回归当中主要有两种模型,一种是线性关系,另一种是非线性关系。
-
线性关系:
-
单变量线性关系:
-
多变量线性关系:
-
-
非线性关系:
3.线性回归应用场景
- 房价预测
- 销售额度预测
- 贷款额度预测
二、线性回归的损失和优化
绿色线是预测的结果,红色线是真实结果。
1.损失函数(又称最小二乘法)
-
公式:
L ( β 0 , β 1 , . . . , β p ) = Σ i ( y i − ( β 0 + β 1 x 1 i + β 2 x 2 i + . . . + β p x p i ) ) 2 L(β₀, β₁, ..., βₚ) = Σᵢ(yᵢ - (β₀ + β₁x₁ᵢ + β₂x₂ᵢ + ... + βₚxₚᵢ))² L(β0,β1,...,βp)=Σi(yi−(β0+β1x1i+β2x2i+...+βpxpi))2
其中,L表示损失函数,yᵢ表示第i个样本的实际观测值,x₁ᵢ、x₂ᵢ、…、xₚᵢ 表示第 i 个样本的自变量(输入变量),β₀、β₁、β₂、…、βₚ表示模型的参数(权重)。如何去减少这个损失,使我们预测的结果更加准确些?这里可以通过一些优化算法去优化(其实是数学当中的求导功能)回归的总损失。
2.优化算法
如何去求模型当中的参数β,使得损失最小?(目的是找到最小损失对应的参数值β)
- 线性回归经常使用的两种优化算法
- 正规方程
- 梯度下降法
三、正规方程和梯度下降法
1.正规方程
正规方程(Normal Equation)是一种通过解析方法求解线性回归模型参数的方法。它是基于最小化平方损失函数的线性回归问题的闭式解。
-
公式:
𝒃 = ( 𝑿 T 𝑿 ) − 1 𝑿 T 𝒚 𝒃 = (𝑿ᵀ𝑿)⁻¹ 𝑿ᵀ𝒚 b=(XTX)−1XTy
其中,𝑿是输入特征矩阵,包含每个样本的自变量值,𝒚是观测值向量,包含每个样本的因变量值,𝒃是参数向量,包含线性回归模型的参数估计值。 -
举例:
运用正规方程方法求解参数:
-
正规方程的API
- sklearn.linear_model.LinearRegression(fit_intercept=True)
- 参数fit_intercept:是否计算偏置
- 属性:
- LinearRegression.coef_:回归系数
- LinearRegression.intercept:偏置
- sklearn.linear_model.LinearRegression(fit_intercept=True)
-
正规方程的优点和缺点
-
优点:
它能够一次性计算出最佳参数估计值,而无需使用迭代算法进行优化。
-
缺点:
- 正规方程的计算复杂度为O(𝑛³)(其中𝑛是特征的数量),当特征数量较大时,计算量可能会很大。
- 如果特征矩阵𝑿不满秩(即存在特征间的线性相关性),则正规方程求解过程中的矩阵求逆操作可能会导致数值不稳定性。
因此,在实际应用中,对于较小规模的线性回归问题,正规方程是一种简单有效的求解方法。而对于较大规模的问题,或存在特征相关性的情况,通常使用迭代优化算法(如梯度下降)来求解线性回归模型的参数。
-
2.梯度下降法
梯度下降(Gradient Descent)是一种常用的迭代优化算法,用于求解各种机器学习和优化问题,包括线性回归。它通过迭代的方式逐步调整模型参数,以最小化损失函数 。
-
公式:
θ表示参数向量 ,J(θ)表示损失函数关于小批量训练样本的参数θ的梯度, α表示学习率 ,α不能太大也不能太小,太小的话,可能导致迟迟走不到最低点,太大的话,会导致错过最低点。
我们需要朝着下降最快的方向走,自然就是负的梯度的方向。所以梯度前加一个负号,就意味着朝着梯度相反的方向前进。
-
基本思想:
在每一次迭代中,计算损失函数关于参数的梯度(即导数),然后沿着负梯度的方向更新参数,以使损失函数逐渐减小。梯度指向了损失函数上升最快的方向,因此取负梯度方向可以使损失函数下降。
-
具体步骤:
- 初始化参数:选择初始的参数值(权重)作为算法的起点。
- 计算梯度:根据当前参数值计算损失函数关于参数的梯度,即求解损失函数对各个参数的偏导数。
- 更新参数:沿着梯度的反方向调整参数值,使损失函数减小。这个调整的幅度由学习率(learning rate)控制,学习率决定了每一步参数更新的大小。
- 重复迭代:重复执行步骤2和步骤3,直到达到停止迭代的条件,例如达到最大迭代次数或损失函数下降的幅度小于某个阈值。
通过不断地迭代更新参数,梯度下降算法会逐渐接近损失函数的最小值,从而得到最佳的参数估计值。
-
梯度下降算法的API:
- sklearn.linear_model.SGDRegression(loss=“squared_loss”,fit_intercept=True,learning_rate=“invscaling”,eta0=0.01)
- 参数:
- loss:损失模型,squared_loss指的是最小二乘法
- fit_intercept:是否计算偏置
- learning_rate: 学习率(learning rate)参数,用于控制每次参数更新的步长大小。
- constant : 固定学习率,即每次迭代中保持学习率不变 。 学习率的初始值由eta0参数指定。
- optimal : 根据数据自适应地调整学习率。 在训练过程中根据公式
eta = eta0 / pow(t, power_t)
进行更新,其中t
是迭代次数,power_t
是控制学习率下降速度的指数。 - invscaling : 根据迭代次数调整学习率 , 在训练过程中根据公式
eta = eta0 / pow(t, power_t)
进行更新,其中t
是迭代次数,power_t
是控制学习率下降速度的指数。
- 属性:
- SGDRegression.coef_:回归系数
- SGDRegression.intercept:偏置
-
梯度下降法的优缺点:
- 优点:
- 广泛适用性:梯度下降法可以用于各种机器学习和优化问题,特别适用于连续可微的目标函数。
- 全局最优解:在损失函数是凸函数的情况下,梯度下降法可以找到全局最优解。对于非凸函数,梯度下降法可以找到局部最优解。
- 直观易懂:梯度下降法的基本原理简单直观,容易理解和实现 。
- 可并行化:梯度下降法的迭代过程可以自然地并行化,可以加速计算过程。
- 缺点:
- 学习率的选择:梯度下降法的性能很大程度上依赖于学习率的选择,过大或过小的学习率都可能导致算法性能下降。
- 局部最优解:梯度下降法对于非凸函数存在收敛到局部最优解的风险,可能无法找到全局最优解。
- 特征缩放的要求:梯度下降法对输入特征的尺度敏感,如果特征之间的尺度差异较大,可能需要进行特征缩放以获得更好的性能。
- 计算复杂度:对于大规模数据和复杂模型,梯度下降法的计算复杂度较高,需要大量的计算资源和时间。
- 优点:
3.正规方程和梯度下降的对比
正规方程 | 梯度下降 |
---|---|
不需要学习率 | 需要选择学习率 |
一次运算得出 | 需要迭代求解 |
需要计算方程,时间复杂度O(n3) | 特征数量较大可以使用 |
4.算法选择依据
- 小规模数据
- 正规方程:(不能解决拟合问题)
- 岭回归
- 大规模数据
- 梯度下降法
- 全梯度下降算法(FG)
- 随机梯度下降算法(SG)
- 小批量梯度下降算法(mini-batch)
- 随即平均梯度下降算法(SAG)
- 梯度下降法