python小白之路:第十五章 线性回归模型-K折交叉验证

K-fold Cross Validation K折交叉验证

1.思路

假设有n个观测值,即训练集数据为n,将其均分为K组。其中,K-1组子集作为训练集来训练模型,用剩余的那一组子集作为验证集来计算预测误差。重复以上过程,直到每个子集都做过一次验证集,即得到了K次的预测误差。将K次的预测误差取平均得到一个交叉验证误差,用K个模型最终的验证集的分类准确率的平均数作为此次K-CV下分类器的性能指标。

2.目的

2.1 拟合(fitting)

我们希望能够把数据点用光滑曲线连接起来,找到合适的函数表示曲线。

2.2 泛化能力(generalization ability)

单纯减小训练集的误差并不能保证解决其他一般问题时表现依旧很好,我们更希望找到的曲线即训练好的模型对于新的数据也能做出合适的预测,得到较好的结果。

训练数据集的损失和一般化的数据集的损失之间的差异叫做泛化误差(generalization error),包括偏差、方差、噪声。

2.2.1 偏差(Bias)

所有的可能的训练集训练出的所有模型的输出的平均值和真实模型的输出值之间的差异。即和真实值的偏离程度。

python小白之路:第十五章 线性回归模型-K折交叉验证

python小白之路:第十五章 线性回归模型-K折交叉验证

2.2.2 方差(Variance)

不同的训练集训练的模型输出值之间的差异。即数据扰动所造成的影响。

python小白之路:第十五章 线性回归模型-K折交叉验证

2.2.3 噪声(Noise)

学习算法无法解决,数据质量决定了学习的上限,噪声表达了期望泛化误差的下界,即学习问题本身的难度。

python小白之路:第十五章 线性回归模型-K折交叉验证

2.3 问题&分析

  • 欠拟合:训练好的模型在训练集上的表现就很差。
  • 分析:偏差很大,也就是说选取的模型和真实的模型相差比较大,比如说可能真实的是二次函数,而我们选取的是一次的。
  • 过拟合:训练好的模型在训练集上表现很好,但在测试集上表现很差。
  • 分析:方差很大,也就是说模型过于拟合训练数据,过于想要把训练集所有数据都准确表达了。
  • 我们的学习数据是有限的。
  • 分析:尽可能想办法获取尽可能多的有效信息。
  • 局部最小值:误差最小不一定是全局最小的。
  • 分析:每次训练得到的模型仅是从一个方向开始学习样本的。

2.4 交叉验证

可以一定程度解决过拟合、数据有限、局部最小值等问题。

3.K的选取

K越大,子集就比较小,偏差小,但可能会更加拟合数据,方差大;

K越小,子集就比较大,不会过度拟合数据,方差小,但偏差大。

根据经验,一般选K=5或10。

python小白之路:第十五章 线性回归模型-K折交叉验证