回归是特征空间中数据或数据点连续分类的一个例子.弗朗西斯·加尔顿在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中使用渐变下降从零开始实现单变量线性回归的所有内容。
领取专属 10元无门槛券
私享最新 技术干货