概念

为了解决线性回归问题,我们也用梯度下降算法。
算法逻辑如下:

对于线性回归模型中例子,梯度下降可以如下:


算法

实际上梯度下降可有通过求导。这里的符号“:=”是赋值的含义

有两个注意点:

  • 参数的更新,每次迭代中θ0和θ1是同时更新的。

  • 在梯度下降中需要注意α,也就是学习速率(learn rate)。速率过大导致一直发散,速率过小导致迭代过多。这个值需要根据实际调整,具体后续分析。

  • 即使学习率α固定,渐变下降也可以收敛到局部最小值


梯度下降算法最小化平方误差代价函数

基本概念

首先二者分别如下

所以可以得到下面的迭代

多特征

对于多个特征量,假设函数(hypothesis)应该变化为:

同理,新的算法为:

特征缩放

对于新的算法中,多个特征量由于各自有不同的范围,因此由这些取值可能使得收敛较慢或者没有了理想的效果。所以可以使用特征缩放来解决这个问题:

需要注意的是这里的正负1不是要求绝对的满足,这里的意思是多个特征量的值范围不要差距太大即可

均值归一化

对于特征量除了特征缩放以外还有均值归一化的方法:

这里μ的含义是特征集中特征X1的平均值,S1表示X1的特征值范围,也就是X1_max和X1_min的差值。虽然可以用标准差,但其实是一样的。同理这里的正负0.5也表示相近的值就可以。

学习率α的取值

如果α的取值过大或者过小都有可能导致代价函数不理想:

因此在实际中,ANg推荐的做法是通过取不同的α观察来比较,从中选取合适的学习率。

特征和多项式回归

选取的特征越有效,最终获取的结果就越准确,所以选择正确的特征是很重要的。但实际中可能有一些函数会很复杂,或者非线性。这个时候我们不能直接使用选取特征和对应的函数。此时可以通过拟合的方式获取符合实际的函数。并且特征也可以间接利用。


正规化方程

概念

某一些问题,使用正规化方程可以更好的得到θ。并且正规化方程可以一次性得出θ
对于例子来说,使用正规化方程,可以得出结果。


梯度下降算法和正规化方程的选择

对于二者,最主要的区别就是梯度下降是多次得到结果,正规化方程是一次求解。所以当特征较少的情况下,使用后者更合适。前者适用于大型或者复杂的情况

此外正规化方程有一个使用前提,也就是有逆矩阵的前提下。但这个情况通常极少,可不考虑。

