引言:

最近开始学习“机器学习”,早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程。今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子加深学生的印象。

视频链接(bilibili):李宏毅机器学习(2017)

另外已经有有心的同学做了速记并更新在github上:李宏毅机器学习笔记(LeeML-Notes)

所以,接下来我的笔记只记录一些我自己的总结和听课当时的困惑,如果有能够帮我解答的朋友也请多多指教。

一、误差来自哪里?该如何处理这些误差?

从第一课可以知道,越复杂的模型并不一定会带来越低的误差(error)。误差来自两方面:

  • 偏差(bias)
  • 方差(variance)

    如果可以诊断误差的来源,就可以选择适当的方法来改进自己的模型。

    看到这里我有一些困惑,误差、偏差、方差听起来太像了,到底有什么区别呢?



    【此处与机器学习无关:图1真的挺难得,不知不觉有一种管理方面感触的代入感,左上角图表示好的领导(战略决策层)与好的员工(战术执行层)的配合,右上角图表示好的领导(战略决策层)与差的员工(战术执行层)的配合,左下角图表示差的领导(战略决策层)与好的员工(战术执行层)的配合,右下角图表示差的领导(战略决策层)与差的员工(战术执行层)的配合。从这方面可以看出,一个好的战略决策有多么重要!】





    简单的模型(如一次方程)所带来的方差比复杂模型(如五次方程)所带来的方差要小如图4。



    虽然简单的模型有助于控制方差,但如果一开始选定的范围并没有包含f^,那么f*所带来的偏差也有很大可能带来误差。如图5。

  • 如果误差来自于偏差,那么往往在训练集上欠拟合(underfitting)
  • 如果误差来自于方差,那么往往在训练集上过拟合(overfitting)



    机器学习需要弄清楚一件事情:误差来自哪里?如果是偏差,那么该怎么办?如果是方差,那么又该怎么办?如图7。
  • 当欠拟合的时候(数据无法很好拟合f),那就来自偏差,这时应该重新设计模型,因为f^没有被f所包含
  • 当过拟合的时候,那误差就来自方差,这时候有两种办法:
    • 增加数据:几乎是万灵丹,不会伤害偏差,但有一个缺点是成本太高
    • 正则化:可以是曲线变得平滑

二、选择模型的过程中需要注意的事情

通常我们都可以在偏差和方差之间找到一个平衡,从而找到合适的模型。但一定不要做这样的事情:

直接用全部训练集直接选择模型,这样你在测试集上得到的误差并不能反映真实测试集上的误差。如图8。



那么应该怎么做?

  • 交叉验证:将训练集分为训练集和验证集(validation set),先用这两个集合选择出误差比较小的模型,然后拿自己的测试集来比较误差的大小。如果觉得第一步本身训练集并不大还要再分的话,可以在选好模型后在整个训练集上再确认一下。这样你的测试集基本上可以反映出模型在真正测试集的误差。如图9。



    如果你担心自己分的测试集可能带来偏差的话,可以做N次交叉验证,将训练集分为多组小训练集1,小训练集2,小验证集,得到误差最小的模型后再在全量的训练集上继续训练即可。如图10。



    在这里李宏毅老师特别提到,在训练集上选好模型后,如果测试集上表现偏差比较大,不要再返回去选择那些误差表现大的模型,因为他们可能在private测试集上表现出的误差可能会更大。

李宏毅老师机器学习课程笔记_ML Lecture 2: Where does the error come from?的更多相关文章

  1. 李宏毅老师机器学习课程笔记_ML Lecture 3-1: Gradient Descent

    引言: 这个系列的笔记是台大李宏毅老师机器学习的课程笔记 视频链接(bilibili):李宏毅机器学习(2017) 另外已经有有心的同学做了速记并更新在github上:李宏毅机器学习笔记(LeeML- ...

  2. 李宏毅老师机器学习课程笔记_ML Lecture 1: ML Lecture 1: Regression - Demo

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  3. 李宏毅老师机器学习课程笔记_ML Lecture 1: 回归案例研究

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  4. 李宏毅老师机器学习课程笔记_ML Lecture 0-2: Why we need to learn machine learning?

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  5. 李宏毅老师机器学习课程笔记_ML Lecture 0-1: Introduction of Machine Learning

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  6. Andrew 机器学习课程笔记

    Andrew 机器学习课程笔记 完成 Andrew 的课程结束至今已有一段时间,课程介绍深入浅出,很好的解释了模型的基本原理以及应用.在我看来这是个很好的入门视频,他老人家现在又出了一门 deep l ...

  7. Andrew Ng机器学习课程笔记(四)之神经网络

    Andrew Ng机器学习课程笔记(四)之神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365730.html 前言 ...

  8. 【读书笔记与思考】Andrew 机器学习课程笔记

    Andrew 机器学习课程笔记 完成 Andrew 的课程结束至今已有一段时间,课程介绍深入浅出,很好的解释了模型的基本原理以及应用.在我看来这是个很好的入门视频,他老人家现在又出了一门 deep l ...

  9. Andrew Ng机器学习课程笔记(五)之应用机器学习的建议

    Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...

随机推荐

  1. PHP的ArrayAccess接口介绍

    在 PHP5 中多了一系列新接口.在 HaoHappy 翻译的你可以了解到他们的应用.同时这些接口和一些实现的 Class 被归为 Standard PHP Library(SPL).在 PHP5 中 ...

  2. Spring Cloud Feign 组成和配置

    Feign的组成 接口 作用 默认值 Feign.Builder Feign的入口 Feign.Builder Client Feign底层用什么去请求 和Ribbon配合时:LoadBalancer ...

  3. C#开发BIMFACE系列30 服务端API之模型对比1:发起模型对比

    系列目录     [已更新最新开发文章,点击查看详细] 在实际项目中,由于需求变更经常需要对模型文件进行修改.为了便于用户了解模型在修改前后发生的变化,BIMFACE提供了模型在线对比功能,可以利用在 ...

  4. SpringBoot图文教程10—模板导出|百万数据Excel导出|图片导出「easypoi」

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...

  5. idea 报Сannot Run Git runnerw.exe: AttachConsole failed with error 6

    报错:Сannot Run Git runnerw.exe: AttachConsole failed with error 6 解决方案:指向Git 的git.exe文件所在的安装目录,配置上就可以 ...

  6. 从输入URL到页面展示

    当我们输入 URL 并按回车后,浏览器会对 URL 进行检查,首先判断URL格式,比如是ftp http ed2k等等,我们这里假设这个URL是http://hellocassie.cn,那么浏览器会 ...

  7. safari坑之 回弹

    博客地址: https://www.seyana.life/post/20 今天在使用safari浏览博客的时候, 发现在拉至顶部并产生回弹之后,头部导航隐藏了, 除非在上拉的时候,刚好达到顶部而不超 ...

  8. 【转】Maven详细

    Maven maven 中央仓库 网站 https://mvnrepository.com/ 全世界 发布到Maven仓库 供用类着使用 maven 本质上下载工具和构建工具 下载工具 迅雷 只能下载 ...

  9. 仿IntelliJ Darcula的Swing主题FlatLaf使用方法

    最近Sandeepin想写个基于Java Swing的RSS阅读器练练手,不过Swing默认主题太丑了,切成系统原生的主题也不是非常好看,正好感觉开发时用的IDEA主题很不错,不管是Light还是Da ...

  10. ubuntu 安装flask+nginx+gunicorn 待定

    第一步 先检查服务器环境   pip python3 mysql redis 能下就下,该升级就升级 第二步 如果你的flask程序在github上 请使用git clone 地址 下载下来(如果是私 ...