首页 欧洲联赛正文

线性回归用于找到特定数据集的最佳拟合线。如果目标是预测,预测或减少误差,则可以使用线性老婆的脚回归将预测模型拟合到响应值的观察数据集(例如测试结果)和解释性(例如研究测试的时间)变量。在从训练的数据集中获得拟合模型之后,我们可以对任何新的解释变量进行预测(例如,根四川省,shadow,芈月是秦始皇的什么人据研究学生的学习时间来预测学生的考试成绩)。

但是我们的程序如何在随机数据集中找到最合ca1924适的线条,如果我们有两组数据怎么办?一个是中学生考试成绩和学习时间的数据,另一个是高中学生的数据集。人工智能的目的是给程序一个问题并让他来为我们解决。但是我们还需要一些东西来让我们的程序找到数据本身的最佳拟合线。

解决方案是使用梯度下降算法。梯度下降算法是用于找到函数最小值的一阶迭代优化琅岐红鲟节算法。通俗地说,算法将允许我们遍历梯度,这最终将帮助我们找到最佳拟合线,无论使用哪个数据集。

线性回归示例

假设我们有以下数据集:

数据集

如果我们想通过这4008333000个数据绘制一条直线,我们将使用斜率截距公式y = mx + b ,其中m代表斜率值,b代表截距。为了找到我们数据的最佳线,我们需要找到最佳的m和b值。

误差函数

为了找到上述数据的最佳拟合线,我们需要定义一个误差函数。这种类型的误差函数更具体地称为残差平方和dj热舞或预测误差平方和。误差函数衡量数据集与估计模型(我们预测的最佳拟合线)之间的差异。

从线到典型数据点的垂直距离等于线与该y值之间的误差,也称为残差。

残余平方和误差函数

y是被预测变量的第i个值,x是解释变量的第i个值,mx + b是y的预测值。这个函数是平方的,以确保在求空井苍和之前值是正数。然后平方估计值的总和除以数据集中N个值的总数。下面的代码是python中的错误函数。

python中的错误函数

参数包括y轴截距b,斜率m和(x,y)点的2D数奥比岛夜间版组points

为了得到误差,函数将斜率m和截距b作为参数。然后通过它的2D数组pointvgirlups,并存储在误差平方的totalError,具有郑伽姬以下的预测值m和b ,x和y在for循环后每一次迭竹骨绸伞代。然后在c8h10n4o2退出for循环之后,除以totalErrorpoints数组中的值的数量float(len(points)),并将其作为浮点数返回。现在我们需要找出如何让我们的程序找到b和m的最佳值,这就是梯度下降的作用。

利用梯度下降法可以最大限度地减少误差函数

下面的图像是我们数据集的渐变。为了计算梯度,我们需要区分我们的误差函数。梯度图记录了3个值,误差函数中计算的误差,y轴截距b 和斜率m 。梯度上的每个点代表y轴截距b和斜率m,用于汇总数据集中的所有值x和y黄凯芹老婆值。我们可以看到占据误差最小的区域是梯度斜率最平坦的地方(底部的蓝色区域)。

渐变的示例

为了找到最适合我们数据集的行,我们的程序将需要最小化错误函数计算的误差。这可以通过对误差函数对m和b求偏导数来实现。通过这样做,我们将获得梯度特定点处的斜率。这意味着如果斜率接近于零,则它们必须接近具有提供最适合我们数据集的线的m和b值。要使用梯度下降找到函数丁晓楠的局部最小值,它将采用与当前点处函数的梯度的负值成比例的步骤。所以它总是司隐乐从梯度的最陡部分移动到最平的部分。

关于m和b的误差函数的偏导数

梯度下降的代码发布在下图中。在这里你可以看到step_gradient函数接受4个参数b的当前值b_current,m的当前值m_current,我们数据集的2D数组points,以及learning_rate。learning_rate决定了我们的学习速度。如果learning_rate太高,在梯度中将采取过大的步骤,但可能会错过最小值。另一方面,如果learning_rate太低,则需要很长时间才能达到最小值(如果有的话)。

step_gradient函数遍历整个数据集,每次迭代使用x和y的值,分别求出b和m的亻革族梯度。然后,梯度的值与learning_rate相乘,分别从b_curr奶奶去世了孙女禁忌en女人肉t和m_current中减去,赋值给new_b和new_m,然后返回gradient_descent_runner函数。

gradient_descent_runner允许程序找到函数本gtv雨忱辞职了身的最小值。该函数接受以下参数点:starting_b = 0、starting_m = 0、learning_rate和num_iteration = 1000。然后for循环将为num_interations设置的任何值重复调用step_gradient。

程序不断更新的新值b和m直到他们发现具有最低梯度,从而产生对数据进行最佳拟合线的值。在我们的程序运行完所有迭代之后,它将把b和m的值返回给我们的main函数。

每次迭代的梯度下降误差

全盘分析

在我们的main函数中,我们声明了以下变量; points,learning_rate,initial_b,可爱宝贝看医生initial_m,num_iterations,和数组的最终值b和m。

main 函数

调用gradient_descent_runner启动梯度下降,因此我们可以实现数据集的线性回归。在控制台中打印值后。我们已经实现了梯度下降的线性回归。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。