引言:

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

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

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

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

1、回归问题的应用



回归问题因为主要输出的是数字,所以可以有以下应用:

  • 股票市场预测:输入历史股票数据,预测第二天大盘点位
  • 自动驾驶:输出的是方向盘应该转动的角度
  • 推荐系统:输出购买者购买某商品或阅读某文章的可能性

2、解决回归问题需要了解的一些概念



以宝可梦训练后的CP值(战斗力数值)预测为例,y=b+wxcp这组线性函数就是模型(model),xi 是特征(feature),wi 是权重(weight),b是偏差(bias)

3、宝可梦cp预测项目的分析步骤

  • 根据数据选择模型:选择线性模型
  • 评估模型中函数的好坏:根据10只宝可梦的训练数据计算出估测误差loss function(如图3)
  • 选出最好的函数:即第二步中可以使得loss function中数值最小的函数。这里李老师推荐方法为gradient descent(梯度下降法),因为它是一种对可微函数取最小值的通用解决方案。



4、Gradient descent(梯度下降法)



以比较简单的损失函数为例(如图5),梯度下降法就是对该函数的x坐标求导,即曲线在该点的斜率,如果斜率为负,需要向右加载,反之亦然,知道斜率为零,找到极小值或局部最优解(Local optimal)。每次加载的距离被称为步长或学习率。

5、梯度下降法最害怕的事情

如图6左侧,如果损失函数像左侧那样,那么梯度下降法能不能找到全局的最优解就是考验“人品”的事情,但幸运的是,对于线性回归问题,它的损失函数都是凸函数(convex),也就是不会出现像图5或图6左侧那种情况,它只有最小值,没有局部的极小值。

6、如何让损失值降到最小?

损失函数取值最小,很多人第一感觉就是增加函数的复杂度。图7到图10分别是二元至五元方程的模型,但可以看出虽然在训练集上损失值变得较小,但测试集上却没有这种趋势,甚至五元方程的模型还表现出了很荒谬的结果。

7、过拟合

上面出现那种荒谬结果的现象被称为过拟合。

8、导入更多数据后结果如何?

导入更多数据后发现,很多宝可梦的点并没有落在预测的模型函数曲线上,推测在起初建模的时候忽略了一些重要的特征(feature),当不同类型的宝可梦训练的时候,成长曲线是不同的。

增加特征以后如何构建线性模型?见图14。

9、如何防止过拟合?



需要重新定义损失函数,有一种方法叫正则化。

因为过拟合往往是因为原有模型空间过大,而正则化就是一种控制模型空间的方法。

李宏毅老师机器学习课程笔记_ML Lecture 1: 回归案例研究的更多相关文章

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

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

  2. 李宏毅老师机器学习课程笔记_ML Lecture 2: Where does the error come from?

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

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

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

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

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

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

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

  6. Andrew Ng机器学习课程笔记--week3(逻辑回归&正则化参数)

    Logistic Regression 一.内容概要 Classification and Representation Classification Hypothesis Representatio ...

  7. Andrew 机器学习课程笔记

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

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

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

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

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

随机推荐

  1. iOS开发黑科技之runtime

    iOS 开发之黑科技-runtime runtime其实就是oc底层的一套C语音的API 调用方法的本质就是发消息, 1.动态交换两个方法的实现(特别是交换系统自动的方法) 2.动态添加对象的成员变量 ...

  2. Python——7列表生成式

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  3. linux学习--2.文件管理的基本命令

    文件的基本操作 前言: 看完这篇图文我应该能保证读者在Linux系统下对文件的操作能跟用Windows环境下一样流畅吧,好了下面正文 正文: 基础知识: linux里共有以下几类文件,分别为目录(di ...

  4. python爬虫-纠正MD5错误认知

    m = md5(".encode()) print(m.hexdigest()) # 25d55ad283aa400af464c76d713c07ad m = md5(".enco ...

  5. pycharm 关于模块安装出现的“[error] Microsoft Visual C++ 14.0 is required” 解决办法

    刚才正准备对pycharm进行一番操作的时候,噔  噔磴噔噔 “no module define xxx” ,那我当然要把xxx给搞到pycharm上来啊, 不一会功夫 ,biu~ “[error] ...

  6. Android开发 run的时候出现waiting for debugger的情况,及解决问题

    出现原因:不清楚,大概推测是因为缓存没有清除干净 解决方法: 方法一. 重新启动模拟器 好像就点右上角的x符号是没有用的,因为会保存状态,在关闭之后还要点击Cold Boot Now,冷启动,才会把之 ...

  7. spring——AOP原理及源码(三)

    在上一篇中,我们创建并在BeanFactory中注册了AnnotationAwareAspectJAutoProxyCreator组件.本篇我们将要探究,这个组件是在哪里以及何时发挥作用的. 调试的起 ...

  8. node--静态服务器

    1.同步读取文件 const data = fs.readFileSync('./model/mime.json');   // 这里是添加了可以正常链接其他格式文件的服务器 const http = ...

  9. 前端每日实战:55# 视频演示如何用纯 CSS 创作一个太阳、地球、月亮的运转模型

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/RJjQYY 可交互视频 此视频是可 ...

  10. C++泛化双端队列

    循环双端队列 双端队列可以在队首和队尾进行入队操作.出队操作的特殊队列. 循环双端队列是充分利用空间,使用格外的数据存储队头和队尾,这里利用数组进行实现. 循环双端队列(CircleQueue.h) ...