梯度下降原理及Python实现
来源:互联网 发布:javascript编程全解 编辑:程序博客网 时间:2024/06/03 19:08
版权声明:本文为原创文章:http://blog.csdn.net/programmer_wei/article/details/51941358
梯度下降算法是一个很基本的算法,在机器学习和优化中有着非常重要的作用,本文首先介绍了梯度下降的基本概念,然后使用python实现了一个基本的梯度下降算法。梯度下降有很多的变种,本文只介绍最基础的梯度下降,也就是批梯度下降。
实际应用例子就不详细说了,网上关于梯度下降的应用例子很多,最多的就是NG课上的预测房价例子:
假设有一个房屋销售的数据如下:
面积(m^2) 销售价钱(万元)
根据上面的房价我们可以做这样一个图:
于是我们的目标就是去拟合这个图,使得新的样本数据进来以后我们可以方便进行预测:
对于最基本的线性回归问题,公式如下:
x是自变量,比如说房子面积。θ是权重参数,也就是我们需要去梯度下降求解的具体值。
在这儿,我们需要引入损失函数(Loss function 或者叫 cost function),目的是为了在梯度下降时用来衡量我们更新后的参数是否是向着正确的方向前进,如图损失函数(m表示训练集样本数量):
下图直观显示了我们梯度下降的方向,就是希望从最高处一直下降到最低出:
梯度下降更新权重参数的过程中我们需要对损失函数求偏导数:
求完偏导数以后就可以进行参数更新了:
伪代码如图所示:
好了,下面到了代码实现环节,我们用Python来实现一个梯度下降算法,求解:
下面是代码:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
x_train是训练集x,y_train是训练集y, x_test是测试集x,运行后得到如下的图,图片显示了算法对于测试集y的预测在每一轮迭代中是如何变化的:
我们可以看到,线段是在逐渐逼近的,训练数据越多,迭代次数越多就越逼近真实值。
- 梯度下降原理及Python实现
- 梯度下降原理及Python实现
- 梯度下降原理及Python实现
- 梯度下降算法及Python实现
- 梯度下降原理及线性回归代码实现(python/java/c++)
- Python实现梯度下降法
- 梯度下降的python实现
- 梯度下降算法 Python实现
- 梯度下降算法及python实现(学习笔记)
- 梯度下降算法的python实现
- 批梯度下降的 python 实现
- 逻辑回归-梯度下降法 python实现
- 梯度下降法及其Python实现
- python实现随机梯度下降(SGD)
- 梯度下降算法的Python实现
- python最优化-梯度下降实现
- python实现随机梯度下降法
- Python实现 线性回归(梯度下降)
- hexo多终端搭建
- mybatis之<trim prefix="" suffix="" suffixOverrides="" prefixOverrides=""></trim>
- 欢迎使用CSDN-markdown编辑器
- [易语言] 滴答表格挂接事件 : 事件编号
- 真正的软件测试实习3--Android常见的几种crash
- 梯度下降原理及Python实现
- HDU 6199 gems gems gems dp(逆推)
- JVM&GC Full Coverage
- python日期相关运算和测试
- 第2周项目2 程序的多文件管理
- Java 并发 —— 读写锁(ReadWriteLock)
- Android开发艺术探索_JNI和NDK编程(十四)
- 网络相关
- 趣味数学问题的算法实现