机器爱学习11——训练集、测试集、方差、偏差、过拟合、欠拟合

前面章节中,我们讲解了线性回归、逻辑回归,虽然使用场景不同,但基本套路都是一样的

  • 基本套路:通过各种算法(最小二乘法、正规方程、梯度下降算法...),找到使cost function"尽量小"的参数θ(向量),进而找到我们的hypothesis function:hθ(x)。

机器学习的终极目标是什么?

这里要问大家一个问题,我们使用机器学习的终极目标是什么?只是找到一个hypothesis function吗?

显然不是,我们的终极目标是去进行"预测"。当我有一套房子要出售时,我能够预测“这套房子到底可以卖多少钱”,如果预测的准确度很高,那当然更棒了~

读者可能会问,我们不是通过最小化cost function,找到了代价最小的参数θ,进而找到了"完美"的hypothesis function吗?

ok,这个问题问的好!

我们所谓的"完美",只是在我们的training set(已经成交的房屋)上表现"完美";但是,对于新遇到的问题(待出售的房子),hypothesis function不一定那么"完美"。

那么,我们如何保证,通过training set训练出来的"完美"hypothesis function,在新遇到的问题上同样表现"完美"呢?

其实,这个问题很好解决,我们可以把training set分为两部分A和B(A和B没有重复),在A中训练出hypothesis function,然后通过B来判断训练出来的hypothesis function表现如何。如果hypothesis function在B上表现同样"完美",那么我们就认为:当遇到新问题C时,我们的hypothesis function表现会同样"完美"。

这里,给大家介绍两个名词:泛化、泛化能力。

  • 泛化(generalization):将hypothesis function运用在新鲜样本上进行预测的过程
  • 泛化能力(generalization ability):hypothesis function在新鲜样本上进行预测的准确度,准确率越高,泛化能力越强

所以,机器学习的终极目标不只是找一个在training set中表现"完美"的hypothesis function,而是找一个泛化能力强的hypothesis function

训练集、验证集、测试集

上面提到将training set分为A和B,A用来训练,B用来测试,机器学习也做了类似的划分。

机器学习将样本分为三种:训练集、验证集、测试集。

  • 训练集:即training set,主要用来训练得到我们的hypothesis function,即确定普通参数
  • 验证集:即validation set,主要用来确定超参数(大家可以暂时不用管什么是超参数),做模型选择;通过训练集,我们可能得到了多个hypothesis function,验证集就是来确定最佳hypothesis function
  • 测试集:即testing set,在最佳模型确定后,可以通过测试集进行模型预测并评估模型的性能

需要注意的是:当模型没有需要人为设定的超参数时,可以不需要验证集(validation set)。

样本到底该怎么做划分?训练集、验证集、测试集占比重该是多少?

比重不确定,可以根据自己的需求更改,一般为8:1:1。其实有很多的划分方法,这里只列出来,不一一讲解,大家感兴趣可以自己了解下:

  • 留出法
  • 交叉验证法
  • 自助法
  • ......

总之,我们将数据进行划分,都是为了提高hypothesis function的泛化能力。

接下来,我们要讲一下如何评估hypothesis function在训练集、测试集上的表现

偏差、方差

在讲解hypothesis function在训练集、测试集上的表现之前,先给大家介绍下偏差、方差的概念。

先举一个数学上的例子:两个射击手进行射击,结果甲射出的子弹都集中在靶上的某个区域,但是都偏离了靶心;乙射出的子弹比较分散,但是有些正中靶心,那么我们就说:

  • 甲的射击很"稳定",但是不"准确",即方差小(子弹很集中在某个区域),但偏差大(子弹打中的地方离靶心远)
  • 乙射击比较"准确",但是不"稳定",即方差大(子弹不集中),但是偏差小(子弹打中的地方离靶心近)

所以:

  • 偏差(bias)描述的是准确性
  • 方差(varience)描述的是稳定性

考虑到上面的训练集、测试集,则有如下结论:

  • 模型(hypothesis function)在训练集(training set)上表现越"完美",该模型的准确度就越高,对应偏差(bias)就越小
  • 模型(hypothesis function)在测试集(test set)上表现越"完美",该模型的稳定性就越好, 对应的方差(varience)就越小

