前言

梯度下降法(Gradient Descent)是机器学习中最常用的优化方法之一,常用来求解目标函数的极值。
其基本原理非常简单:沿着目标函数梯度下降的方向搜索极小值(也可以沿着梯度上升的方向搜索极大值)。 
  • 假设需要求解目标函数是 func(x) = x * x 的极小值,由于 func 是一个凸函数,因此它唯一的极小值同时也是它的最小值,其一阶导函数 为 dfunc(x) = 2 * x
import numpy as np
import matplotlib.pyplot as plt# 目标函数:y=x^2
def func(x):return np.square(x)# 目标函数一阶导数:dy/dx=2*x
def dfunc(x):return 2 * x

梯度下降法函数

def GD(x_start, df, epochs, lr):"""梯度下降法。给定起始点与目标函数的一阶导函数,求在epochs次迭代中x的更新值:x_start: x的起始点:df: 目标函数的一阶导函数:epochs: 迭代周期:lr: 学习率:return: x在每次迭代后的位置(包括起始点),长度为epochs+1"""xs = np.zeros(epochs+1)x = x_startxs[0] = xfor i in range(epochs):dx = df(x)# v表示x要改变的幅度v = - dx * lrx += vxs[i+1] = xreturn xs
  • 假设起始搜索点为-5,迭代周期为5,学习率为0.3:
def demo0_GD():x_start = -5epochs = 5lr = 0.3x = GD(x_start, dfunc, epochs, lr=lr)print xdemo0_GD()def demo0_GD():line_x = np.linspace(-5, 5, 100)line_y = func(line_x)x_start = -5epochs = 5lr = 0.3x = GD(x_start, dfunc, epochs, lr=lr)fig = plt.figure(figsize=(6,6))color = 'r'plt.plot(line_x, line_y, c='b')plt.plot(x, func(x), c=color, label='lr={}'.format(lr))plt.scatter(x, func(x), c=color, )plt.legend()plt.show()demo0_GD()

从运行结果来看,当学习率为0.3的时候,迭代5个周期似乎便能得到较理想的效果。

学习率对梯度下降法的影响

  • 设置学习率分别为0.1、0.3与0.9进行测试:

从下图输出结果可以看出两点,在迭代周期不变的情况下:

  • 学习率较小时,收敛到正确结果的速度较慢。
  • 学习率较大时,容易在搜索过程中发生震荡。
学习率大小对梯度下降法的搜索过程起着非常大的影响! 

文章转自:https://uqer.io/community/share/58204a27228e5ba8f85715a8,欢迎大家留言讨论哦!

【Python机器学习】梯度下降法(一) | 优矿(uqer.io)相关推荐

  1. 人工智能与机器学习-梯度下降法

    人工智能与机器学习-梯度下降法 一.梯度下降法概述 梯度下降法(Gradient descent)是一个一阶最优化算法. 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近 ...

  2. python实现梯度下降法_梯度下降法及其Python实现

    作者:糖甜甜甜 经管人也可以学Python. 个人公众号: 经管人学数据分析 基本介绍 梯度下降法(gradient descent),又名最速下降法(steepest descent)是求解无约束最 ...

  3. python sklearn 梯度下降法_科学网—Python_机器学习_总结4:随机梯度下降算法 - 李军的博文...

    =============================================================== 总结如下: 1.随机梯度下降算法可以看成是梯度下降算法的近似,但通常它能 ...

  4. 机器学习梯度下降法举例

    本文是参考Andrew Ng网上课程和别人总结的机器学习笔记,作为笔者学习的参考,笔者主要实现了一些程序问题. 持续更新中- 更新- 先以最为简单的例子举例,比如有一个函数为y=x2y=x^2y=x2 ...

  5. 基于python实现梯度下降法(GD)在线性回归中的应用(Boston房价预测数据集)

    [环境准备] 用到的包主要有两个:numpy和sklearn,都是机器学习常用的库. [数据集介绍] 波士顿房价数据集(Boston House Price Dataset) 使用sklearn.da ...

  6. python sklearn 梯度下降法_(四)梯度下降法及其python实现

    梯度 梯度,什么是梯度?梯度的本意是一个向量,表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模). 在微积分里面,对多元函 ...

  7. Python随机梯度下降法(三)

    对梯度熟悉之后,我们寻找函数的最小值(或者尽可能小的值)的位置的过程中,都是以梯度做线索,这个就是上一篇说的梯度所具备的特点决定的.         梯度法:通过不断地沿着梯度方向前进,逐渐减小函数值 ...

  8. Excel和Python实现梯度下降法

    文章目录 一.梯度下降法是什么 二.概念理解 1. 微分理解 2. 梯度理解 3. 梯度下降法的数学解释 三.梯度下降法手工求解 四.Excel演示梯度下降法的数据变化 五.Python 编程实现 六 ...

  9. Excel 和 python 使用梯度下降法分别求【极小值点】【线性回归问题】

    目录 一.梯度下降法求解 1.1 基本概念 1.2 梯度下降法手工求解 1.3 Excel 实现梯度下降法求解 二.线性回归问题求解 2.1 最小二乘法 2.2 梯度下降法 三.总结 四.参考资料 一 ...

  10. 机器学习梯度下降法应用波士顿房价预测

    目录 1 线性回归api介绍 小结 2 波士顿房价预测 2.1 案例背景介绍 2.2 案例分析 2.3 回归性能评估 2.4 代码实现 2.4.1 正规方程 2.4.2 梯度下降法 2.5 小结 1 ...

最新文章

  1. 最新开源Faster-LIO:快速激光IMU里程计
  2. 企业网络推广方法之网站内容链接SEO该怎么做?
  3. C++ 名字重载、隐藏、覆盖
  4. How can I exclude directories from grep -R?
  5. DirectX 3D学习笔记(一)
  6. asterisk 互联
  7. HDU-1069 Monkey and Banana
  8. python ui自动化脚本_ui自动化:python+appium----环境搭建
  9. 一阶电路误差分析_电动涡旋压缩机转子的模态分析及试验研究
  10. c语言怎么运行出星星,C语言打印星星的问题
  11. Talos实验室深入我国DDoS黑市DuTe 揭露各种DDoS团伙、平台、工具及攻击
  12. 电脑主机启动不了是什么原因
  13. .xls和.xlsx 有什么区别?
  14. 查看编译war包的jdk版本
  15. matlab降水时空分布图,江浙沪地区55年夏季降水时空分布规律研究
  16. html5 video断点续播,vue-video-player 断点续播的实现
  17. 心理美容,女性最好的化妆品
  18. xmanager无法连接Linux服务器,xmanager连接linux出错问题怎么解决
  19. 江苏大学二本计算机专业排名,2018江苏大学排名 江苏有哪些大学
  20. 计算机桌面恢复全屏,电脑屏幕怎么恢复全屏 电脑屏幕恢复正常比例的方法

热门文章

  1. ORACLE数据文件系统只读(FC中断引起)转载【xiaoyu】
  2. 微信小程序,点击右上角返回箭头,返回指定页面
  3. ORCA(Optimal Reciprocal Collision Avoidance)笔记
  4. ubuntu PHP Cannot adopt OID in UCD-SNMP-MIB
  5. Win10家庭版使用gpedit.msc方法
  6. 经济可行性分析的目的
  7. Error: invalid operands (*UND* and *UND* sections) for `*‘
  8. 计算机TTL逻辑电平信号,ttl电平是什么意思
  9. 怎么制作U盘启动盘来安装系统
  10. C++:动态规划DP;