机器学习——一元线性回归和多元线性回归

一元线性回归:梯度下降法

一元线性回归是线性回归的最简单的一种,即只有一个特征变量。首先是梯度下降法,这是比较经典的求法。一元线性回归通俗易懂地说,就是一元一次方程。只不过这里的斜率和截距要通过最小二乘和梯度下降法不断迭代找到最优解。我们先来看看运用到的代价函数:最小二乘法。
在这里插入图片描述
这其实和高中学的最小二乘法一模一样,不过值得注意的是,这里的2其实是可以消去的,这对结果的影响不大,之所以保留是因为,方便与之后求导所得的2消掉。
梯度下降法:
开始就说过,斜率和截距是要通过迭代计算求得的。因为初始化的斜率和截距所求得的代价函数(最小二乘法)的值很大,所以要通过梯度下降法来不断改变斜率和截距的值,从而达到全局最优解局部最优解。全局最优解和局部最优解,这两者是有分别的,如下图:
在这里插入图片描述
θ0和θ1分别对应斜率和截距,J(θ0,θ1)就是代价函数的值。假设红色的点代价函数的值较大,蓝色的点较小,θ0和θ1的初始值的不同会导致所位于的红色峰值不同。如果J(θ0,θ1)的值在左边的红色山峰上(黑色十角星),那么经过迭代得到的就是左边的蓝色峰底,也就是全局最优解(因为J(θ0,θ1)最小)。但是,如果J(θ0,θ1)的值在右边的红色山峰上,那么那么经过迭代得到的就是右边的蓝色峰底,即局部最优解(J(θ0,θ1)不是最小)。
重点来了,怎么进行θ0和θ1的更新呢?用到下面的公式:
在这里插入图片描述
新的值=新的值—学习率*代价函数对旧的值的求导。这就是梯度下降法的更新公式, 学习率是步长的意思,这里不过多解释。这里要注意学习率的取值:
在这里插入图片描述
梯度下降法适用于多种场景,对于线性回归的解法是这样的——
首先是求导的结果:
在这里插入图片描述
在这里插入图片描述
然后带入公式得到:
在这里插入图片描述

线性回归的原理大概就是这样了,接下来用python进行实战训练——
这里用到的数据是这样的,很多行的由逗号分隔的两列数据
在这里插入图片描述
接下来是代码部分,首先是载入数据,
在这里插入图片描述
让我们看看数据的分布图像是怎么样的?
在这里插入图片描述
定义参数
在这里插入图片描述
程序主体部分:
在这里插入图片描述在这里插入图片描述
开始测试
在这里插入图片描述
测试结果
在这里插入图片描述
在这里插入图片描述
从测试结果我们可以看到代价函数的值从最开始的5565经过迭代后变为112,而且最后显示的图像也比较符合,这就是梯度下降法在一元线性回归的应用。

一元线性回归:sklearn

其实在Python中,很多算法别人已经帮写好了,只需要直接调用即可,方便快捷,结果也是一样的。

开始都是一样的,注意改变数据的维度
在这里插入图片描述
两句话就可以完成模型的创建和拟合
在这里插入图片描述
最后输出一样的结果
在这里插入图片描述

多元线性回归:梯度下降法

现实生活中,很多事情不仅仅是一个特征,所以一元线性回归不怎么常用,多元线性回归比较常见。多元线性回归和一元线性回归的本质都是一样的,不同的是,多元线性回归的特征较多,但是核心算法不变,多元线性回归显示的图像是3d立体图,如下面的例子:
数据是两个特征(左边两个),然后得到一个结果(最右边)
在这里插入图片描述
python实现:
这里导入了画3d图的包
在这里插入图片描述
因为有两个特征,所以这里的最小二乘法要有两个参数
在这里插入图片描述
梯度更新的代码也是多加了一个参数而已:
在这里插入图片描述
运行程序:
在这里插入图片描述
在这里插入图片描述
结果显示:
在这里插入图片描述
在这里插入图片描述
从结果我们可以看到,代价函数的值从开始的47点多降到了1左右,而且图像也比较吻合。这就是梯度下降法在多元线性回归中的应用。

多元线性回归:sklearn

和一元线性回归一样,多元线性回归也可以使用sklearn进行计算。
python的实现,开始都是一样的
在这里插入图片描述
开始创建并拟合模型,这里是有两个系数
在这里插入图片描述
运行:
在这里插入图片描述
这里的结果和梯度下降法不太一样,因为sklearn的算法是标准方程法
在这里插入图片描述

以上就是一元线性回归和多元线性回归在机器学习里的一般解决方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值