线性回归

线性回归

回归分析

回归分析是一种预测性的建模技术,**它研究的因变量(目标)和自变量(预测器)之间的关系。**这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。通常使用曲线/线来拟合数据点,目标是使曲线到数据点的差异最小。

理论概述

线性回归是回归问题的一种,线性回归假设目标值与特征之间线性相关,即满足一个多元一次方程
一元线性回归分析:只包含一个自变量和一个因变量,且二者的关系可用一条直线近似表示。
多元线性回归:包含两个或两个以上的自变量和一个因变量,且因变量与自变量之间是线性关系

通过构建损失函数,来求解损失函数最小时的参数 和 。一元线性回归通
长我们可以表达成如下公式:
y ^ = w x + b \hat{y}=wx+b y^​=wx+b
y ^ \hat{y} y^​是预测值,自变量x和因变量y是已知的。
我们的目的是:预测新增一个x,其对应的y是多少。因此,为了构建这个函数关系,目标是通过已知数据点,求解线性模型中w和b两个参数。

目标/损失函数

损失函数用来评价模型的预测值真实值不一样的程度。
损失函数越好,通常模型的性能越好。对于不同的模型,使用不同的损失函数。在应用中,通常通过最小化损失函数求解和评估模型。

对与最小参数,需要定量化一个目标函数式,使得计算机可以在求解过程中不断地优化。

针对任何模型求解问题,都是最终都是可以得到一组预测值 ,对比已有的
真实值 ,数据行数为 ,可以将损失函数定义如下:
线性回归
即预测值与真实值之间的平均的平方距离,
统计中一般称其为MAE(mean square error)均方误差。把之前的函数式代入损失函数,并且将需要求解的参数w和b看做是函数L的自变量,可得:

线性回归现在的任务是求解最小化L是 ω \omega ω和b的值,

即核心目标优化式为:

线性回归

两种求解方式:

1)梯度下降(gradient descent,GD):
对自变量进行不断的更新(针对 ω \omega ω和b偏导),使得目标函数不断逼近最小值的过程
ω ← ω − α ∂ l ∂ ω \omega\gets\omega-\alpha\frac{\partial l}{\partial\omega} ω←ω−α∂ω∂l​
b ← b − α ∂ l ∂ ω b\gets b- \alpha\frac{\partial l}{\partial\omega} b←b−α∂ω∂l​

一元线性回归函数推导过程

采用梯度下降的方法

设线性回归函数 y ^ = ω x + b \hat{y} = \omega x+b y^​=ωx+b
构造损失函数(loss):
L ( ω , b ) = 1 2 n ∑ i = 1 n ( ω x i + b − y i ) 2 L(\omega , b)= \frac{1}{2n}\sum_{i=1}^{n} (\omega x_{i} + b - y_{i})^2 L(ω,b)=2n1​i=1∑n​(ωxi​+b−yi​)2

思路:通过梯度下降法不断更新 ω \omega ω和b,当损失函数的值特别小时,就得到
了我们最终的函数模型

step1.求导:
线性回归

step2.更新 θ 0 \theta_0 θ0​和 θ 1 \theta_1 θ1​:
线性回归

step3.代入损失函数,求损失函数的值:
若得到的值小于 ε \varepsilon ε(一般 ε \varepsilon ε为0.01或0.001这样的小数),退出
否则,返回step1

梯度下降存在的问题

线性回归

梯度下降的三种方法

批量梯度下降法(Batch Gradient Descent)

批量梯度下降法每次都使用训练集中的所有样本更新参数。它得到的是一个全局最优解,但是每迭代一步,都要用到训练集所有的数据。
优点:可以得到全局最优解
缺点:样本数据集大时,训练速度慢。

随机梯度下降法(Stochastic Gradient Descent)

随机梯度下降法每次更新都从样本随机选择1组数据,因此随机梯度下降比
批量梯度下降在计算量上会大大减少。SGD有一个缺点是,其噪音较BGD
要多,使得SGD并不是每次迭代都向着整体最优化方向。而且SGD因为每
次都是使用一个样本进行迭代,因此最终求得的最优解往往不是全局最优
解,而只是局部最优解。但是大的整体的方向是向全局最优解的,最终的
结果往往是在全局最优解附近。

优点:训练速度较快。
缺点:过程杂乱,准确度下降。

小批量梯度下降法(Mini-batch Gradient Descent)

小批量梯度下降法对包含n个样本的数据集进行计算。综合了上述两种方
法,既保证了训练速度快,又保证了准确度。

举例分析

波士顿房价预测

房屋价格与面积(数据在下面表格中):
线性回归
线性回归
线性回归
线性回归
线性回归
线性回归

输出结果

线性回归

线性回归

线性回归

线性回归

多元线性回归(采用梯度下降方式)

理论分析

设置一个回归方程:
h θ = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 + . . . + θ n x n h_\theta = \theta_{0} +\theta_{1}x_{1}+\theta_{2}x_{2}+\theta_{3}x_{3}+...+\theta_{n}x_{n} hθ​=θ0​+θ1​x1​+θ2​x2​+θ3​x3​+...+θn​xn​
添加一个列向量
线性回归

这样方程可以写为:
h θ = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 + . . . + θ n x n h_\theta = \theta_{0}x_{0} +\theta_{1}x_{1}+\theta_{2}x_{2}+\theta_{3}x_{3}+...+\theta_{n}x_{n} hθ​=θ0​x0​+θ1​x1​+θ2​x2​+θ3​x3​+...+θn​xn​
既不会影响到方程的结果,而且使x与 θ \theta θ的数量一致以便于矩阵计算。

为了更方便表达,分别记为:

线性回归
这样方程就变为:
线性回归

由回归方程推导出损失方程:
线性回归

梯度下降

线性回归

鸢尾花数据集

线性回归
线性回归

先导入需要的库
线性回归
线性回归

线性回归
线性回归
线性回归

线性回归
线性回归

线性回归
线性回归

三种数据集

训练集

参与训练,模型从训练集中学习经验,从而不断减小训练误差。这个最容
易理解,一般没什么疑惑。

验证集

不参与训练,用于在训练过程中检验模型的状态,收敛情况。验证集通常
用于调整超参数,根据几组模型验证集上的表现决定哪组超参数拥有最好
的性能。
同时验证集在训练过程中还可以用来监控模型是否发生过拟合,一般来说
验证集表现稳定后,若继续训练,训练集表现还会继续上升,但是验证集
会出现不升反降的情况,这样一般就发生了过拟合。所以验证集也用来判
断何时停止训练

测试集

不参与训练,用于在训练结束后对模型进行测试,评估其泛化能力。在之
前模型使用【验证集】确定了【超参数】,使用【训练集】调整了【可训
练参数】,最后使用一个从没有见过的数据集来判断这个模型的好坏。
线性回归

交叉验证

线性回归

回归模型评价指标

线性回归

参考:
1.https://www.cnblogs.com/geo-will/p/10468253.html
2.https://blog.csdn.net/weixin_44613063/article/details/88659981
3.https://blog.csdn.net/HaoZiHuang/article/details/104819026
4.https://blog.csdn.net/qq_43673118/article/details/105490502

上一篇:控制论个人学习笔记-线性系统的校正方法&现代控制论基础


下一篇:【Math for ML】解析几何(Analytic Geometry)