如何应用ML的建议-下
正则化与过拟合(highvariance)和欠拟合(highbias)的关系-部分(五)
ML的诊断方法-部分(六)
如何采取下一步-部分(七)
部分(五)
从图中可以看出,正则化项可以用来影响模型函数对数据是否过拟合,正则化项的本意是防止过拟合的,但是对于前面的lamuda的正确的选取却很重要,对于第一个坐标系来说,因为lamuda太大,导致正则化项很小,即在训练后会使得theta(1)~theta(n)都趋向于0,而只有一个参数theta(0),使得决策线(此处举例的是线,而非面)成为了一个常量函数,严重欠拟合;而对于lamuda很小的时候,相当于正则化项不存在(可以近似这么认为),那么还是依然处于过拟合状态。所以lamuda的正确的选取,对于具体的数据集来说是非常重要的,当然这是模型的属性,而非数据集的属性。
首先,我们假设没有正则化项,先计算在train,validation和test上的错误:
,然后选取不同的lamuda,比如0;0.02;0.04;0.06;.......10;10.24等,通过对不同的lamuda的选取然后带入有正则化的损失函数,求出不同lamuda对应的参数theta集,
如图,在通过有正则化项求出的theta 然后在带入没有正则化项的误差函数中,通过在train和validation上的不同表现来找到最合适的那个lamuda。蓝线表示Jtrain的变化,粉红色表示Jcv的变化,因为最初是没有lamuda的,所以在train上是处于拟合最好,也就是过拟合状态,随着lamuda的增大,开始朝着欠拟合状态发展, 而在validation上的变化显示,开始因为过拟合,所以显示高方差状态,即Jcv是很大的,在后面当lamuda很大的时候,是欠拟合状态,在validation上的表现依然是很差,所以找出那个中间项(个人考虑,那是不是不需要计算Jtrain,直接计算Jcv岂不是省事情?)其实这里只是为了说明一
个状况而已,因为在前面步骤中找到合适的lamuda然后求出相应的theta参数集,而在现实实验中,有可能第一次没有正则化项的对应的参数刚好就是理想的参数时,就不需要正则化项了,所以还是需要将Jtrain和Jcv都计算出来,然后进行相对应的比较,(即这个图是个理想图,而我们遇到的有可能只是图的一部分,所以没法确定是哪一部分,因为有可能有的参数完全不需要正则化项就能不是过拟合状态。)
部分(六)
对于开始说的如何对ML进行诊断,这部分给了一些答案,首先看图:
对于样本数量m来说,当m很小的时候,比如m=1,2,3,4的时候,右上角的图可以看出,模型可以轻松的进行拟合没有任何困难,这使得Jtrain可以直接达到0的状态,但是当m越来越大的时候,模型已经不能以Jtrain=0的状态进行拟合了,这就如左边的大坐标图所示,随着m的变大,Jtrain会变得越来越大,因为数据量越多,而模型处在一个有限拟合的状态,这时候其实也可以说是欠拟合了,但是对于Jcv来说,恰恰相反,因为m很小的时候,模型中的参数学习到的原始数据中的表征信息不是很多,所以无法对外来的数据进行预测,所以模型对于新样本的预测能力很差,随着m的增大,模型的参数越来越能够表示数据中隐藏的表征的信息,也就是这个模型越来越能够代表这些数据,这时候对于外来的样本,即
测试样本来说,他的预测能力就越来越好,所以有如图Jcv的趋势所示。
当你的模型处于欠拟合状态时:
如图所示,假设你的模型是欠拟合的,那么Jtrain随着m的增加会呈现图中粉红色曲线的趋势,假设在平坦的部分的时候m小于5,即m=5的情况下,Jtrain已经稳定,那么再多的数据也无法将Jtrain增加(这里认为m已经考虑到所有情况的数据,而后面的数据所产生的Jtrain都在之前的范围内,所以无法增加新的误差,)即如图所示,右下角的图,m增多的情况下,样本都在模型欠拟合状态中,而且,对于图中的例子来说,这时候的直线已经是最理想的直线模型(暂时没考虑其他非直线模型的情况下,即当前模型)而这时候Jcv开始如图中所示是很大的,随着m的增大,能够很好的学习数据的表征信息来进行预测,但是当模型趋于稳定的时候,已经无法将Jcv降得更低。为什么Jtrain会等于Jcv??是因为这里的模型在对于任何数据都是这种欠拟合的状态,在过少的参数和过多的样本的情况下,模型在train集和validation上的表现都是相似的,所以他们最后会趋于相等。
当你的模型处于过拟合状态时:
,这次假设你的模型是一个过拟合模型,产生的模型函数能够很好的拟合数据,对于右图中m=5 和m很大时,模型都能够很好的拟合,这时候随着m很小开始往m很大方向发展时,你发现你的Jtrain从小变大,开始有趋于平稳的趋势,而Jcv如上面欠拟合状况一样,开始很大,随着训练得到的参数的好转,能够表现更好的数据表征,但是当你数据训练结束时发现两者的差距都很大,表现在图中就是那个黑线所示,有很大的gap,而这时候,增加足够多的样本会变得有必要,会使得模型能够拟合更多的数据,如图中黑线右边部分所示,Jtrain和Jcv会趋于相交,但是最终如果增加过多的数据,那么就会如欠拟合所示会达到趋于稳定,最好相等的情况,那时候这个模型已经无法表现更多数据的表征,那么就会变得欠拟合起来。(此处考虑,那是不是不同的数据集,有着不同合适的模型,那对于真实的自然界来说,数据量无穷无尽,岂不是任何的模型最后都会趋于欠拟合状态?但是也有可能当自然状态下所有的数据的表征都能够很好的被捕捉,增加的新的自然界样本只是与之前的数据重复罢了,那么对于模型来说,并未增加新的样本。至少对于科研所使用的不同数据集来说,的确得考虑过拟合和欠拟合状态。)
部分(七)
现在可以回到部分(一)中的几种策略了:
正如ng注释的一样,对于欠拟合(high bias)和过拟合(high variance)的状态,都有着不同的策略,选错了下一步该做什么,那么就无异于浪费时间。
ng很好的在最后的时候回到了NN来进行讲解:
这里的cheaper和expensive是相对而言的,当你面对一个数据集,选择的网络太简单,那么就是欠拟合状态,而选择的太复杂,那么就是过拟合状态,这时候最好的选择是增加正则化项来降低过拟合,而不是选择一个简单的模型(个人觉得,一个是因为模型的选择风险太大,增加一哥正则化项所付出的代价较小,)但是在选择几层隐藏层的时候,一个方法是对于hide layer = 1,2,3的情况首先在train集上进行训练得到一个theta参数集,然后用这个集在validation上进行验证,找到你认为最好的那个选择。
结束。。。
如何应用ML的建议-下的更多相关文章
- 如何应用ML的建议-上
本博资料来自andrew ng的13年的ML视频中10_X._Advice_for_Applying_Machine_Learning. 遇到问题-部分(一) 错误统计-部分(二) 正确的选取数据集- ...
- [ML] I'm back for Machine Learning
Hi, Long time no see. Briefly, I plan to step into this new area, data analysis. In the past few yea ...
- ML面试1000题系列(91-100)
本文总结ML面试常见的问题集 转载来源:https://blog.csdn.net/v_july_v/article/details/78121924 91 简单说说RNN的原理?我们升学到高三准备高 ...
- Linux下栈溢出导致的core dump
1 问题产生 前两天在干活的时候,写好的一个daemon程序,一跑就core,连main函数都进不去.从来没见过这阵势的职场新人被吓尿了,幸好不是在生产环境上测试.找来同事帮忙,看了好久也没看出问题, ...
- python安装MySQLdb:在windows下或linux下(以及eclipse中pydev使用msqldb的配置方法)
写的非常好,可以解决问题: windows下:http://blog.csdn.net/wklken/article/details/7253245 linux下:http://blog.csdn.n ...
- AI繁荣下的隐忧——Google Tensorflow安全风险剖析
本文由云+社区发表 作者:[ Tencent Blade Team ] Cradmin 我们身处一个巨变的时代,各种新技术层出不穷,人工智能作为一个诞生于上世纪50年代的概念,近两年出现井喷式发展,得 ...
- python MySQLdb在windows环境下的快速安装
python MySQLdb在windows环境下的快速安装.问题解决方式 使用python访问mysql,需要一系列安装 linux下MySQLdb安装见 Python MySQLdb在Linux下 ...
- windows 环境下安装python MySQLdb
使用Python访问MySQL,需要一系列安装 Linux下MySQLdb安装见 Python MySQLdb在Linux下的快速安装 http://blog.csdn.NET/wklken/arti ...
- 117、python MySQLdb在windows环境下的快速安装、问题解决方式
使用Python访问MySQL,需要一系列安装 Linux下MySQLdb安装见 Python MySQLdb在Linux下的快速安装 http://blog.csdn.NET/wklken/arti ...
随机推荐
- ORM&MySQL
概念: ORM:对象关系映射 , 全拼 Object-Relation Mapping ,是一种为了解决面向对象与关系数据库存在的互不匹配现象的技术.主要实现模型对象到关系型数据库数据的映射.比如:把 ...
- SD从零开始71 业务信息仓库(BW)
SD从零开始71 业务信息仓库(BW)概念 在线事务处理的环境OLTP Environment 在事务处理中,我们不断地填充用于跟踪我们的业务流程的数千个不同步骤的特定的表: 例如,销售凭证行条目来自 ...
- Linux 目录结构学习与简析 Part1
linux目录结构学习与简析 by:授客 QQ:1033553122 说明: / linux系统目录树的起点 =============== /bin User Bi ...
- 安卓开发_深入理解Handler消息传递机制
一.概述 因为子线程的run()方法无法修改UI线程(主线程)的UI界面,所以Android引入了Handler消息传递机制,实现在新创建的线程中操作UI界面 二.消息类(Message) 消息类是存 ...
- WebAPI路由、参数绑定
一.测试Web API a)测试Web API可以用来检测请求和返回数据是否正常,可以使用Fiddler.Postman等工具.以Fiddler为例,这是一个http协议调试代理工具,它能够记录客 ...
- MVP架构分析与搭建
一个项目的核心就是架构 1.什么是MVP:MVP是一种项目架构设计模式. 其实MVP的本质就是将view和model完全隔离出来,通过Presenter (主持人) 统一调度管理.
- 命令行选项 - Mozilla 产品与私有技术 | MDN - Google Chrome
命令行选项 在本文章中 语法规则 使用命令行选项 示例 用户配置档 -CreateProfile profile_name -CreateProfile "profile_name prof ...
- [20180403]访问dba_autotask_task无输出问题.txt
[20180403]访问dba_autotask_task无输出问题.txt --//链接http://www.itpub.net/thread-1911421-1-1.html的讨论,还没注意原先的 ...
- 将 Azure VM 迁移到 Azure 中的托管磁盘
Azure 托管磁盘无需单独管理存储帐户,从而简化了存储管理. 还可以将现有的 Azure VM 迁移到托管磁盘,以便受益于可用性集中 VM 的更佳可靠性. 它可确保可用性集中不同 VM 的磁盘完全相 ...
- Android中SELinux的TE简介【转】
转自:https://blog.csdn.net/murphykwu/article/details/52457667 selinux的概念如上一篇链接所示: http://www.cnblogs.c ...