前面我们提到:

  • 机器学习的终极目标不只是找一个在training set中表现"完美"的hypothesis function,而是找一个泛化能力强的hypothesis function

现在这句话等价于

  • 机器学习的终极目标是找一个偏差小(low bias)、同时方差小(low varience)的模型(hypothesis function)

下图显示了偏差与方差在靶子上的表示:

机器爱学习11——训练集、测试集、方差、偏差、过拟合、欠拟合

偏差与方差

前面讲了那么多,其实就是告诉大家:什么样的hypothesis function是真正"完美"的。通过前面的讲解,想必大家都知道答案了,这里再列一下:

"完美"的hypothesis function,需同时满足:

  • 在training set上准确度高,即偏差小(low bias)
  • 在test set上同样预测准确,即稳定性好,也即方差小(low varience)

知道了我们的终极目标了,那我们当然要去实现这个目标。在实现这个目标之前,让我们先看一下模型过拟合、欠拟合的问题

过拟合、欠拟合

在前面线性回归、逻辑回归中,我们知道hypothesis function其实只受参数θ控制(大家可以这样认为,虽然不太严谨)。

下面我们以线性回归为例,看一下参数θ对hypothesis function在training set上表现的影响(其实也就是对偏差bias的影响):

机器爱学习11——训练集、测试集、方差、偏差、过拟合、欠拟合

参数θ对偏差bias的影响

如果让大家从上面三个hypothesis function选一个,将其作为真正"完美"的hypothesis function,大家会选哪个?

  • “图1中偏差太大,肯定是不能选的”
  • “图2的hypothesis function看起来不错,可以选”
  • “图3的hypothesis function看起来也不错,也可以选吧”

sorry,上面三个hypothesis function只有图2的模型是"完美"(偏差小、方差小)的,我们一一进行分析:

  • 图1中:training set中的数据一个都没有出现在hypothesis function上(都不在靶心上),偏差较大(high bias),肯定是不能入选的
  • 图2中:training set中的数据全部在hypothesis function上(全部在靶心上),偏差较小(low bias),可以入选
  • 图3中:training set中的数据全部在hypothesis function上(全部在靶心上),偏差也比较小(low bias),但该hypothesis function在training set中表现过于优越,可能导致方差过大,因此不能入选

图2中hypothesis function看起来不错;可是图3中的看起来也很好啊,为什么就说人家overfitting?在training set上表现优越还不好?

我们这里打一个比方:假如我们现在要通过机器学习算法去找到一个"完美"的女朋友,找一个路人甲作为training set,路人甲说:

完美的女朋友要:

  • 身高165cm+
  • 体重50kg-
  • 短发
  • ....

如果机器学习算法把上面的细节全部考虑进去,那现在给你一个test set:长发的林志玲,结果会怎样?

机器学习算法就会说“长发?ok,林志玲不是我想要的完美女朋友”。

所以,大家现在明白为什么图3中hypothesis function不能入选了吧(例子比较极端,仅供大家理解过拟合)!

下面整理一下欠拟合、过拟合的概念,

  • 欠拟合(underfitting):对于training set中的数据,hypothesis function得到的预测值与实际值相差太多,即偏差太大(此时cost function在training set中必定很大)
  • 过拟合(overfitting):hypothesis function从training set中提取了过多的细节,导致模型在test set中表现太差,即方差太大(此时cost function在test set中必定很大)

理解了方差/偏差、过拟合/欠拟合,大家应该可以看懂下面的图:

机器爱学习11——训练集、测试集、方差、偏差、过拟合、欠拟合

hypothesis function复杂度与偏差、方差的关系

上图中:

  • 虚线左侧代表欠拟合:虽然方差小,但偏差太大
  • 虚线右侧代表过拟合:虽然偏差小,但方差太大

现在再次回到我们的终极目标:

找到偏差小、方差小的hypothesis function

  • “偏差小”可以通过减小偏差(即减小cost function)来达到
  • “方差小”可以通过避免过拟合来达到

看起来,我们的目标越来越具体了!

那么该如何避免过拟合呢?我们下一章再进行讲解~


分享到:


相關文章: