- 机器学习中的统计思维(Python实现)
- 董平编著
- 2243字
- 2024-12-27 19:19:28
1.2.2 学习过程如同一场科学推理
在科学推理中,有两大逻辑思维,一个是归纳法,一个是演绎法。在科学理论的发展中多采用归纳法,即根据大量的已知信息,概括总结出一般性的科学原理。在刑侦推理中多采用演绎法,即以一定的客观规律为依据,通过事物的已知信息,推理得到事物的未知部分。本书在介绍学习过程时,所用的就是归纳法,这是一个在观察和总结中认识世界的过程,通过观察大量的样本,归纳总结出一个合适的模型;在介绍预测过程时,所用的则是演绎法,即根据已知信息构建的模型做出决策,从而预测未知样本的结果。这里的未知样本指的是只有属性没有标注的样本,即待预测实例。
先从一个多项式拟合的例子出发,说明监督学习过程三部曲:训练阶段、测试阶段和预测阶段。
例1.1 假设已知真实函数y=sin(2πx),因现实中误差的影响,需要在函数中添加噪声项ε∼N(0,0.2),即ε来自于均值为0,方差为0.2的正态分布。样本根据yi=sin(2πxi)+εi(i=1,2,···,N)生成,xi为区间[0,1]上等距离分布的点。训练集记作
T={(x1,y1),(x2,y2),···,(x10,y10)}
样本容量N=10。假设通过蒙特卡罗模拟生成的训练集为
T={(0.00,0.13),(0.11,0.52),(0.22,1.29),(0.33,1.08),(0.44,0.42),(0.56,−0.49),(0.67,−1.01),(0.78,−0.75),(0.89,−0.39),(1,−0.13)}
图1.7中,曲线是真实函数的曲线,点是训练集中的样本。请通过M次多项式对训练集进行拟合,选出最优的M次多项式,并对新的实例x=0.5进行预测。
图1.7 例1.1中的真实函数与训练集样本
假设给定的数据是由式(1.1)的M次多项式生成的:
式中,M代表多项式函数fM(x,β)中的最高次幂;x是输入实例,在式(1.1)中为标量;β=(β0,β1,···,βM)T是参数向量,参数空间的维数为M+1。
1.训练阶段:如何选出最优模型
训练过程,就是根据训练集从假设空间中选出最优模型,这里检测的是对已知数据的拟合能力。现在以观察值或实验值(训练集中的标签)与预测值(通过模型预测的标签)之间的差异作为损失,量化拟合能力。
考虑M=0,1,2,···,9共十种情况,通过经典的回归估计方法——最小二乘法估计参数,拟合曲线如图1.8所示。最小二乘法的具体原理参见第2章。
当M=0时,多项式退化为一个常数函数,拟合的曲线就是平行于x轴的一条直线,这时候它与真实曲线之间的差异是非常大的;当M=1时,多项式为一次函数,拟合曲线是一条直线,相较于M=0时,稍微接近于真实曲线;M=2时,对应的是一条二次曲线,更加接近于真实曲线;M=3时,拟合得到一条三次曲线,和真实的曲线非常接近;类似地,M=4,M=5,···,M=9时,统统可以得到拟合曲线。观察发现,M=9时,拟合曲线恰好穿过所有样本。这是必然的,因为M=9时参数向量包含10个元素,而训练集中的样本也有10个,相当于求解了一个十元一次方程组。如果从是否完美地穿过所有样本来看,那么最优模型应该就是M=9时的拟合曲线。
以上相当于通过肉眼观察评估模型的性能,比较样本标注与预测之间的差异。如果定量分析,则需要定义损失函数L(y,fM(x,β))。在回归问题中,常用的损失是平方损失,
L(y,fM(x,β))=(y−fM(x,β))2
图1.8 例1.1中的拟合曲线
每个样本的损失记为L(yi,fM(xi,β)),训练集上的平均损失称为训练误差。对于回归问题而言,则是均方误差的经验结果,
训练误差最小为0,发生在M=9时。可以认为,从训练过程而言,最优模型为9次多项式。
但是,从图1.8中也发现,与真实曲线最接近的拟合曲线当属M=3或M=4时。难道上面通过最小化训练误差选择最优模型的策略是错误的?错误出在何处?
这是因为上面的训练过分地依赖于训练集,只希望尽可能地拟合训练集中的样本,却忽略训练集外的。如果参数过多,甚至超出训练集中样本的个数,模型结构将会十分复杂,虽然对已知数据有一个很好的预测效果,但对未知数据预测效果很差,这就是过拟合现象。如同习武之人,经过一番训练之后,可以轻松应对已知来临的攻击,但是应对突如其来的袭击可能就会惊慌失措。
2.测试阶段:如何平衡训练误差与模型复杂度
如何解决过拟合呢?一种尝试就是类似于机器的试运行阶段,现在准备一组测试集。类似于训练误差,定义测试误差为测试集上的平均损失,检测的是对未知数据的预测能力。仍然采用例1.1中的真实函数,随机生成一组样本容量N′=10的测试集,分别计算之前训练出来的不同M情况下模型的测试误差,结果如图1.9所示。
图1.9 训练误差与测试误差
图1.9中,蓝色折线代表训练误差,度量模型对已知数据的预测能力;橙色虚线代表测试误差,度量模型对于未知数据的预测能力。如果以参数向量中元素的个数反映模型的复杂度,M越大表示模型越复杂。当M=0时,训练误差和测试误差都比较大。随着模型复杂度的增加,训练误差和测试误差明显减小。直到M=3时,测试误差达到最小,此时训练误差也到达一个较小的值。接着,随着M的增大,训练误差继续减小,但是测试误差却会增大。这说明,在M>3时,模型将对于已知数据预测能力越来越好,但是对于未知数据的预测能力会越来越差。我们希望在测试误差和训练误差中找到一个平衡点,也就是M=3时。这说明,通过微调阶段,选出来的最优模型是三次多项式。
整个学习过程十分符合奥卡姆剃刀原理,希望模型既能很好地解释已知数据,而且结构又十分简单。
3.预测阶段:如何预测新实例的标签
通过训练和测试阶段,已经完成了模型的选择,确定了三次多项式。根据训练集估计所得模型如式(1.2)所示,
f∗(x)=17.31x−25.19x+7.66x+0.21 (1.2)
式中,f∗表示估计的最终模型函数,估计所得参数=(17.31,−25.19,7.66,0.21)T。预测阶段,就是将新实例x=0.5代入式(1.2)即可,见图1.10中橙色曲线上的绿色点。
图1.10 根据三次多项式对实例x=0.5x=0.5的预测