线性回归算法梳理-1

本文深入探讨了线性回归的基础,包括有监督学习、过拟合与欠拟合的概念,以及交叉验证的重要性。介绍了线性回归的原理,通过最小化误差平方和确定最佳模型。同时,讨论了线性回归的损失函数和目标函数,并阐述了梯度下降、牛顿法和拟牛顿法等优化策略。最后,提到了线性回归的评估指标及sklearn库的相关参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 机器学习的一些概念

1.1 有监督、无监督

①. 有监督学习 :训练数据有标记信息,其中分类与回归属于监督学习。
②. 无监督学习 :训练数据没有标记信息,代表有聚类。

1.2 过拟合、欠拟合

偏差(Bias)指预测输出与真实标记的差别。偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力。
方差(Variance)指一个特定训练集训练得到的函数,与所有训练集得到平均函数的差的平方再取期望。方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。方差表示所有模型构建的预测函数,与真实函数的差别有多大。
示例
如果一个模型,在训练集上的预测结果就不佳,指标偏低,那一般是欠拟合的问题。
如果在训练集上指标很好,而在测试集上指标偏低,则很可能是过拟合问题。甚至有时候,在训练集和测试集上效果都不错,一到真实环境却预测误差较大,这种情况也是过拟合
对于两种不同的问题,解决办法各不相同。

欠拟合多数情况下是因为选定模型类型太过简单,特征选取不够导致的。
----相应的解法则是针对性的选择更复杂的模型,增加特征,减小正则项比重

过拟合则相反,可能是模型太过复杂,特征选择不当(过多或组合不当)造成。
----相应的解法则是针对性的选择更简单的模型,减少特征,增大正则项比重

但有一点,无论是欠拟合还是过拟合问题,增大训练数据量都可能会有所帮助。

通常来讲,模型欠拟合时,预测结果不准,偏差较大;但对于不同训练集,训练得到的模型都差不多(对训练集不敏感),此时的预测结果差别不大,方差小。模型过拟合时,模型含有训练集的信息,预测的准确度一般不高,偏差较大;模型对训练集敏感,在与总体同分布的相同大小的不同训练样本上训练得到的模型,在验证集上的表现不一,预测结果相差大,方差大。上述关系如下表所示:

名称过拟合欠拟合备注
偏差较大一定大主要针对验证集而言
方差一定大一定小主要针对验证集而言

1.3 交叉验证

交叉验是用来验证分类器的性能的一种统计分析方法,基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。用交叉验证的目的是为了得到可靠稳定的模型。
常见的交叉验证方法有:留一法、留出法和K-折交叉验证。

2 线性回归的原理

什么是线性回归?
我们假设有一组数据,其型态为 y=y(x),其中 x={0, 1, 2, 3, 4, 5}, y={0, 20, 60, 68, 77, 110}
如果我们要以一个最简单的方程式来近似这组数据,则非一阶的线性方程式y=ax+b莫属。先将这组数据绘图如下

图中的斜线是我们随意假设一阶线性方程式 y=20x,用以代表这些数据的一个方程式。我们可用 MATLAB 计算这个线性方程式的 y 值与原数据 y 值间误差平方的总合为 573。
如此任意的假设一个线性方程式并无根据,如果换成其它人来设定就可能采用不同的线性方程式;所以我们须要有比较精确的方式来决定理想的线性方程式。我们可以要求误差平方的总合为最小,也就是在将训练样本的x逐个代入后,得出的 y’ 与真实的 y 整体的差异最小,具体的差异用(y’-y)2表示,以此作为决定理想的线性方程式的准则,这样的方法就称为最小平方误差(least squares error)或是线性回归

线性回归可以被看做是样本点的最佳拟合直线。

3 线性回归损失函数(代价函数)、目标函数

