【Python机器学习】梯度下降法(一) | 优矿(uqer.io)
前言
梯度下降法(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)相关推荐
- 人工智能与机器学习-梯度下降法
人工智能与机器学习-梯度下降法 一.梯度下降法概述 梯度下降法(Gradient descent)是一个一阶最优化算法. 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近 ...
- python实现梯度下降法_梯度下降法及其Python实现
作者:糖甜甜甜 经管人也可以学Python. 个人公众号: 经管人学数据分析 基本介绍 梯度下降法(gradient descent),又名最速下降法(steepest descent)是求解无约束最 ...
- python sklearn 梯度下降法_科学网—Python_机器学习_总结4:随机梯度下降算法 - 李军的博文...
=============================================================== 总结如下: 1.随机梯度下降算法可以看成是梯度下降算法的近似,但通常它能 ...
- 机器学习梯度下降法举例
本文是参考Andrew Ng网上课程和别人总结的机器学习笔记,作为笔者学习的参考,笔者主要实现了一些程序问题. 持续更新中- 更新- 先以最为简单的例子举例,比如有一个函数为y=x2y=x^2y=x2 ...
- 基于python实现梯度下降法(GD)在线性回归中的应用(Boston房价预测数据集)
[环境准备] 用到的包主要有两个:numpy和sklearn,都是机器学习常用的库. [数据集介绍] 波士顿房价数据集(Boston House Price Dataset) 使用sklearn.da ...
- python sklearn 梯度下降法_(四)梯度下降法及其python实现
梯度 梯度,什么是梯度?梯度的本意是一个向量,表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模). 在微积分里面,对多元函 ...
- Python随机梯度下降法(三)
对梯度熟悉之后,我们寻找函数的最小值(或者尽可能小的值)的位置的过程中,都是以梯度做线索,这个就是上一篇说的梯度所具备的特点决定的. 梯度法:通过不断地沿着梯度方向前进,逐渐减小函数值 ...
- Excel和Python实现梯度下降法
文章目录 一.梯度下降法是什么 二.概念理解 1. 微分理解 2. 梯度理解 3. 梯度下降法的数学解释 三.梯度下降法手工求解 四.Excel演示梯度下降法的数据变化 五.Python 编程实现 六 ...
- Excel 和 python 使用梯度下降法分别求【极小值点】【线性回归问题】
目录 一.梯度下降法求解 1.1 基本概念 1.2 梯度下降法手工求解 1.3 Excel 实现梯度下降法求解 二.线性回归问题求解 2.1 最小二乘法 2.2 梯度下降法 三.总结 四.参考资料 一 ...
- 机器学习梯度下降法应用波士顿房价预测
目录 1 线性回归api介绍 小结 2 波士顿房价预测 2.1 案例背景介绍 2.2 案例分析 2.3 回归性能评估 2.4 代码实现 2.4.1 正规方程 2.4.2 梯度下降法 2.5 小结 1 ...
最新文章
- 最新开源Faster-LIO:快速激光IMU里程计
- 企业网络推广方法之网站内容链接SEO该怎么做?
- C++ 名字重载、隐藏、覆盖
- How can I exclude directories from grep -R?
- DirectX 3D学习笔记(一)
- asterisk 互联
- HDU-1069 Monkey and Banana
- python ui自动化脚本_ui自动化:python+appium----环境搭建
- 一阶电路误差分析_电动涡旋压缩机转子的模态分析及试验研究
- c语言怎么运行出星星,C语言打印星星的问题
- Talos实验室深入我国DDoS黑市DuTe 揭露各种DDoS团伙、平台、工具及攻击
- 电脑主机启动不了是什么原因
- .xls和.xlsx 有什么区别?
- 查看编译war包的jdk版本
- matlab降水时空分布图,江浙沪地区55年夏季降水时空分布规律研究
- html5 video断点续播,vue-video-player 断点续播的实现
- 心理美容,女性最好的化妆品
- xmanager无法连接Linux服务器,xmanager连接linux出错问题怎么解决
- 江苏大学二本计算机专业排名,2018江苏大学排名 江苏有哪些大学
- 计算机桌面恢复全屏,电脑屏幕怎么恢复全屏 电脑屏幕恢复正常比例的方法
热门文章
- ORACLE数据文件系统只读(FC中断引起)转载【xiaoyu】
- 微信小程序,点击右上角返回箭头,返回指定页面
- ORCA(Optimal Reciprocal Collision Avoidance)笔记
- ubuntu PHP Cannot adopt OID in UCD-SNMP-MIB
- Win10家庭版使用gpedit.msc方法
- 经济可行性分析的目的
- Error: invalid operands (*UND* and *UND* sections) for `*‘
- 计算机TTL逻辑电平信号,ttl电平是什么意思
- 怎么制作U盘启动盘来安装系统
- C++:动态规划DP;