首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

看我用梯度下降优化方法在Python中实现单边量线性回归!纯干

回归是特征空间中数据或数据点连续分类的一个例子.弗朗西斯·加尔顿在1886年发明了回归线的用法[1]。

顾名思义,“线性”,这意味着机器学习算法的假设本质上是线性的,或者只是一个线性方程。耶!这确实是一个线性方程。在单变量线性回归中,目标变量依赖于一个单一的特征或变量。

单变量线性回归的假设如下:

上述假设也可以用矩阵乘法格式写成:

有一个与假设相关的成本函数,依赖于参数θ_0和θ_1。

一般情况下,线性回归的成本函数如下:

现在这两个参数,θ_0和θ_1必须假定这个代价函数的值(即成本)假定最小值。因此,现在的基本目标是找出代价最小的θ_0和θ_1的值,或者简单地求出成本函数的最小值。

梯度下降是最突出的凸优化技术之一,它可以找到函数的极小值。梯度下降算法如下:

有两种梯度下降方法:

随机梯度下降

间歇梯度下降

用随机梯度下降实现线性回归:

在随机梯度下降中,运行梯度下降算法,每次从数据集中取一个实例。

实现是通过创建三个具有不同操作的模块来完成的:

>假设():它是计算和输出目标变量的假设值的函数,给定θ(θ_0和θ_1)和特征,X作为输入。假设()的实施情况如下:

=>梯度下降():是执行随机梯度下降算法的函数,该算法采用θ_0和θ_1、α、迭代次数(Num_Iters)、假设值(H)的当前值,特征集(X)和目标变量集(Y)作为输入输出优化的θ(θ_0和θ_1)。梯度_下降()的实现如下:

=>SGD_线性回归():它是以特征集(X)、目标变量集(Y)和学习率为输入的主函数,输出最终优化的θ,即θ_0和θ_1的值,代价函数几乎达到最小跟随随机梯度下降。

现在,转到一个实际的实践数据集,其中包含关于公司利润如何取决于城市人口的信息。数据集可在GitHub链接上使用,“https:/github.com/Navoneel1092283/单变量_regression.git”.

数据读取到Numpy数组:

数据可视化:可以使用散点图来可视化数据集。

散点图数据可视化看起来像是-

散点图

使用3-模线性回归-SGD:

泰塔的产出是:

SGD后的Theta

散点图上θ的可视化:

得到的θ的回归线可视化可以在散点图上进行:

回归线可视化的结果是:

SGD后的回归线可视化

采用批处理梯度下降实现线性回归:

在批处理梯度下降中,运行梯度下降算法,同时从数据集中获取所有实例。

实现是通过创建三个具有不同操作的模块来完成的:

>假设():它是计算和输出目标变量的假设值的函数,给定θ(θ_0和θ_1)和特征,X作为输入。假设()的实施情况保持不变。

=>bgd():该函数以θ_0和θ_1、α、迭代次数(Num_Iters)、假设值(H)、特征集(X)和目标变量集(Y)的当前值作为输入,并输出优化的θ(θ_0和θ_1),θ_0历史(θ_0)和θ_1历史(θ_1),即每次迭代时θ_0和θ_1的值,最后是包含成本函数在所有迭代中的值的成本历史。梯度_下降()的实现如下:

=>线性回归():以特征集(X)、目标变量集(Y)和学习率为输入,输出最终优化的θ,即θ_0和θ_1的值,代价函数几乎达到最小跟随的批梯度下降。

使用3-模块-线性回归-BGD:

泰塔的产出是:

BGD后的Theta

散点图上θ的可视化:

得到的θ的回归线可视化可以在散点图上进行:

回归线可视化的结果是:

BGD后的回归线可视化

同时,在分批梯度下降迭代过程中降低了成本.用线曲线和曲面图表示了成本的降低。

在300次迭代中表示成本减少的线曲线:

这条线的曲线是:

用BGD实现成本最小化的线曲线表示

表示降低成本的表面图:

具有θ_0和θ_1值的成本极小化的曲面表示

性能分析(SGD Vs BGD)

模型性能分析是根据以下指标进行的:

=>平均绝对误差:实例样本上预测和实际观测结果之间的平均模(差)。

=>均方误差:实例样本上预测值与实际观测值之间平方差的平均值。

=>均方误差:实例样本上预测值与实际观测值平方差平均值的平方根。

=>R-平方分数或决定系数:

SGD与BGD的比较:

因此,批处理梯度下降是一个明显的胜利者的随机梯度下降在所有方面!

这就是在Python中使用渐变下降从零开始实现单变量线性回归的所有内容。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181220A0SBTC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券