ANg-梯度下降算法的更多相关文章

  1. 梯度下降算法的一点认识(Ng第一课)

    昨天开始看Ng教授的机器学习课,发现果然是不错的课程,一口气看到第二课. 第一课 没有什么新知识,就是机器学习的概况吧. 第二课 出现了一些听不太懂的概念.其实这堂课主要就讲了一个算法,梯度下降算法. ...

  2. ng机器学习视频笔记(二) ——梯度下降算法解释以及求解θ

    ng机器学习视频笔记(二) --梯度下降算法解释以及求解θ (转载请附上本文链接--linhxx)   一.解释梯度算法 梯度算法公式以及简化的代价函数图,如上图所示. 1)偏导数 由上图可知,在a点 ...

  3. 监督学习:随机梯度下降算法(sgd)和批梯度下降算法(bgd)

    线性回归 首先要明白什么是回归.回归的目的是通过几个已知数据来预测另一个数值型数据的目标值. 假设特征和结果满足线性关系,即满足一个计算公式h(x),这个公式的自变量就是已知的数据x,函数值h(x)就 ...

  4. [机器学习Lesson3] 梯度下降算法

    1. Gradient Descent(梯度下降) 梯度下降算法是很常用的算法,可以将代价函数J最小化.它不仅被用在线性回归上,也被广泛应用于机器学习领域中的众多领域. 1.1 线性回归问题应用 我们 ...

  5. Spark MLib:梯度下降算法实现

    声明:本文参考< 大数据:Spark mlib(三) GradientDescent梯度下降算法之Spark实现> 1. 什么是梯度下降? 梯度下降法(英语:Gradient descen ...

  6. AI-2.梯度下降算法

    上节定义了神经网络中几个重要的常见的函数,最后提到的损失函数的目的就是求得一组合适的w.b 先看下损失函数的曲线图,如下 即目的就是求得最低点对应的一组w.b,而本节要讲的梯度下降算法就是会一步一步地 ...

  7. Logistic回归Cost函数和J(θ)的推导(二)----梯度下降算法求解最小值

    前言 在上一篇随笔里,我们讲了Logistic回归cost函数的推导过程.接下来的算法求解使用如下的cost函数形式: 简单回顾一下几个变量的含义: 表1 cost函数解释 x(i) 每个样本数据点在 ...

  8. 梯度下降算法对比(批量下降/随机下降/mini-batch)

    大规模机器学习: 线性回归的梯度下降算法:Batch gradient descent(每次更新使用全部的训练样本) 批量梯度下降算法(Batch gradient descent): 每计算一次梯度 ...

  9. tensorflow随机梯度下降算法使用滑动平均模型

    在采用随机梯度下降算法训练神经网络时,使用滑动平均模型可以提高最终模型在测试集数据上的表现.在Tensflow中提供了tf.train.ExponentialMovingAverage来实现滑动平均模 ...

  10. 深度学习课程笔记(四)Gradient Descent 梯度下降算法

    深度学习课程笔记(四)Gradient Descent 梯度下降算法 2017.10.06 材料来自:http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS1 ...

随机推荐

  1. PROC UNIVARIATE 简单示例

    OPTIONS NOCENTER LS=MAX PS=MAX USER=SASHELP; PROC UNIVARIATE DATA=FISH;WHERE SPECIES='Bream';VAR HEI ...

  2. U3D学习07-插值运算(位移与旋转)

    1.Lerp 线性插值计算.匀速移动 2.LerpAngle 线性插值计算.匀速旋转 3.MoveTowards  4.MoveTowardsAngel  5.SmoothStep非匀速移动  6.S ...

  3. Maven安装以及环境配置(Windows)

    Maven是什么? Maven是一个项目管理和综合工具.Maven提供了开发人员构建一个完整的生命周期框架.开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期. 在 ...

  4. WebBrowser JS回调delphi的方法 (简单通用)

    上一部分讲了Delphi根据方法名调用方法,这一部分还有用到,接着上一章: [主要原理] 通过TEmbeddedWB控件的OnShowMessage事件捕获弹窗来实现,弹窗时定义方法名和参数,在捕获方 ...

  5. Java 13 - Java 数组

    Java 数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如num ...

  6. join,fromkeys(),深浅拷贝

    1. 补充基础数据类型的相关知识点 1. str. join() 把列表变成字符串例 # s= "哈哈"# s1=s.join('-')# print(s1)# s="呵 ...

  7. tensorflowwindows安装

    1.在python官网下载3.5 64位版本的python,并进行安装 https://www.python.org/ 2.进行安装,配置环境变量 3.命令行执行pip3 install numpy ...

  8. MySql 索引 查询 优化

    官方文档: https://dev.mysql.com/doc/refman/5.7/en/explain-output.html#explain_rows type: 连接类型 system 表只有 ...

  9. Python学习URL

    Python 与 Excel 不得不说的事 http://www.open-open.com/lib/view/open1472701496085.html

  10. web:频繁刷新浏览器的页面【小工具】

    [目的] 频繁刷新某一浏览器页面,小测试一下加载性能,或者打开的文件是否及时关闭,会不会导致服务器奔溃 [小工具] 新建txt,输入以下内容,并保存为html的格式,然后在浏览器中打开,则会定时刷新指 ...