线性回归的全批次、MiniBatch以及随机梯度下降方法

本文介绍了线性回归的三种优化算法:全批次梯度下降、MiniBatch梯度下降和随机梯度下降。全批次方法使用所有样本进行训练,MiniBatch在每次迭代中处理一部分样本,而随机梯度下降则选择单个随机样本进行训练,以加快收敛速度。最后,作者强调了实践精神,提供了相关代码示例。
摘要由CSDN通过智能技术生成

线性回归

	线性回归是机器学习中最简单的一个方法,关于详细的公式推导网上很多,我就不详细展开,可
	以在周志华老师的西瓜书上找到详尽的推理。对于线性回归的求逆的方法也不再次做介绍,有可
	能以后会搞一搞,但在第一篇博客中就不做介绍。本篇就记录下本人对全批次梯度下降方法、
	MiniBatch梯度下降方法以及随机梯度下降方法的代码实现。仅作为记录!
	关于理论性的推导懒得再手写了,有个老哥写的真是不错,几乎把西瓜书上的搬了下来,在这边附个链接

https://www.cnblogs.com/geo-will/p/10468253.html

全批次梯度下降方法

把所有训练样本都放入进行训练

MiniBatch梯度下降方法

随机生成一个样本list,打乱list,用一个MiniBatch的样本数进行训练,计算损失,每一次循环一整个样本容量,但是不重复。

随机梯度下降方法

每次从样本中抽出随机的一个进行训练,提高收敛速度。

年轻人要讲码德,上代码

import matplotlib.pyplot as plt
import numpy as np
import random


class LinearRegressionClass(object):
    def __init__(self, X, Y, learningRate, loopNum):
        # X为输入的矩阵,一行代表一份数据,行数代表样本的数量,列数代表样本的维数
        # Y为对应的结果值
        # learningRate表示学习率
        # loopNum表示训练的次数
        self.dataX = X
        self.dataY = Y
        self.learningRate = learningRate
        self.loopNum = loopNum
        self.y = np.array([self.dataY]).T
        self.X = np.column_stack((X, np.repeat(1, X.shape[0])))  # 扩充矩阵一列全1,变成广义矩阵,作用是与偏置项进行乘积
        self.parameter = np.array([np.ones(self.X.shape[1])]).T  # 最后一位为偏置项

    def Overall_Linear_Regression(self):
        for i in range(self.loopNum):
            # 迭代训练
            predict_y = np.dot(self.X, self.parameter)
            error_y = pr
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值