线性回归算法以及Python实现_51CAE_新浪博客

这篇博客介绍了线性回归的基本概念、误差评估方法以及最小化误差的两种策略——正规方程和梯度下降法。线性回归是机器学习的基础,通过求解回归系数来建立预测模型,而误差最小化则是寻找最佳拟合直线的关键。文章还涉及了一元和多元线性回归的差异,并简单讨论了梯度下降的迭代过程。

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

认识回归

回归是统计学中最有力的工具之一。​回归的目的就是建立一个回归方程用来预测目标值,回归的求解就是求这个回归方程的回归系数。预测的方法当然十分简单,回归系数乘以输入值再全部相加就得到了预测值。

回归最简单的定义是,给出一个点集D,用一个函数去拟合这个点集,并且使得点集与拟合函数间的误差最小,如果这个函数曲线是一条直线,那就被称为线性回归,如果曲线是一条二次曲线,就被称为二次回归。

线性回归是机器学习中最基本的一个算法。


线性回归

线性回归也被称为最小二乘法回归(Linear Regression, also called Ordinary Least-Squares (OLS) Regression)。它的数学模型是这样的:

y = b + m* x+e

其中,b 被称为常数项或截距;m 被称为模型的回归系数或斜率;e 为误差项。a 和 b 是模型的参数。

当然,模型的参数只能从样本数据中估计出来:

y'= b' + m'* x

线性回归包括一元线性回归和多元线性回归,一元的是只有一个 x 和一个 y。多元的是指有多个 x 和一个 y。一元线性回归其实就是去找到一条直线,这条直线能以最小的误差 (Loss) 来拟合数据。 


误差评估

如上图所示,横坐标表示x,纵坐标表示y,我们希望找到一条直线,距离每个点都很近,最好所有的点都在直线上(但是多数情况下都不现实)。因此,实际只能让这些点尽量离找到的直线近一点,即保证每个点和直线的距离总和最小。

每个点和直线的距离可表示为:

​那么,所有点与直线距离的和即为误差,为简单起见,将绝对值转化为平方,则误差可表示为:

这里,i 表示第 i 个数据,N 表示总的样本个数。一般我们还会把 Loss 求和平均,来当作最终的损失。


误差最小

我们要怎么去找到最能拟合数据的直线,即最小化误差呢? 一般有两个方法:

(1)Normal Equation(也叫普通最小二乘法)

上面讲了我们定义的损失,其中的 x,y,i,N 都已知,那么我们就可以把这个方程看作是 m 和 b 的方程。作为一个 m 和 b 的二次方程,那么求 Loss 最小值的问题就转变成了求极值问题,这个高数学过的都应该知道点。

求极值

 

令每个变量的偏导数为零,求方程组的解,这个是很基础的高数问题了。解方程组得到 m 和 b 的值,即确定了直线的方程。​

(2)梯度下降法(Gradient Descent)

没有梯度下降就没有现在的深度学习,这是一个神奇的算法。 最小二乘法可以一步到位,直接算出 m 和 b,但他是有前提的,具体我有点记不清了,好像是需要满秩什么的。梯度下降法和最小二乘不一样,它通过一步一步的迭代,慢慢的去靠近到那条最优直线。 最小二乘法里面我们提到了两个偏导数,分别为 ​

梯度不就是上面那两个公式呗。现在梯度有了,那每次滑多远呢,一滑划过头了不久白算半天了吗,所以还得定义步长,用来表示每次滑多长。这样我们就能每次向下走一点点,再定义一个迭代值用来表示滑多少次,这样我们就能慢慢的一点点的靠近最小值了,不出意外还是能距离最优值很近的。

梯度算法实现

每次向下滑要慢慢滑,就是要个步长,我们定义为learning_rate,往往很小的一个值。向下滑动的次数,就是迭代的次数,我定义为num_iter,相对learning_rate往往很大。定义好这两个,我们就可以一边求梯度,一边向下滑了。就是去更新m和b。

这里用了加号,很多人会误以为梯度下降就要减,但是其实梯度本身是有方向的,所以这里直接加就可以。​

如下图所示,我们做的初始化

​然后就是优化器,优化器就是去做梯度下降

它里面的具体步骤,如下

里面的compute_gradient方法就是去计算梯度做参数更新

本篇博客内容主要来自优快云博客(http://blog.youkuaiyun.com/sxf1061926959/article/details/66976356),并结合其他网络资料适当整理后作为学习笔记供博主日后学习参考,如有冒犯,请联系博主。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值