亲宝软件园·资讯

展开

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

leogoforit 人气:0
####引言: 最近开始学习“机器学习”,早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程。今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子加深学生的印象。 视频链接(bilibili):[李宏毅机器学习(2017)](https://www.bilibili.com/video/av10590361?from=search&seid=4930602846193099298) 另外已经有有心的同学做了速记并更新在github上:[李宏毅机器学习笔记(LeeML-Notes)](https:/https://img.qb5200.com/download-x/datawhalechina.github.io/leeml-notes/#/?id=%e6%9d%8e%e5%ae%8f%e6%af%85%e6%9c%ba%e5%99%a8%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0leeml-notes) 所以,接下来我的笔记只记录一些我自己的总结和听课当时的困惑,如果有能够帮我解答的朋友也请多多指教。 ###一、误差来自哪里?该如何处理这些误差? 从第一课可以知道,越复杂的模型并不一定会带来越低的误差(error)。误差来自两方面: - 偏差(bias) - 方差(variance) 如果可以诊断误差的来源,就可以选择适当的方法来改进自己的模型。 看到这里我有一些困惑,误差、偏差、方差听起来太像了,到底有什么区别呢? ![图1 偏差、方差的区别](https://upload-images.jianshu.io/upload_images/2844213-a0ee8c82245e1f95.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 【此处与机器学习无关:图1真的挺难得,不知不觉有一种管理方面感触的代入感,左上角图表示好的领导(战略决策层)与好的员工(战术执行层)的配合,右上角图表示好的领导(战略决策层)与差的员工(战术执行层)的配合,左下角图表示差的领导(战略决策层)与好的员工(战术执行层)的配合,右下角图表示差的领导(战略决策层)与差的员工(战术执行层)的配合。从这方面可以看出,一个好的战略决策有多么重要!】 ![图2 模型复杂度、误差、偏差、方差的关系](https://upload-images.jianshu.io/upload_images/2844213-80ee136023c8bd69.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![图3 机器学习的过程是寻找到合适的f^](https://upload-images.jianshu.io/upload_images/2844213-4ded6604bb3293bd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 简单的模型(如一次方程)所带来的方差比复杂模型(如五次方程)所带来的方差要小如图4。 ![图4 简单的模型有助于控制模型空间,从而控制方差大小](https://upload-images.jianshu.io/upload_images/2844213-94b264fb95c12e95.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 虽然简单的模型有助于控制方差,但如果一开始选定的范围并没有包含f^,那么f*所带来的偏差也有很大可能带来误差。如图5。 ![图5](https://upload-images.jianshu.io/upload_images/2844213-18fba7c0e7c8c2c6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - 如果误差来自于偏差,那么往往在训练集上欠拟合(underfitting) - 如果误差来自于方差,那么往往在训练集上过拟合(overfitting) ![图6 ](https://upload-images.jianshu.io/upload_images/2844213-4411bc42a4de6eb5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 机器学习需要弄清楚一件事情:误差来自哪里?如果是偏差,那么该怎么办?如果是方差,那么又该怎么办?如图7。 - 当欠拟合的时候(数据无法很好拟合f*),那就来自偏差,这时应该重新设计模型,因为f^没有被f*所包含 - 当过拟合的时候,那误差就来自方差,这时候有两种办法: - 增加数据:几乎是万灵丹,不会伤害偏差,但有一个缺点是成本太高 - 正则化:可以是曲线变得平滑 ![图7 ](https://upload-images.jianshu.io/upload_images/2844213-c8e132c628d9951c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ###二、选择模型的过程中需要注意的事情 通常我们都可以在偏差和方差之间找到一个平衡,从而找到合适的模型。但一定不要做这样的事情: 直接用全部训练集直接选择模型,这样你在测试集上得到的误差并不能反映真实测试集上的误差。如图8。 ![图8 选择模型的时候不要做什么](https://upload-images.jianshu.io/upload_images/2844213-ea274111782228b1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 那么应该怎么做? - 交叉验证:将训练集分为训练集和验证集(validation set),先用这两个集合选择出误差比较小的模型,然后拿自己的测试集来比较误差的大小。如果觉得第一步本身训练集并不大还要再分的话,可以在选好模型后在整个训练集上再确认一下。这样你的测试集基本上可以反映出模型在真正测试集的误差。如图9。 ![图9](https://upload-images.jianshu.io/upload_images/2844213-66b9d9252cbbee30.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 如果你担心自己分的测试集可能带来偏差的话,可以做N次交叉验证,将训练集分为多组小训练集1,小训练集2,小验证集,得到误差最小的模型后再在全量的训练集上继续训练即可。如图10。 ![图10](https://upload-images.jianshu.io/upload_images/2844213-86ad1b0951687495.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 在这里李宏毅老师特别提到,在训练集上选好模型后,如果测试集上表现偏差比较大,不要再返回去选择那些误差表现大的模型,因为他们可能在private测试集上表现出的误差可能会更大。

加载全部内容

相关教程
猜你喜欢
用户评论