用线性回归方程来模拟梯度下降法

这里为了更好的记录梯度下降法的逻辑,用简单的二元线性回归方程来模拟梯度下降法来找到最小值,然后以后也可以将这个逻辑来寻找最小最优算法

1、通过一点点的向最小值靠近,然后判断跟下一个点对应的损失函数的值是否相等或者低于某一个值,来判断是否已经处于一个不再下降的点

所以得出线性回归的损失函数是MSE,也就是均方误差,然后对均方误差求导,就能得到梯度值,具体实现代码如下,以简单线性回归方程为例

import numpy as np
from matplotlib import pyplot as plt

def J(x):
    return (x - 3) ** 2 + 1

def dJ(x):
    return 2*(x-3)

x = np.linspace(-1, 7, 140)
y = J(x)
plt.plot(x, y)


def find(num) :
    theta = 0.0
    n = 0.5
    e = 1e-8
    thetaList = [theta]
    while num >= 0:
        lastTheta = theta
        theta = lastTheta - n*dJ(theta)
        thetaList.append(theta)
        if abs(J(lastTheta) - J(theta)) < e:
            break
        num -= 1
    return np.array(thetaList)
thetas = find(100)
yFind = J(thetas)
print(yFind)
#return False
plt.plot(thetas, yFind, color='r', marker = '+')
plt.show()        

结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值