吴恩达机器学习笔记-应用机器学习的建议

评估假设

我们之前已经学习过一些机器学习的算法,现在我们来谈谈如何评估算法学习得到的假设。当发现预测的结果和实际的数据有误差的时候,我们需要进行一些调整来保证预测的准确性,大部分情况下,有以下几种办法来调整假设函数:

  • 获取更多的训练集
  • 减少特征的数量
  • 尝试使用更多的特征
  • 尝试使用多项式特征
  • 增大或减小lambda

假设函数相对于训练集可能得到的误差很小,比如在过拟合的情况下,这时候就不能肯定假设函数是准确的。因此,我们有时候将数据集分成两块:训练集和测试集,一般来说训练集占70%,测试集30%。定义训练集的误差为J_{train}(\Theta),测试集为J_{test}(\Theta)。这样,我们要做的就是:通过训练集训练来最小化J_{train}(\Theta)和计算测试集J_{test}(\Theta)的误差。
对于线性回归:
J_{test}(\Theta) = \frac{1}{2m_{test}}\sum_{i=1}^{m_{test}}(h_\Theta(x_{test}^(i)))^2
对于分类问题:
h_\Theta(x)>=0.5且y=0h_\Theta(x)<0.5且y=1 时,err(h_\Theta(x),y) = 1;否则,err(h_\Theta(x),y) = 0
他们对于测试集的平均误差为:
Test Error = \frac{1}{2m_{test}}\sum_{i=1}^{m_{test}}err(h_\Theta(x_{test}^(i)),y_{test}^(i))
这个给与我们测试集中错误分类的比例。

模型选择-训练集、验证集、测试集

由于学习算法可能对于训练集的数据相对很吻合,但不代表这是一个好的假设,之前说过了,这可能是过拟合的情况,从而导致预测的结果在测试集中的表现会不尽如人意。从当前数据集训练出的假设函数的误差是会比其他数据集要小的。
提供多个不同级数的多项式模型时,我们可以使用系统的方法来鉴别是否是最好的函数。为了选择最佳的假设,可以对于每一个不同的级数的多项式进行计算,得出他们的误差,从而比较出哪一个才是最合适的。
上文中我们将数据集分成了训练集和测试集两部分,实际情况中经常会分为三部分,其中60%为训练集,20%为交叉验证集,20%为测试集。我们可以分别计算这三部分的误差,

接下来:

  1. 通过训练集来针对每一个级数的多项式来最优化参数theta
  2. 通过交叉验证集来找到最误差最小的级数d
  3. 使用J_{test}(\Theta^d)来估计使用测试集得到的模型的泛化误差,这样的话,多项式的级数就不用通过测试集训练得到了。

诊断偏差与方差

当运行一个学习算法时,若这个算法的结果不理想,多半是出现两种情况:要么是偏差比较大(high bias),要么是方差比较大(high variance)。换句话说,要么是欠拟合问题要么是过拟合问题。
高偏差导致欠拟合,高方差导致过拟合。理想情况下,我们要在这两者之间找到最佳的平均值。
当增加多项式的级数d时,训练集的误差将会减小。同时当增加级数d到达某个点时,交叉验证误差会渐渐的减小,然后其会伴随着d的增加而增加,图像为一个凸曲线。如下图:

总的来说:

正则化和偏差、方差

在之前的课程中已经学习过通过正则化来解决过拟合问题,现在再来谈谈正则化和偏差方差之间的关系。

在上图中,当\lambda很大,对于\theta1,\theta1..的惩罚都很大,则假设函数将会等于或近似于\theta_0,最终得到的假设函数就是一条直线,因此这个假设对于数据严重欠拟合。另一个情况当\lambda很小时,趋向于0,那么正则化项趋向于0,得到的假设函数则会出现过拟合的情况。只有当我们取一个比较合适的\lambda时,我们才能得到对数据拟合比较合理的\theta的值。
那么如何选择合适的模型和合适的正则化参数\lambda呢,具体有如下几个步骤:

1. Create a list of lambdas (i.e. λ∈{0,0.01,0.02,0.04,0.08,0.16,0.32,0.64,1.28,2.56,5.12,10.24});
2. Create a set of models with different degrees or any other variants.
3. Iterate through the λs and for each λ go through all the models to learn some \ThetaΘ.
4. Compute the cross validation error using the learned Θ (computed with λ) on the J_CV ​(Θ)  without regularization or λ = 0.
5. Select the best combo that produces the lowest error on the cross validation set.

Using the best combo Θ and λ, apply it on J_test ​(Θ) to see if it has a good generalization of the problem.

\lambda的取值和J(\theta)的曲线画出来如下所示:

J_{train}(\theta)随着\lambda值的增加而增加,因为\lambda的值增大会对应着高偏差问题,此时连训练集都不能很好的拟合,当\lambda很小时,对应着你可以很容易地用高次多项式拟合你的数据。对于交叉验证的误差,如图中粉色的图像所示,当\lambda很大时,会出现欠拟合问题,因此是那一片是高偏差区域,此时交叉验证集的误差会很大,当\lambda很小时,会出现过拟合问题,对应的是高方差问题,因此交叉验证集的误差也会很大。同样的,总会有中间的某个点对应的\lambda表现的结果正好合适,交叉验证误差和测试误差都很小。

