梯度下降法 线性回归方程

目录

一、基础概念

1. 梯度下降法的原理

二、实验步骤与分析

1. 梯度下降法:

2. 画出一元线性拟合图像:

三、参考文章


一、基础概念

1. 梯度下降法的原理

梯度法思想的三要素:出发点、下降方向、下降步长。

梯度方向: \frac{\mathrm{dW} }{\mathrm{|d} W|}

步长设为常数Δ:

如果用在梯度较大的时候,离最优解比较远,W的更新比较快;然而到了梯度较小的时候,也就是较靠近最优解的时候,W的更新竟然也保持着跟原来一样的速率,这样会导致W很容易更新过度反而远离了最优解,进而出现在最优解附近来回震荡。所以用λ|W|来代替Δ,而这里的λ就是学习率。[1]

  • 在单变量的函数中,梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率
  • 在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向

梯度的方向是函数在给定点上升最快的方向,那么梯度的反方向就是函数在给定点下降最快的方向,这正是我们所需要的。所以我们只要沿着梯度的方向一直走,就能走到局部的最低点![2]

                                                                                               图1. 各种梯度下降示意图[1]

二、实验步骤与分析

序号

任务名称

任务具体要求

1

实验数据点

x:[55, 71, 68, 87, 101, 87, 75, 78, 93, 73]

y:[91, 101, 87, 109, 129, 98, 95, 101, 104, 93]

2

一元线性回归方程

y(x,w)=w0+w1*x

3

梯度下降法求线性回归方程系数w0和w1

自己编写函数,使用梯度下降法的公式求得w0,w1(函数输入为x,y和迭代次数,返回为w0,w1)

4

绘制图像

绘制梯度下降求得的一元线性回归函数图像,包括数据点和一元线性回归函数图像

1. 梯度下降法:

# define the model linear model y = w*x+b

def forward(x):

    return x*w+b



#define the cost function MSE

def cost(xs, ys):

    cost = 0

    for x, y in zip(xs,ys):

        y_pred = forward(x)

        cost += (y_pred - y)**2  #

    return cost / len(xs)



# define the gradient function  gd 梯度

def gradient(xs,ys):

    gradw = 0
    gradb = 0
    for x, y in zip(xs,ys):
        gradw += x*(x*w+b - y) # ∂cost/ ∂w,对w求导
        gradb += x*w+b - y
        gradw = gradw/len(xs)
        gragb = gradb / len(xs)
    return gradw, gradb
 
epoch_list = []
cost_list = []
# start training
for epoch in range(10):
    cost_val = cost(x_data, y_data)
    gradb_val, gradw_val = gradient(x_data, y_data)# 1 求梯度
    w -= 0.00016 * gradw_val  # 0.01 learning rate # 2  更新斜率(权重)
    b -= 0.00011 * gradb_val
    print('epoch:', epoch, 'w=', w, 'b=', b,'loss=', cost_val)
    epoch_list.append(epoch)
cost_list.append(cost_val)

结果如下图:

                                           

2. 画出一元线性拟合图像:

plt.scatter(x_data, y_data)
y_line = w * np.array(x_data) + b
plt.plot(x_data, y_line , color='r')

                                             

三、参考文章

[1] 最清晰的讲解各种梯度下降法原理与Dropout (baidu.com)

[2] 梯度下降算法原理讲解——机器学习_Arrow and Bullet-CSDN博客_梯度下降法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值