乐趣区

关于机器学习:机器学习10吴恩达笔记

  • 当机器学习失去的模型有较大误差时,从哪个方面动手批改。以预测房价为例,咱们曾经实现了正则化线性回归并失去了参数向量,但当咱们放到新的样本集中进行测试时发现产生了微小的误差,此时咱们有以下几种改良办法:

(1)应用更多的训练样本。
(2)选用更少的特色集,只选用特色集的子集
(3)退出其余的特色(以后特色不是很无效)
(4)减少高阶的多项式特色
(5)增大或减小正则化参数,防止过拟合或者欠拟合

好多人在改良模型时,会轻易选一种办法,画上几个月钻研,最初却走上了一条不归路。这是因为改良办法不应该是凭感觉轻易选的,下边咱们就来探讨下如何判断用哪种办法改良算法

  • 下边咱们引入学习诊断法,即先测试某种算法是否有用,若算法没用再判断要改良算法成果须要尝试哪种办法

新的假如函数评估办法

  • 在前边,咱们抉择令训练误差最小化的参数,来确定假如函数的参数。然而这样做,只能确定参数在旧的数据(训练集)中的误差,无奈断定参数是否具备很好地泛化能力(是否利用到新的数据当中)
  • 因而,咱们采纳一种新的假如函数泛化能力的评估办法,将数据集分为两局部:训练集和测试集。通常典型的宰割形式是 7:3;而且要留神随机抉择 70% 作为训练集(当然数据充沛的随机散布的话,按程序选前 70% 也无所谓)

(1)在线性回归中,咱们首先通过最小化训练集的误差,失去学习参数,而后把训练失去的参数放到测试集中,用平方误差法计算测试误差

(2)在逻辑回归(分类问题)中相似。只是咱们计算误差时采纳 0~1 假如函数:当预判 y >0.5 时理论 y =0、当 y <0.5 时理论 y =1,函数得 1;当预判和理论相符时得 0

  • 若评估失去的测试集误差太大,要重新学习模型

模型抉择问题

  • 如何确定假如函数最合适的多项式次数,怎么选用正确的特色结构学习算法,怎么抉择适合的正则化参数,这就是模型抉择问题
  • 咱们能够将数据分为三组:训练集、验证集、测试集,来解决模型抉择问题

如何抉择适合的多项式次数

  • 重温过拟合:把参数调整到十分拟合训练集,保障了在训练集上拟合的很好,然而不能保障训练集外的新样本预测后果如何
  • 为了抉择适合的多项式次数,咱们引入一个新的多项式次数参数 d。当咱们把数据只分为两局部时,看一下思路:

(1)对 d 不同的每个模型最小化训练误差,失去假如函数的参数向量
(2)对每个假如函数求测试集误差,选出测试集误差最小(最拟合测试集的),这个模型的多项式参数 d 就是咱们要的

  • 然而这样做,还是不能阐明我的假设能推广到个别后果(泛化性)。咱们评估假如函数的参数也用测试集,找多项式次数参数 d 也用测试集。也就是说,咱们原本就是用测试集拟合的假如函数,这时再用测试集看测试误差个别就比拟小。即后果可能很好地拟合测试集,然而对新的样本就不晓得了
  • 为了解决这个问题,咱们进一步将数据分为了三局部:训练集、验证集(穿插验证集)、测试集,比例大抵是 6:2:2

并定义了训练误差、穿插验证误差、测试误差

  • 与传统的用测试集同时评估假如函数参数、找多项式参数 d 不同。咱们应用穿插验证集抉择多项式参数 d,应用测试集评估假如函数的参数

咱们先使训练误差最小化,失去假如函数的参数向量;而后在穿插测试集计算不同多项式参数 d 对应模型的误差,抉择误差最小的多项式参数 d;最初应用测试集来评估所选模型的假如函数的泛化误差。

  • 值得一提的是,只管前边只分数据集和测试集的办法曾经过期了,然而因为它在样本量较大的时候准确性还能够,所以还有许多人这样做

算法不现实的起因

  • 若算法不现实,可能有两种起因:方差比拟大或者偏差比拟大,即过拟合或者欠拟合。判断算法是偏差还是方差有问题,对于改良算法成果十分重要

  • 如图,两条曲线示意训练集误差和验证集误差(平方误差),横坐标示意多项式参数 d。分割欠拟合和过拟合,当多项式次数 d 增大时,训练集误差减小,甚至可能到 0;而穿插验证集误差先变小后变大(假如 5 次是最合适的)。

  • 当咱们失去的模型穿插验证误差和训练误差都很大,如何判断是高方差还是高偏差?

(1)上图左端是高偏差:模型应用了过小的多项式次数(d)。高偏差对应欠拟合,两个误差都很大,很靠近(连训练集都拟合得不好)
(2)右端是高方差:模型应用了较大的多项式次数(d)。高方差对应过拟合,训练误差小,验证集误差大,两个误差的差距比拟大

正则化和偏差方差的关系

  • 算法正则化能够避免过拟合,正则化适度又会导致欠拟合。而偏差和方差与欠拟合和过拟合关系密切,咱们来探讨下方差偏差和欠拟合间的关系
  • 咱们通过正则化项让参数尽可能小(不惩办参数 0)。

(1)若正则参数十分大(如 1000),参数被大大惩办,参数值靠近 0,成了一条程度直线,这就是高偏差、欠拟合
(2)若正则化参数太小(靠近 0),参数惩办不够,适度谋求拟合训练集数据,就成了过拟合、高方差

怎么主动抉择出正当的正则化参数


  • 首先,咱们从新定义下代价函数 j。在个别的代价函数中,误差定义为训练集数据和模型预测值的均匀平方求和,再加上一个正则化项。在这里,咱们将(训练误差应该还有正则化项吧)验证误差和测试误差都定义为平均误差平方和,不再含有正则化项
  • 主动选取正则化参数的办法:

(1)选取不正则化的状况(正则化参数为 0),以及一些我想要尝试的正则化参数值。如这里我选取 0.01,0.02,…,10.24,将步长设置为两倍增长。这样一共有 13 个模型。
(2)对每个模型最小化代价函数(带正则化项的代价函数),失去对应的参数向量
(3)而后用穿插验证集评估失去的假如函数(不带正则化项),选出均匀平方误差最小的,测试该模型在训练集上的平均误差平方

实质上,依然应用穿插验证误差计算不同正则化参数对新样本的拟合能力,用测试集评估模型的泛化能力

  • 上边要着重了解下为啥有时候带正则化项,有时候不带正则化项。求参数向量时,须要正则化项惩办参数,所以带;后边都是进行评估,所以不带
  • 下边看一下,扭转正则化参数的值后,穿插验证误差和训练集误差(都不带正则化项)的变动状况。正则化参数过小,惩办力度不够,训练集误差小,验证集误差大,高方差、过拟合;正则化参数过大,成了程度直线,训练集、验证集误差都大,高偏差、欠拟合

学习曲线

  • 联合前边学的所有概念,咱们建设模型诊断法:学习曲线。来诊断学习算法处于偏差还是方差问题,还是两者都有

  • 咱们来看一下,当咱们扭转正则化参数时,穿插验证误差和训练集误差产生怎么的变动。这里值得注意的是,代价函数本来蕴含正则化项,然而在这里训练误差和穿插验证误差定义为不蕴含正则化项。
  • 上图可见,当正则化参数小时,惩办力度不够,曲线千方百计拟合训练集,训练集误差小,验证集误差大,为过拟合、高方差;当正则化参数大时,惩办过大,变成程度直线,训练集、验证集误差都变大,为欠拟合、高偏差
学习曲线
  • 学习曲线能够帮忙察看算法是否处于偏差、方差状态,从而进一步改良算法成果
  • 在画学习曲线前,咱们先来理解下训练集、验证集的平均误差平方和随样本总数 m 的变动。

(1)当 m 很小时,咱们可能很容易的拟合到每一个数据,训练集误差为 0;当 m 变大时,咱们要拟合到每一个数据就越发艰难,均匀训练误差逐步增大
(2)对于穿插验证误差而言,当样本数量 m 小时,模型的泛化水平必然不会太好,穿插验证误差变大;随着数据量增多,泛化体现越来越好,穿插验证误差变小

当处于高偏差或者高方差时,学习曲线是什么样子

  • 当处于高偏差、欠拟合时,例如咱们用一条直线拟合模型。当样本数量逐步变大时,函数泛化能力加强,但因为直线不可能很好地拟合,所以穿插验证误差变小,然而逐步程度;而只有一个样本时,很好拟合,此时训练机误差很小,随着 m 增大不好拟合,训练集误差变大,靠近穿插验证误差。

总之,高偏差时穿插验证、训练误差都很大;而且当咱们继续增大样本数量 m 时,穿插验证误差逐步变为程度不再升高。因而看清楚算法处于高偏差时很有意义的,他能够防止咱们浪费时间去找更多数据(高偏差收集更多数据对于进步模型泛化能力没有意义)

  • 当处于高方差、过拟合时,当样本数量 m 较小时,会拟合的十分好,训练误差很小;当 m 增大,因为数量多毕竟拟合吃力,所以训练误差逐步变大,但还是很小。而穿插验证误差很大,即使通过增大样本数目进步模型泛化能力有肯定的降落,然而依然维持在较大的程度。

总之,在高方差中,增大样本数量对于进步算法成果是有帮忙的。看清楚处于高方差也有意义,能帮忙咱们决定是否有必要减少更多样本数据

  • 当咱们发现算法没有达到预期的成果时,通常就是画出学习曲线,看是偏差还是方差的问题,进一步判断哪些办法是无效的,哪些办法是徒劳的


(1)应用更多的训练集数据,对于高方差有帮忙,对高偏差没有意义。
(2)少选几种特色,对高方差无效,对高偏差没有意义(少选特色就相当于缩小了自变量的数量嘛,曲线就不简单了,进而不会过拟合)
(3)选用更多的特色,对于高偏差无效,对于高方差有效(相当于减少自变量,函数更加简单)
(4)减少多项式次数,对于高偏差无效,对于高方差有效
(5)增大正则化参数能够修改高方差,减小正则化参数能够修改高偏差

前边内容与神经网络的分割

  • 一般来说,暗藏单元少、只有一层的神经网络比较简单,因为神经元比拟少,参数会比拟少,而且计算量比拟小,然而容易呈现过拟合

相同的,暗藏单元多或者暗藏层多的神经网络比较复杂,因为神经元多,参数也多,而且计算量大,容易呈现过拟合

  • 然而参数多、计算量大不是咱们思考的次要问题,而且过拟合能够通过正则化解决。因而,应用大型神经网络并采纳正则化解决过拟合,比用小型神经网络成果更好
  • 在抉择暗藏层数时,个别默认抉择一个暗藏层
退出移动版