学习曲线

当训练集很小的情况下,比如只有两三条数据的时候,我们很容易训练一个二次的算法来拟合数据,并且算法的误差可能几乎为0,因此,

  • 当训练集增大时,二次函数的误差将会增加
  • 随着集合数据的增加,最终的误差会渐渐趋向于平稳

具体变化如下图所示:

随着训练集的增加,交叉验证集的误差将会慢慢减小知道趋向于某一个值,因为拟合数据越多,就越能拟合出合适的假设。
那么如果出现了高偏差的情况,学习曲线会变成什么样子:

若训练集量比较小,那么拟合效果当然不好,导致交叉验证集的误差会很大,那么随着训练集的增加,拟合效果渐渐的变好了,交叉验证集的误差也会渐渐变小,当训练集增大到某一个量时,我们可能就会找到一条最有可能拟合数据的直线,并且此时即便继续增加训练集的样本容量,还是会得到一条差不多的结果。那么对于训练误差,一开始也是很小的,但在高偏差的情况下,训练集的误差会逐渐增大直到最后接近交叉验证误差,这是因为你的参数很小,但又有很多数据,当m很大时,训练集和交叉验证集的误差将会非常接近。总的来说能得出一个结论,如果一个算法有高偏差,那么选用更多的训练集数据并不能很好的改善算法。
对于高方差的情况,如下图:

一开始训练集的误差是很小的,但随着训练集容量的增加,误差会渐渐变大,也就是说数据越多,就越难将训练集数据拟合的很好,但总的来说,训练集的误差还是很小。那么对于交叉验证集,由于是高方差的情况,误差会一直都很大,虽然也会慢慢减小,但在训练误差和交叉验证误差之间依然有一段很大的差距。总的来说得出的结论就是,如果我们考虑增加训练集样本的容量,对于改善算法还是有一定的帮助的,因为很显然交叉验证误差再慢慢减小,那么测试集的误差也会慢慢减小,当然同样这个也能告诉我们这个算法可能存在高方差的问题。

总结

上文中一开始我们有说过几种不同的方法来改善假设函数,但往往有些人只是凭借自己的感觉来决定使用哪种方法,那么通过本文介绍的一些知识,我们可以得出,这几种方法分别对应于解决什么问题:

  • 获取更多的训练集 --> 解决高方差问题
  • 减少特征的数量 --> 解决高方差问题
  • 尝试使用更多的特征 --> 解决高偏差问题
  • 尝试使用多项式特征 --> 解决高偏差问题
  • 增大lambda --> 解决高方差问题
  • 减小lambda --> 解决高偏差问题

那么这里再补充一下对于神经网络的诊断:

  • 一个相对简单的神经网络模型,隐含单元比较少或者隐藏层很少时,那么拟合时选择的参数就会比较小,容易出现欠拟合,但他的优势
  • 拟合一个复杂的神经网络模型时,那么其参数一般比较多,容易出现过拟合,这种结构的计算量相对会很大。但过拟合问题可以使用正则化来进行修正。通常使用大型网络模型然后使用正则化来防止过拟合问题相对于使用简单的神经网络拟合的效果要更好。

总的来说,模型的复杂程度的影响有以下几点:

  • 低阶多项式,也就是低复杂程度的模型有高偏差和低方差的问题,这种情况下,模型的拟合程度较差
  • 高阶多项式,也就是高复杂程度的模型对于训练集的拟合效果相对较好,但对于测试集的拟合效果非常差,会出现低偏差和高方差问题。
  • 在现实中,我们需要在两者之间选择一个合适的模型,使其能很好的来拟合数据。

以上,为吴恩达机器学习第六周Advice for Applying Machine Learning部分的笔记。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348

推荐阅读更多精彩内容

  • 一、机器学习策略的原因 机器学习是无数重要应用程序的基础,包括网络搜索,电子邮件反垃圾邮件,语音识别,产品推荐等。...
    阳光前阅读 665评论 0 0
  • 一,1993年《中国教育改革和发展纲要》指出中小学要有应试教育转向全面提高国民素质的轨道。 二,实施素质教育,就是...
    星夜兼程工作笔记阅读 184评论 0 1
  • 记过合浦 余自海康适合浦,连日大雨,桥梁大坏,水无津涯。自兴廉村净行院下乘小舟至官寨,闻自此西皆涨水,无复桥船,...
    台灯好亮阅读 1,312评论 0 0
  • 幸福要自己找,成功要自己喜欢自己。你流过的泪和走过的路老天不会让你白做,总会给你一定的回报。
    A分享阅读 254评论 2 0
  • 随着阅读的坚持,我越来越喜欢戴维·艾伦的书了。我需要反复读这本书。 在《第12章 1万英尺:项目》...
    进釆阅读 160评论 0 0