独家 | ​多项式回归:从零开始学习梯度下降

本文详细介绍了如何从零开始使用梯度下降算法进行多项式回归。通过手动实现梯度下降,逐步优化二次多项式模型的系数,以最小化预测与真实数据之间的误差。在实践中,作者展示了如何创建数据、构建初始模型,然后通过梯度下降迭代改进模型,最终达到降低损失并提高拟合度的目的。
摘要由CSDN通过智能技术生成

作者:SETHNEHA

翻译:王可汗

校对:陈丹

本文约3200字,建议阅读15分钟

本文为大家介绍多项式回归中的梯度下降算法。

关键词:梯度下降、多项式回归、模型优化

 

梯度下降是一个需要理解的重要算法,因为它是机器学习和深度学习中使用的许多更先进算法的基础。因此,掌握梯度下降的内部工作原理对任何计划进一步探索机器学习算法的人来说都是非常有益的。

最好的学习方法是实践,因此在本文中,我将一步步介绍梯度下降过程是如何工作的,而不使用像scikit-learn这样的ML库。在日常工作中,使用这些库当然会更快、更简洁,但在学习过程中,我发现手工实现对这个特定算法来说是非常宝贵的。

梯度下降的目标

梯度下降的目标是最小化模型预测与原始数据间的误差。在本文的背景下,我们将着眼于二次多项式模型,也称为二次方程:

将二阶多项式画出来后, 看起来是这样的:

多项式回归

我们这里专门观察多项式回归, 即自变量x与因变量y之间的关系被建模为x的n阶多项式。简单地说,我们的二次多项式的系数a、b、c将被估计、评价和修改,直到我们可以将线准确地拟合到输入的x数据上。梯度下降是这个过程中的优化步骤,它修改和优化这些系数的值。

 

现在,我们将看看如何创建和绘制这样的曲线,并建立一个初始模型来拟合这个数据,然后我们将使用梯度下降来优化和改进它。如果我们能得到一个可以准确描述数据的模型,希望它能够准确预测另一组x值的y值。

 

我们可以开始为二次多项式方程(????????²+????????+????)选择系数,并应用到我们将尝试建模的数据:

coeffs = [2,-5, 4]

这将是我们希望我们的预测模型尽可能接近的真值模型的系数[5] 。接下来,我们需要一个二次多项式的评估函数,在给定一组系数和给定输入????的情况下,返回相应的????。

def eval_2nd_degree(coeffs, x):
    """
    Function to return the outputof evaluating a second degree polynomial,
    given a specific x value.


    Args:
        coeffs: List containingthe coefficients a,b, and c for the polynomial.
        x: The input x value tothe polynomial.


    Returns:
        y: The correspondingoutput y value for the second degree polynomial.


    """
    a = (coeffs[0]*(x*x))
    b = coeffs[1]*x
    c = coeffs[2]
    y = a+b+c
    return y

当x=3时,我们可以看看它的作用:

coeffs = [2, -5, 4]
x=3
eval_2nd_degree(coeffs, x)


7

创建数据和基础模型

定义一些x数据(输入),我们希望预测y(输出):

import numpy as np
import matplotlib.pyplot as plt


hundred_xs=np.random.uniform(-10,10,100)
print(hundred_xs)


x_y_pairs = []
for x in hundred_xs:
    y  =eval_2nd_degree(coeffs, x)
    x_y_pairs.append((x,y))


xs = []
ys = []
for a,b in x_y_pairs:
    xs.append(a)
    ys.append(b)


plt.figure(figsize=(20,10))
plt.plot(xs, ys, 'g+')
plt.title('Original data')
plt.show()

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值