上一小节我们提到,具体的一个样本的 y 与 y’ 的差异用(y’-y)2表示,那么如何衡量这个整体差距,我们用下面这个公式,称之为代价函数(Cost Function)\ 损失函数(Lost Function),形式如下(其中 m 为样本的个数)
在这里插入图片描述
在y=ax+b这个模型函数中,a 和 b 是常量参数,x 是自变量,y 是因变量。但到了J(a,b)中,x (i) 和 y (i) 是常量参数(也就是 m 个样本各自的 x 和 y 值),而 a 和 b 成了自变量,J(a,b) 是因变量。能够让因变量 J(a,b) 取值最小的自变量 a 和 b,就是最好的 a 和 b。该公式也即为线性回归的目标函数,即最终需要优化的函数。目标函数是模型优化的目标,可以是“损失函数 L ”或者“损失函数 L +正则项 R ”。
线性回归的目标是使得代价函数J(a,b) 最小。代价函数也被称作平方误差函数,有时也被称为平方误差代价函数。我们之所以要求出误差的平方和,是因为误差平方代价函数,对于大多数问题,特别是回归问题,都是一个合理的选择。还有其他的代价函数也能很好地发挥作用,但是平方误差代价函数可能是解决回归问题最常用的手段了。

4 优化方法(梯度下降法、牛顿法、拟牛顿法等)

4.1 梯度下降法

梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数的最小值。

梯度下降背后的思想是:开始时我们随机选择一个参数的组合,计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。
优点:得到全局最优解,易于并行实现;缺点:当样本数目很多时,训练过程会很慢。

梯度下降算法公式为:在这里插入图片描述
对于J(a,b) 而言,有参数 a、b,函数 J 分别对自变量 a 和 b 取偏微分的结果是:
在这里插入图片描述
在这里插入图片描述
所以,我们要做的是:
step1:任意给定a和b初值

a=0;b=0;

step2:用梯度下降法求解a和b,伪代码如下:

repeat until convergence{
在这里插入图片描述}
当下降的高度小于某个指定的阈值(近似收敛至最优结果),则停止下降。
将上面展开的式子代入上面的代码,就是:
repeat until convergence{
在这里插入图片描述
for i=1 to m{​}
以上我们给出线性回归模型y=ax+b的用梯度下降法求解目标函数的过程,通用的线性回归模型函数(如下)用梯度下降法求解目标函数的过程同理。在这里插入图片描述

4.2 牛顿法、拟牛顿法

从本质上去看,牛顿法是二阶收敛,所以牛顿法更快。牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法看得更远一点,能更快地走到最底部。牛顿法具有全局思想。从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面。
牛顿法基于使用函数法 l (θ) 的二次近似。通过使用 l 在x0的泰勒级数展开式,取该函数关于 x 的导数,令它等于 0,然后使用如下公式更新 θ,直到它收敛于极小值。

用梯度算子替换一阶导数,用海塞矩阵 H 替换二阶导数,可以把牛顿法推广到多元数据。迭代公式为:

牛顿法是迭代算法,虽然收敛速度快,但是需要计算海塞矩阵的逆矩阵,而且有时目标函数的海塞矩阵无法保持正定,从而使得牛顿法失效。为了克服这两个问题,人们提出了拟牛顿法。这个方法的基本思想是:不用二阶偏导数而构造出可以近似海塞矩阵(或海塞矩阵的逆)的正定对称阵。不同的构造方法就产生了不同的拟牛顿法。

5 线性回归的评估指标

回归评价指标常用的有MSE(均方误差)、RMSE(均方根误差)、解释方差(Explianed variance score)、MAE(平均绝对误差)、R-Squared(R2,决定系数)
对应的公式为:

公式Formula
在这里插入图片描述 在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

6 sklearn参数详解

LinearRegression(fit_intercept=True,normalize=False,copy_X=True,n_jobs=1)

参数解释
fit_intercept布尔型,默认为true。是否有截据,如果没有则直线过原点。
normalize布尔型,默认为false。是否将数据归一化。
copy_X布尔型,默认为True。当为True时,X会被copied,否则X将会被覆写。
n_jobs整型, 默认值为1。计算时使用的核数。如果选择-1则代表使用所有的处理器。这一参数对于目标个数>1(n_targets>1)且足够大规模的问题有加速作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值