人工智能学习之新手村四机器学习术语之过拟合与欠拟合

机器学习有很多专业术语,对于初学者来说,理解这些术语存在着不小的难度。在这里,我举个例子,以点及面的阐述机器学习。

首先还是说例子:

已知f(-1)=0,f(0)=1,f(0.5)=1.8,f(1)=4,f(2)=15,求f(10),f(1.5),f(-2).

真实的答案是f(10)=1100,f(1.5)=8,f(-2)=-5.

以上数据真实发生。

正常来说,我们有n组已知函数的对应关系就列n-1组2元n-1次方程组,解到这个函数的解析解,是可以让所有已知数据都完美匹配到这个函数。我们列:


a*(-1)^{4}+b*(-1)^{3}+c*(-1)^{2}+d*(-1)^{1}+e=0

a*(0)^{4}+b*(0)^{3}+c*(0)^{2}+d*(0)^{1}+e=1

a*(0.5)^{4}+b*(0.5)^{3}+c*(0.5)^{2}+d*(0.5)^{1}+e=1.8

a*(1)^{4}+b*(1)^{3}+c*(1)^{2}+d*(1)^{1}+e=4

a*(2)^{4}+b*(2)^{3}+c*(2)^{2}+d*(2)^{1}+e=15


求解固然可以求解,但是很复杂,而且我们无法估计我们得到的f(10),f(1.5),f(-2)是否与真实值之间的差异。我们从机器学习的角度去看待这个问题,已知的数据是我们的训练集{f(-1)=0,f(0)=1,f(0.5)=1.8,f(1)=4,f(2)=15},未知的数据是我们的测试集{f(10),f(1.5),f(-2)},我们要求的中间量f(x)也就是函数被称为模型。

我们列出了2元4次方程组,求得5个参数,从而得到了a,b,c,d,e的真实值,带入方程我们可以求得f(10),f(1.5),f(-2),大家可以求解一下,得出结果与真实值差异较大,这种情况下我们叫过拟合 ,因为我们得到的函数较完美的拟合了我们已有的数据(训练集),而我们求解的未知数据的函数值与真实值差异较大。

过拟合的模型往往在训练集上表现优异,而在测试集上效果表现较差。

实际当中我们遇到此类问题时间我们就不得不思考一下我们的模型选用是否合适,考虑降低模型复杂度,模型复杂度简单的说就是你模型参数的个数,4次方程有5个参数,3次方程有4个参数,2次方程有3个参数等等。

我们考虑建立一个2次方程组,求解模型,2次方程需要3对数据,这时间呢,我们在训练集上就有了剩余,我们把余下来的做验证,也就是验证集。列方程:


a*(-1)^{2}+b*(-1)^{1}+c=0

a*(0)^{2}+b*(0)^{1}+c=1

a*(1)^{2}+b*(1)^{1}+c=4


得到我们的方程为f(x)=x^{2}+2x+1,验证一下发现f(0.5)=2.25,f(2)=9,结果不太理想,难道是我们选取的方程式有问题?然后我们调换了选用的方程式,列出:


a*(-1)^{2}+b*(-1)^{1}+c=0

a*(0)^{2}+b*(0)^{1}+c=1

a*(2)^{2}+b*(2)^{1}+c=15


这个发现结果也不对,再次调换,这个过程我们称之为交叉验证。所有的列些方程式的方案我们都试过了,仍然不行,我们首先怀疑我们的模型是不是泛化精度不够,即我们的模型明明训练的时间拟合了训练集的数据,而对验证集的数据丝毫没有办法。出现这个问题,我们首先考虑模型是否选用合适,过拟合问题也有可能发生,当然也需要考虑几次方程是否合适。

此时,我们一般考虑投入更多的数据去训练,试着投入4个数据去训练,方程组我就不列了,4个方程3个参数,找不到完美的解,真实情况就是我们的模型欠拟合欠拟合就是我们的模型无法拟合我们的训练集。

接下来,我们列3次方程组,得出f(x)=x^{3}+x^{2}+x+1,该模型较合理,经验证我们的未知数据也是比较合理的,此时我们求解才算成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值