快乐机器学习
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第3章
机器学习怎么学——模型评估选择

All models are wrong,some are useful.-George Box

引言

人类学习

在一次测验前,斯蒂文给同学们讲了5道不同风格的训练题。舒岱梓死记硬背地学,背下了每道题的细节;肖春丹心不在焉地学,斯蒂文讲的时候他一直在走神;甄薛申1举一反三地学,主要学习解题的思路和方法。讲完题后,老师发卷子测验,其中有5道不同于训练题的测验题。舒岱梓学得太死板,以至于测验题稍有变动就做不出,是典型的“应试教育派”;肖春丹学习能力低下,训练题都没学好,测验题一样也做不好,是典型的“不学无术派”;甄薛申总结了测试题的普遍规律,发现所有题都是万变不离其宗,测试题做得很好,是典型的“素质教育派”。

舒岱梓这种学习被叫作“过学习”,只会做过的题;肖春丹这种学习被叫作“欠学习”,什么题都不会做。这两者都不好,我们要向甄薛申学习。斯蒂文看了看其中的一道测验题和他们给的答案,一下就明白了过学习和欠学习为什么不好了(见下图)。

过学习和欠学习(该图来自周志华的《机器学习》第2章[1]

过学习的舒岱梓学得太仔细,把训练样本自身的一些特点(树叶的锯齿)当作了潜在样本(没有锯齿的树叶)都会具有的特征。欠学习的肖春丹学得太粗糙,连训练样本的一般特征(树叶至少不会有树干吧)都没学好。机器学习类似人类的学习。对人类来说,训练题都做对不算什么,厉害的是每次测验都能得高分;对机器学习来说,训练数据能拟合好不算什么,厉害的是每次拟合测试数据的误差都很小。

机器学习

斯蒂文是一名房地产中介。一天,有一位富豪想买一栋海边的公寓,需要给他一个报价。老板让斯蒂文根据周边公寓的价格建立一个模型。斯蒂文觉得这很简单,他收集了如下图所示的数据。

注:1平方英尺约等于0.09平方米,这里的新元为新加坡元的简称

注:此类图为软件输出图,其中横坐标单位为面积(平方英尺),纵坐标单位为价格(新元)

(面积,价格)散点图

首先斯蒂文用一阶多项式做了线性拟合,把结果展示给老板看,如下图所示。

用一阶多项式做拟合,蓝点是真实数据,绿线是预测模型

老板:这拟合的是什么结果?红圈圈出来的那两个点离预测模型太远了,整体误差也太大了。什么烂模型!

斯蒂文

圈出来的两个点的误差确实有一点大,可是怎么优化模型呢?突然,斯蒂文灵机一动:可以用高阶多项式。用六阶多项式可以完美拟合所有点!他马上用六阶多项式做了拟合(见下图),并兴高采烈地将结果展示给老板,心里想自己做到了零误差,肯定会得到老板的肯定。

用六阶多项式做拟合,紫点是新数据

老板:有一位客户想买一栋面积大概为3300平方英尺的房子,你的模型计算出他需要付8500万新元?而市场上3500平方英尺的房子才1300多万新元!什么烂模型!

斯蒂文

误差大不行,零误差也不行,到底是哪里出了问题?想了一会,斯蒂文摸索出以下规则:

● 太简单的模型拟合现有数据的质量不太好,误差比较大,没有人会用它来预测。

● 太复杂的模型拟合现有数据的质量会很好甚至很完美,但适应新数据的能力差,也没有什么用。

● 找一个处于两者中间的模型,即使拟合现有数据的质量低于复杂模型,但它也能更好地适应新数据。

经过一轮调试,斯蒂文使用“中间模型”二阶多项式来拟合数据,结果如下图所示。

用二阶多项式做拟合

老板:这个模型不错,对现有数据拟合得很好,而且似乎对新数据的预测也比较合理。客户想买的3300平方英尺的房子大概需要1250万新元。

斯蒂文:☺☺☺

通过上述3个例子可以看出,一阶多项式“欠拟合”数据(基本上没学习到数据的非线性特征),六阶多项式“过拟合”数据(学习过头了,以致输入一个新数据后给出的结果太离谱),而二阶多项式拟合的结果看起来比它们都好。这个“好”可以量化吗?说一个模型“好”是因为它能适应新数据,但是在没见到新数据之前,怎么判断模型的好坏呢?本章来帮你解疑。本章的思维导图如下图所示。