作者 | Peter

编辑 | AI有道

系列文章:

吴恩达《Machine Learning》精炼笔记 1:监督学习与非监督学习

吴恩达《Machine Learning》精炼笔记 2:梯度下降与正规方程

吴恩达《Machine Learning》精炼笔记 3:回归问题和正则化

吴恩达《Machine Learning》精炼笔记 4:神经网络基础

吴恩达《Machine Learning》精炼笔记 5:神经网络

今天带来第六周课程的笔记:关于机器学习的建议。内容包含:

  • 应用机器学习的建议

  • 评估假设

  • 模型选择和交叉验证

  • 方差和偏差诊断

  • 正则化与过拟合问题

应用机器学习的建议

当我们运用训练好了的模型来预测未知数据的时候发现有较大的误差,我们下一步可以做什么?

  • 获得更多的训练样本

  • 尝试减少特征的数量

  • 尝试获得更多的特征

  • 尝试增加多项式特征

  • 尝试减少正则化程度λ

  • 尝试增加正则化程度λ

评估假设Evaluating a Hypothesis

当学习的算法时候,考虑的是如何选择参数来使得训练误差最小化。在模型建立的过程中很容易遇到过拟合的问题,那么如何评估模型是否过拟合呢?

为了检验算法是否过拟合,将数据集分成训练集和测试集,通常是7:3的比例。关键点是训练集和测试集均要含有各种类型的数据,通常我们要对数据进行“洗牌”,然后再分成训练集和测试集。

当我们在训练集上得到我们的学习模型之后,就需要使用测试集合来检验该模型,有两种不同的方法:

  1. 线性回归模型:利用测试数据计算代价函数J

  2. 逻辑回归模型:

  • 先利用测试数据计算代价函数Jtest(θ)

  • 在针对每个测试集样本计算误分类的比率,再求平均值

模型选择和交叉验证

交叉验证

什么是交叉验证?

交叉验证集合指的是:使用60%的数据作为训练集,使用20%的数据作为交叉验证集,使用20%的数据作为测试集

模型选择
  • 使用训练集训练出10个模型

  • 用10个模型分别对交叉验证集计算得出交(代价函数的值)

  • 选取代价函数值最小的模型

  • 用上面步骤中选出的模型,对测试集计算得出推广误差(代价函数的值)

  • 训练误差表示为:

交叉验证误差(通过交叉验证数据集得到的)表示为:

测试误差

诊断方差和偏差Diagnosing Bias vs. Variance

如果一个算法的运行结果不是很理想,只有两种情况:要么偏差过大,要么方差过大。换句话就是说,要么出现欠拟合,要么出现过拟合。

通过训练集和交叉验证集的代价函数误差和多项式的次数绘制在同张图中:

1. 高偏差阶段

交叉验证集和训练集的代价函数误差都是很大,近似相等;

2. 高方差阶段

交叉验证集的误差远大于训练集的误差,训练集的误差很低

正则化和偏差/方差Regularization and Bias_Variance

正则化基础

正则化技术主要是为了解决过拟合的问题。过拟合指的是:对样本数据具有很好的判断能力,但是对新的数据预测能力很差。

  • 第一个模型是一个线性模型,欠拟合,不能很好地适应我们的训练集

  • 第三个模型是一个四次方的模型,过于强调拟合原始数据,而丢失了算法的本质:预测新数据

  • 中间的模型似乎最合适

栗子

假设我们需要对下图中的多项式进行拟合,需要正则化项

  • 当λ很大的时候,出现高偏差,假设hθ(x)是一条直线

  • 当λ很小约为0的时候,出现高方差

如果是多项式拟合,x的次数越高,拟合的效果越好,但是相应的预测能力就可能变差。对于过拟合的处理:

  1. 丢弃一些不能正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法,例如PCA

  2. 正则化。保留所有的特征,但是减少参数的大小(magnitude)

加入正则化参数

在模型hθ(x)=θ0+θ1x1+θ2x2+θ3x3+θ4x4中,主要是高次项产生的过拟合问题:

加入正则化参数后能够防止过拟合问题,其中λ是正则化参数Regularization Parameter :

Attention:一般地,不对θ0进行惩罚;加上正则化参数实际上是对参数θ进行惩罚。经过正则化处理后的模型和原模型的对比:

  • 如果λ过大,所有的参数最小化,模型变成了hθ(x)=θ0,造成了过拟合

参数λ的选择

  1. 使用训练集训练出多个不同程度的正则化模型

  2. 用多个模型分别对交叉验证集计算的出交叉验证误差

  3. 选择得出交叉验证误差最小的模型

  4. 运用步骤3中选出模型对测试集计算得出推广误差

学习曲线 Learning Curves

使用学习曲线来判断某一个学习算法是否处于偏差、方差问题。

学习曲线是将训练集误差和交叉验证集误差作为训练集样本数量mm的函数绘制的图表

训练样本m和代价函数J的关系

从下图1中看出结果

  • 样本越少,训练集误差很小,交叉验证集误差很大

  • 当样本逐渐增加的时候,二者的差别逐渐减小

说明:在高偏差、欠拟合的情况下,增加样本数量没效果

在高方差的情况下,增加数量可以提高算法效果

总结

  1. 获得更多的训练样本——解决高方差

  2. 尝试减少特征的数量——解决高方差

  3. 尝试获得更多的特征——解决高偏差

  4. 尝试增加多项式特征——解决高偏差

  5. 尝试减少正则化程度λ——解决高偏差

  6. 尝试增加正则化程度λ——解决高方差

神经网络的方差和偏差

较小的神经网络,参数少,容易出现高偏差和欠拟合;

较大的神经网络,参数多,容易出现高方差和过拟合

