Python 批量梯度下降 BGD 代码实现 笔记
2019-01-27 17:27
405 查看
回顾梯度下降流程
#1 初始化 θ\thetaθ
#2 求 gradient
#3 θt+1=θt−α•g\theta^{t+1}=\theta^{t}-\alpha • gθt+1=θt−α•g
#4 ggg 收敛
批量梯度下降 BGD
批量:Batch
梯度:Gradient
下降:Descent
“Batch”: Each steep of gradient descent use all the training examples.
每一步下降都用到所有的数据样本
优点:全局最优解,精确
缺点:数据样本较大时耗费大量时间
θj:=θj−α∑i=1m(hθ(x(i))−y(i))xj(i)\theta_{j}:=\theta_{j}-\alpha\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}θj:=θj−αi=1∑m(hθ(x(i))−y(i))xj(i)
g(θ0...θm)=xj(x∗θ−y)g_{(\theta_{0}...\theta_{m})}=x_{j}(x*\theta-y)g(θ0...θm)=xj(x∗θ−y)
x为m行n列,θ\thetaθ为n行1列 相乘
⟹\Longrightarrow⟹m行1列−-−y为m行1列
⟹\Longrightarrow⟹m行1列
所以xjx_{j}xj需要转置为n行m列 与 m行1列 相乘
⟹\Longrightarrow⟹n行1列
1/m 平均每个数据的权重;
gradients = 1/m * x_b.T.dot(x_b.dot(theta)-y)
import numpy as np import matplotlib.pyplot as plt # 随机X纬度x1,rand是随机均匀分布 x = 2 * np.random.rand(100,1) # 人为设置真实的Y一列 np.random.randn(100,1) 设置误差遵循标准正态分布 y = 4 + 3 * x + np.random.randn(100,1) # 整合 x0 和 x1 成矩阵 x_b = np.c_[np.ones((100,1)),x] learning_rate = 0.01 # 学习率一般默认设置为0.01 n_iterations = 10000 # 迭代次数够多即可(不一定需要全局最优解) m = 100 # 100 行 # #1 初始化theta,w0...wn theta = np.random.randn(2,1) # x_b 中只有x0,x1,只需要两个theta # #4 不设置阀值,直接设置超参数,迭代次数,迭代次数到了就认为收敛了 for iteration in range(n_iterations): # #2 求梯度gradient gradients = 1/m * x_b.T.dot(x_b.dot(theta)-y) # #3 调整theta值 theta = theta - learning_rate * gradients print(theta) x_new = np.array([[0],[2]]) x_new_b = np.c_[(np.ones((2,1))),x_new] y_predict = x_new_b.dot(theta) # 绘制图形 plt.plot(x_new,y_predict,'r-') plt.plot(x,y,'b.') plt.axis([0,2,0,15]) plt.show()
相关文章推荐
- 机器学习小组知识点4&5:批量梯度下降法(BGD)和随机梯度下降法(SGD)的代码实现Matlab版
- 线性回归(LinearRegression)、局部加权回归(LOWESS)、梯度下降(GD)、随机梯度下降(SGD)与批量梯度下降(MinibatchGD)代码实现与比较
- 随机梯度下降法,批量梯度下降法和小批量梯度下降法以及代码实现
- Python编程实现线性回归和批量梯度下降法代码实例
- 梯度下降法与随机梯度下降法的python代码实现
- 随机梯度下降和批量梯度下降的简单代码实现
- 线性回归、梯度下降原理介绍与案例python代码实现
- 梯度下降原理及线性回归代码实现(python/java/c++)
- 梯度下降和逻辑回归例子(Python代码实现)
- 梯度下降实现案例(含python代码)
- Python神经网络代码实现流程(三):反向传播与梯度下降
- ssh批量登录并执行命令的python实现代码
- 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比
- Python实现 线性回归(梯度下降)
- python 实现梯度下降
- bat和python批量重命名文件的实现代码
- 梯度下降原理及Python实现
- python实现壁纸批量下载代码实例
- Python实现批量把SVG格式转成png、pdf格式的代码分享
- 借助apktool.jar工具,使用python代码简化批量反编译apk安装包的简单实现