下面的例子来自PRML(Pattern Recognization and Machine Learning,模式识别与机器学习),其中涉及一些关键概念,比如误差函数、极大似然、过拟合、正则等。通过这个例子,我们可以深刻理解这些概念,在处理统计建模问题时有章可循。
数据是通过正弦曲线产生的,并且加了一个噪声,如下:
\[t=sin(2\pi x) + \epsilon\]其中,x取的是0到1之间均匀分布的随机数.下图所示是正弦曲线以及相应的数据,这些数据并没有在正弦曲线上,而是围绕在正弦曲线上下两侧,这是因为增加了白噪声$\epsilon$的缘故。通过上式来产生数据,也就意味着,我们事前已经知道了数据产生的真正模式,而这也为后面的模型比较提供基准。
统计建模就是通过上图中观测数据,寻找所蕴含的绿色曲线,找到这样的曲线有很多用处,比如,可以用这个曲线来描述这个数据的规律(规律称为pattern),也可以在给定新的$x$的基础上用这个曲线函数进行预测。
当然,现在我们假装并不知道绿色的正弦曲线,所以就分不清该用什么模型来拟合数据。 不过看到这样一组数据,首先想到的是用多项式曲线拟合:
\[y(x,\textbf{w})=w_0+w_1x+w_2x^2+\ldots+w_Mx^M=\sum^M_{j=0}w_jx^j\]上式是$\textbf{w}$的线性表达式,所以被称为线性模型。这个线性模型参数的个数是由M决定的,如果$M=3$,我们需要估计4个回归系数:$w_0,w_1,w_2,W_3$.不同的M表示不一样的多项式曲线,也就是不同的拟合模型。如何选择M,稍后我们讨论。现在我们关心,在给定M的情况下,如何来估计多项式中的参数$w_0,w_1,w_2,\ldots,w_M$.
可以想象,最终拟合的曲线不会经过所有的数据,也就是说拟合值$y(x_n,w)$和目标值$t_n$之间总有一段差距,这就是拟合的的误差,如下图所示。
将误差的平方和定义为误差函数(error function):
\[E(\textbf{w})=\frac{1}{2}\sum^N_{n=1}(y(x_n,\textbf{w})-t_n)^2\]我们希望回归系数$\textbf{w}$应该使误差函数越小越好。为求上式最小值,误差函数对$\textbf{w}$求导,然后令导数等于0,便可以求出参数$\textbf{w}^{\star}$.
我们一口气确定了$M=0$、$M=1$、$M=3$和$M=9$四种多项式曲线的参数,并将这些曲线描绘在数据散点图中,如下:
我们发现,常数($M=0$)和一阶多项式曲线($M=1$)的拟合效果(红)不是很好,它们与正弦曲线(绿)形状相差较大。相比而言,三阶多项式曲线($M=3$)拟合效果不错,不仅大体上符合数据的走向,而且也和正弦曲线较为吻合。不过,这并不意味着阶数越高,拟合效果越好,例如,九阶多项式曲线($M=9$)虽然穿过了所有的数据散点,拟合了全部数据,然而却是陡上陡下的跳跃式曲线,从中压根看不到正弦曲线的影子。这种模型是不能够做预测的,我们称最后这种情形为过拟合(over fitting)。
过拟合的突出表现是回归系数估计变得非常离谱。如下表,我们发现,随着多项式阶数越来越高,回归系数估计的绝对值变得越来越大。尤其是对于九阶多项式曲线,回归系数取的都是一些绝对值巨大的正数或者负数,结果是,虽然拟合了全部的数据,但是曲线形状也变得不成样子。究其原因,当多项式阶数越来越高时,它不仅仅去适应数据的模式,它甚至也适应了噪声。换句话说,高阶模型把噪声也给解释了,而事实上,随机噪声是不需要解释的。
过拟合是相对样本的容量而言的。上面这个例子,样本容量为9,在这种情形下,九阶多项式是过拟合的。但是如果换做一个容量更大的样本,九阶多项式可能就是一个合适的模型。下图所示是样本容量为100时,采用九阶多项式进行拟合的效果,我们发现,过拟合现象消失了,而且此时拟合曲线(红)非常接近于正弦曲线(绿)。
是不是可以这样认为,为了避免过拟合现象的产生,我们需要根据样本容量的大小确定模型中参数的个数?从上例中,答案似乎是肯定的,然而当我们考虑模型的复杂度(参数的多少)时,应该依据问题本身的复杂度,而不能依据样本容量。事实上,在上例中,阶数越高,对正弦曲线的近似也越准确,这也就意味着阶数越高模型越接近于真实模型(正弦曲线)。一个接近于真实模型的模型最后的结却是实过拟合,这匪夷所思。究其根源,过拟合现象不能归罪于参数数量的多少和样本容量的大小,过拟合是由极大似然估计的内在的弊端造成的。
极大似然估计是频率学派的王牌工具,为了规避极大似然估计可能产生的过拟合问题,频率统计学家的手段是正则(regularization)。我们已经发现,过拟合的突出表现就是参数估计值取了一些极大的正值或极小的负值,为了避免这种情况出现,正则通过在误差函数基础上添加惩罚项的方式,对那些绝对值较大的参数进行惩罚,逼迫其向0靠拢,或者说是向0收缩(shrinkage)。惩罚项有多种形式,比如$L-1$,$L-2$等,$L-1$是参数绝对值之和,$L-2$惩罚项是取参数的平方和,由此得到修正的误差函数:
\[\widetilde{E}(\textbf(w))=\frac{1}{2}\sum^N_{n=1}{y(x_n,\textbf{w}-t_n})^2+\frac{\lambda}{2}\|w\|^2\]我们将正则应用到九阶多项式曲线拟合中,结果如下图所示。我们发现,如果取于$ln(\lambda)=-18)$,得到的拟合曲线与正弦曲线相吻合,不再出现陡上陡下的情形,这表明通过正则,或者说通过加以惩罚,规避了过拟合问题。
同时我们也看到,如果取$ln(\lambda)=0)$,得到的拟合曲线近似于一条直线,与正弦曲线并不沾边,这是为什么呢?其实,不同的$\lambda$($lambda>0$),代表了不一样的惩罚强度,$\lambda$越小,惩罚越弱,回归系数不会向0收缩,$\lambda$越大,惩罚越强。回归系数急剧向0靠拢。在九阶多项式曲线拟合模型下,我们设定三种惩罚,$ln(\lambda)=-\infty$、$ln(\lambda)=-18$和$ln(\lambda)=0$,下表给出了在不同的惩罚强度下,回归系数的估计值:
我们发现,如果$\lambda$接近于0,则意味着惩罚很弱,回归系数估计值的绝对值仍然大的要命,过拟合问题依旧存在;如果$\lambda$稍微大一些,则意味着惩罚变强,一些大的回归系数开始向0收缩,避免了过拟合问题;但如果$\lambda=1$,则意味着惩罚太强,所有的回归系数都向0收缩,导致拟合曲线成为一条直线。
在上面的叙述中,我们是是通过比对九阶多项式拟合和正弦曲线得到所谓过拟合的结论。然而在统计应用中,我们并不知道真正的统计模型。因此,即便我们用了九阶多项式曲线,我们也不知道到底发没发生过拟合现象。就算未雨绸缪使用正则,我们也不知道该如何设置惩罚强度$\lambda$.事实上,不同的惩罚强度代表了不同的模型,说到底,上面所述可以归结为模型选择问题。
频率学派统计学家进行模型选择的一种方法是“交叉验证”(cross validation)。这种方法的基本思想是把数据分割成训练集和验证集,训练集用来拟合模型,验证集用来检验预测效果,这种方法可以选择出拟合效果较好、预测效果也较优的模型。但是,由于并非所有数据用来拟合模型,所以造成数据使用的浪费,因此我们必须寻找其他高效的模型选择方法。