史上最简洁易懂教程 用Excel理解梯度下降

Jahnavi Mahanta:对算法的作用建立直觉性的理解——在我刚入门机器学习的时候,这让我觉得非常困难。不仅仅是因为理解数学理论和符号本身不容易,也因为它很无聊。我到线上教程里找办法,但里面只有公式或高级别的解释,在大多数情况下并不会深入细节。

就在那时,一名数据科学同事介绍给我一个新办法——用 Excel 表格来实现算法,该方法让我拍案叫绝。后来,不论是任何算法,我会试着小规模地在 Excel 上学习它——相信我,对于提升你对该算法的理解、完全领会它的数学美感,这个法子简直是奇迹。

案例

让我用一个例子向各位解释。

大多数数据科学算法是优化问题。而这方面最常使用的算法是梯度下降。

或许梯度下降听起来很玄,但读完这篇文章之后,你对它的感觉大概会改变。

这里用住宅价格预测问题作为例子。

现在,有了历史住宅数据,我们需要创建一个模型,给定一个新住宅的面积能预测其价格。

任务:对于一个新房子,给定面积 X,价格 Y 是多少?

让我们从绘制历史住宅数据开始。

现在,我们会用一个简单的线性模型,用一条线来匹配历史数据,根据面积 X 来预测新住宅的价格 Ypred。

上图中,红线给出了不同面积下的预测价格 Ypred。

Ypred = a+bX

蓝线是来自历史数据的实际住宅价格 Yactual。

 Yactual 和 Ypred 之间的差距,即黄色虚线,是预测误差 E。

我们需要发现一条使权重 a,b 获得最优值的直线,通过降低预测误差、提高预测精度,实现对历史数据的最佳匹配。

所以,目标是找到最优  a, b,使 Yactual 和 Ypred 之间的误差 E 最小化。

误差的平方和 (SSE) = ½ a (实际价格 – 预测价格)2=  ½ a(Y – Ypred)2

(雷锋网提醒,请注意衡量误差的方法不止一种,这只是其中一个)

这时便是梯度下降登场的时候。梯度下降是一种优化算法,能找到降低预测误差的最优权重 (a,b) 。 

理解梯度下降

现在,我们一步步来理解梯度下降算法:

  1. 用随机值和计算误差(SSE)初始化权重 a 和 b。
  2. 计算梯度,即当权重(a & b)从随机初始值发生小幅增减时,SSE 的变动。这帮助我们把 a & b 的值,向着最小化 SSE 的方向移动。
  3. 用梯度调整权重,达到最优值,使 SSE 最小化。
  4. 使用新权重来做预测,计算新 SSE。
  5. 重复第二、第三步,直到对权重的调整不再能有效降低误差。

我在 Excel 上进行了上述每一步,但在查看之前,我们首先要把数据标准化,因为这让优化过程更快。

第一步

用随机值的  a、b 初始化直线 Ypred = a + b X,计算预测误差 SSE。

第二步

计算不同权重的误差梯度。

∂SSE/∂a = – (Y-YP)

∂SSE/∂b = – (Y-YP)X

这里, SSE=½ (Y-YP)2 = ½(Y-(a+bX))2

你需要懂一点微积分,但没有别的要求了。

∂SSE/∂a、∂SSE/∂b 是梯度,它们基于 SSE 给出 a、b 移动的方向。

第三步

用梯度调整权重,达到最小化 SSE 的最优值

我们需要更新 a、b 的随机值,来让我们朝着最优 a、b 的方向移动。

更新规则:

  • a – ∂SSE/∂a
  • b – ∂SSE/∂b

因此:

  1. 新的 a = a – r * ∂SSE/∂a = 0.45-0.01*3.300 = 0.42
  2. 新的 b = b – r * ∂SSE/∂b= 0.75-0.01*1.545 = 0.73

这里,r 是学习率= 0.01, 是权重调整的速率。

第四步

使用新的 a、b 做预测,计算总的 SSE。

你可以看到,在新预测上 总的 SSE 从 0.677 降到了 0.553。这意味着预测精度在提升。

第五步

重复第三、第四步直到对 a、b 的调整无法有效降低误差。这时,我们已经达到了最优 a、b,以及最高的预测精度。

这便是梯度下降算法。该优化算法以及它的变种是许多机器学习算法的核心,比如深度网络甚至是深度学习。

====================================分割线================================

本文作者:三川

本文转自雷锋网禁止二次转载,原文链接

时间: 2024-12-28 20:54:46

史上最简洁易懂教程 用Excel理解梯度下降的相关文章

2016电脑组装教程 史上最全自己组装电脑教程

  DIY电脑一直都是电脑爱好者非常喜欢的,电脑组装通常包括电脑硬件的选择,DIY硬件组装以及操作系统安装三个部分.对于电脑爱好者来说,通过自己动手DIY组装电脑,不仅可以更为深刻的认识硬件,了解电脑主机内部结构,还能够学习到安装系统等知识,从中可以带来很多乐趣. 2015电脑组装教程:史上最全自己组装电脑教程 本次电脑组装教程主要包含三个部分,包括电脑配置清单.电脑硬件认识以及电脑组装教程.此前,介绍过的几次组装电脑教程都是不是很详细,这次的装机教程堪称史上最全的,步骤上会介绍的非常细,对于新

.Net魔法堂:史上最全的ActiveX开发教程——开发篇

一.前言   在设计某移动内部自动化运维平台时,经综合考虑终端机性能和功能需求等因素后,决定采用B/S模式,并且浏览器通过ActiveX组件实现与服务器 Agent作P2P的通讯.好处,整个平台以网页形式存在,界面渲染性能高于桌面应用(终端机性能其低):通过ActiveX组件与各服务器Agent进 行P2P通讯,不对Web服务器造成压力.风险,当用ActiveX传输上百兆的文件时,会对浏览器造成哪些影响:团队中没有类似解决方案的经验供借鉴. 解决方法:前期对主要功能进行快速原型设计.开发.验证和

.Net魔法堂:史上最全的ActiveX开发教程——发布篇

一. 前言    接着上一篇<.Net魔法堂:史上最全的ActiveX开发教程--开发篇>,本篇讲述如何发布我们的ActiveX.   二.废话少讲,马上看步骤!    1. 打包  C#开发的Activex不像`OCX`那样直接通过`regsvr32.exe`注册,而采用两种方式发布使其运行在浏览器上.  1. 离线安装:将控件类库打包成MSI安装包,然后在客户端安装. 1.1. 添加安装项目 1.2. 右键"添加"->"项目输出",选择Acti

.Net魔法堂:史上最全的ActiveX开发教程——部署篇

一.前言   接<.Net魔法堂:史上最全的ActiveX开发教程--发布篇>,后我们继续来部署吧!   二. 挽起衣袖来部署     ActiveX的部署其实就是客户端安装ActiveX组件,对未签名和已签名的ActiveX,分别有对应的部署方式.   1. 部署未签名的ActiveX 未签名的ActiveX控件不受浏览器端信任,默认是不被允许安装的 1. 将网站加入 **可信站点** 2. 在"可信站点"和"Internet"下的 **自定义级别**

史上最详细的CocoaPods安装教程(图文)_IOS

虽然网上关于CocoaPods安装教程多不胜数,但是我在安装的过程中还是出现了很多错误,所以大家可以照下来步骤装一下,我相信会很好用. 前言 在iOS项目中使用第三方类库可以说是非常常见的事,但是要正确地配置他们有时候是非常繁琐的事情,幸运的是CocoaPods是一个很好的解决方案. 什么是CocoaPods CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为"Pods"的依赖库(这些类库必须是CocoaPods本身所支持的

史上最全的机器学习资料(下)

推荐:史上最全的机器学习资料(上) 机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论.统计学.逼近论.凸分析.算法复杂度理论等多门学科.专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能.机器学习牵涉的编程语言十分之广,包括了MATLAB.Julia.R.Perl.Python.Clojure.Ruby等等. 为了让开发者更加广泛.深入地了解机器学习,组织翻译了GitHub Awesome Machi

史上最全Vim快捷键键位图(入门到进阶)

史上最全Vim快捷键键位图(入门到进阶) 转载自:菜鸟教程 菜鸟主页: http://www.runoob.com/ Vim键位图 http://www.runoob.com/w3cnote/all-vim-cheatsheat.html

史上最全外链资源寻找方法

很久没来A5发布文章了,期间都在从事seo培训工作,今天笔者在闲暇之余为大家分享一篇<史上最全外链资源寻找方法>的文章. 外链资源寻找的方法是数不胜数,大家只需百度一下便可以看到N个,但是笔者今天想要分享的是集个人多年seo经验总结出来的希望大家在绿萝算法推出的今天,外链对网站权重提升变得微乎甚微的情况下用心去阅读,搜索引擎再变也抵不过你多方平台发布外链,多方制造高质量外链等. 下面我们直接进入正题:以上是20种外链寻找方法 1.最简单最直接domain:网址,这个可以基本看到对手所发外链信息

从史上第一炒作事件谈谈SEO

无论建站出于哪种目的,我们都希望自己的网站能获得一个好的排名,获得更多的流量和更多人的认同,"认同感"是"人"这种高等动物的重要属性,"认同"恰恰是从"认识"开始的我们花费心血做好的网站,如果置之于茫茫网海,无人认识,就如同海底的石头,森林中的枯叶一样.为了摆脱这个杯具,所以我们拼命SEO.一天又一天,一月又一月,我问很多人:SEO,累吗?大部分的回答都只有这一个字:"累" 要让别人认识真的就那么累吗? 我