通常选择较大的神经网络并采用正则化处理会比采用较小的神经网络效果要好

查准率和查全率

查准率precision:实际和预测同时为正例 / 预测值全部为正例

查全率recall:实际和预测同时为正例 / 实际值全部为正例

查全率和查准率是一对矛盾的量,一个高的话,另一个必定低,关系图如下:

查全率和查准率之间的平衡点,一般是使用F1系数表示

至此,第六周的课程笔记完毕!


推荐阅读

(点击标题可跳转阅读)

干货 | 公众号历史文章精选

我的深度学习入门路线

我的机器学习入门路线图

重磅

AI有道年度技术文章电子版PDF来啦!

扫描下方二维码,添加 AI有道小助手微信,可申请入群,并获得2020完整技术文章合集PDF(一定要备注:入群 + 地点 + 学校/公司。例如:入群+上海+复旦

长按扫码,申请入群

(添加人数较多,请耐心等待)

感谢你的分享,点赞,在看三连↓

吴恩达《Machine Learning》精炼笔记 6:关于机器学习的建议相关推荐

  1. coursera—吴恩达Machine Learning笔记(1-3周)

    Machine Learning 笔记 笔记主要按照进度记录上课主要内容和部分代码实现,因为我会看一阶段再进行整理,内容会有一定交叉.关于代码部分,一开始我是只为了做作业而写代码的,现在觉得不妨仔细看 ...

  2. 吴恩达ex3_吴恩达Machine Learning Ex3 python实现

    1.Multi-class classification 使用Logistic regression和neural networks来识别手写数字识别(从0到9).在第一部分练习中使用Logistic ...

  3. 深度学习入门首推资料--吴恩达深度学习全程笔记分享

    本文首发于微信公众号"StrongerTang",可打开微信搜一搜,或扫描文末二维码,关注查看更多文章. 原文链接:(https://mp.weixin.qq.com/s?__bi ...

  4. 机器学习-吴恩达网易云课堂笔记

    机器学习-吴恩达网易云课堂笔记 Machine Learning: A computer program is said to learn from experience E with respect ...

  5. coursera-斯坦福-机器学习-吴恩达-第9周笔记(下)-推荐系统

    coursera-斯坦福-机器学习-吴恩达-第9周笔记(下)-推荐系统 coursera-斯坦福-机器学习-吴恩达-第9周笔记下-推荐系统 1预测电影等级 1任务设想 2基于内容的推荐 2协同过滤 1 ...

  6. 737 页《吴恩达深度学习核心笔记》发布,黄海广博士整理!

    点击上方"AI有道",选择"置顶"公众号 重磅干货,第一时间送达 深度学习入门首推课程就是吴恩达的深度学习专项课程系列的 5 门课.该专项课程最大的特色就是内容 ...

  7. 吴恩达深度学习课程笔记(初步认识神经网络)

    吴恩达深度学习课程笔记1 课程主要内容 1.神经网络与深度学习介绍 2.Improving Deep Neural Networks:超参数调整,正则化,优化方法 3.结构化机器学习工程:比如如何分割 ...

  8. 吴恩达深度学习课程笔记(四):卷积神经网络2 实例探究

    吴恩达深度学习课程笔记(四):卷积神经网络2 实例探究 吴恩达深度学习课程笔记(四):卷积神经网络2 实例探究 2.1 为什么要进行实例探究 2.2 经典网络 LeNet-5 AlexNet VGG- ...

  9. 免费分享全套吴恩达深度学习课程笔记以及编程作业集合

    分享吴恩达深度学习全套 笔记 笔记来源于吴恩达老师课程中口述翻译,并包含板书.可以取代看视频,做到更快速学习. (部分目录) (部分目录) (板书) 编程作业 扫描二维码后台回复"0&quo ...

  10. 吴恩达深度学习课程笔记-3

    吴恩达深度学习课程笔记-3 src="http://nbviewer.jupyter.org/github/HuaGuo1992/Blog/blob/master/%E5%90%B4%E6% ...

最新文章

  1. 常见基本不等式的几何解释
  2. 神经网络中的注意力机制总结及PyTorch实战
  3. 兰州大学的《致谢》火了:“我从来不曾优秀过,也从来不曾放弃过!”
  4. curl与wget区别
  5. ustc小道消息20220120
  6. tomcat_动态java项目的目录结构
  7. 一篇文章彻底说清JS的深拷贝/浅拷贝
  8. Centos 云服务器磁盘占用率90%以上的排查解决
  9. RBF非线性滤波的Matlab,基于RBF神经网络的非线性滤波器的研究
  10. Linux两种方式rd.break和init重置root管理员密码
  11. 相机姿态估计(五)--DLS
  12. v9更新系统后为何显示服务器连接,红伞V9升级不能……报告里说好多文件无法与服务器建立连接……...
  13. JavaScript计算器
  14. MSP430的AD7705驱动程序
  15. 华硕显卡驱动怎么安装?
  16. “ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问” 问题解决办法
  17. Android:启动流程
  18. gamemaker学习笔记:导入龙骨动画
  19. ALLHIC使用 | HiC辅助基因组组装(三)
  20. 我和Double Lift的故事(三)——应用篇

热门文章

  1. 毁掉云计算项目的三个“好办法”
  2. NumPy基础入门学习
  3. linux下的ps 查看进程命令
  4. Emacs中使用Forms-mode以表格形式展示/编辑简单的文本数据
  5. [Asp.Net]自己的一个SqlHelper类
  6. linux下配置DHCP中继代理
  7. Ant Design Vue select下拉列表设置默认值
  8. JavaScript学习笔记:你必须要懂的原生JS(一)
  9. oracle 自定义函数
  10. HDU 1525 - Euclid's Game ( 博弈 )