随机梯度下降算法

概述
  • 随机梯度下降,和批量梯度下降原理类似,区别在于求梯度时没有用所有样本的数据,而是仅仅选取一个样本j来求梯度,更新公式为:
    在这里插入图片描述

  • 随机梯度下降法由于每次仅仅采用一个样本来迭代,训练速度很快


# -*- coding:utf-8 _*-
# @author:  Fu zihao
# @file: pre01.py
import numpy as np
import random

# 学习率
ALPHA = 0.001
# 允许的最大误差
ERROR = 0.01

X1 = np.array([2014, 1600, 2400, 1416, 3000]).reshape(5, 1)
X2 = np.array([3, 3, 3, 2, 4]).reshape(5, 1)
T = np.array([400, 330, 369, 232, 540]).reshape(5, 1)
st0 = 0.5
st1 = 0.5
st2 = 0.5
ST0 = np.array([0.5, 0.5, 0.5, 0.5, 0.5]).reshape(5, 1)


def DT(X1, X2, T, ST0, st1, st2):
    dt0 = ST0 + st1 * X1 + st2 * X2 - T
    print(dt0, "--------------------")
    dt1 = (ST0 + st1 * X1 + st2 * X2 - T) * X1
    dt2 = (ST0 + st1 * X1 + st2 * X2 - T) * X2
    result = np.hstack((dt0, dt1, dt2))
    return result


dt = DT(X1, X2, T, ST0, st1, st2)[0]
dt0 = dt[0]
dt1 = dt[1]
dt2 = dt[2]
print(dt)

while dt0 >= ERROR or dt1 >= ERROR or dt2 >= ERROR:
    i = random.randint(0, 4)
    st0 = st0 - ALPHA * dt0
    st1 = st1 - ALPHA * dt1
    st2 = st2 - ALPHA * dt2
    ST0N = np.array([st0, st0, st0, st0, st0]).reshape(5, 1)
    dt = DT(X1, X2, T, ST0N, st1, st2)[i]
    dt0 = dt[0]
    dt1 = dt[1]
    dt2 = dt[2]

print("-------------------end--------------------")
print(st0, st1, st2)


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SimpleZihao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值