目录
1.误差来源:偏差(bias)和方差(variance)
- error有两个来源,一个来自bias(偏差),另一个来自variance(方差);
- f ^ \hat f f^为最佳的函数, f ∗ f^* f∗为估测值;
- Niantic是做宝可梦的公司;
- f ^ \hat f f^与 f ∗ f^* f∗的距离来自于bias(偏差)和variance(方差);
2.数理统计的相关内容
- μ \mu μ为变量x的真实平均值,m为根据样本得到的x平均值的估计值(样本均值);
- σ 2 \sigma^2 σ2为变量x的真实方差,E[m]为期望;
- 上图中的Larger N和Smaller N写反了,N越大,得到的样本均值越靠近 μ \mu μ;
3.不同模型对应的bias和variance
- 目标是估测靶的中心;
- error取决于bias和variance;
- 有很多平行宇宙,在不同的宇宙(实验)中,样本不一样,得到的结果不一样;
- 上图为不同宇宙(编号universe 123和编号universe 345)中得到的结果;
- 做100次实验,不同的模型得到的结果如图所示;
- 简单的模型更加不容易受样本数据的影响,方差越小;
- 黑色的线:真正的函数;
- 红色的线:5000次实验得到的结果;
- 蓝色的线:5000次实验的平均值;
- 上图分别为一次方/二次方/五次方的结果;
- 简单的模型对应的偏差(bias)较大,方差较小;复杂的模型偏差较小,方差较大;
- error主要来自于bias,为underfitting;error主要来自variance,为overfitting;
4.如何处理underfitting和overfitting
- 判断误差来源:
- 1).如果模型不能拟合训练的样本,则说明error主要来自于bias,即underfitting;
- 2).如果模型能够拟合训练的样本,但是测试数据得到的error很大,那很可能是variance过大,则overfitting;
- 如果是underfitting,需要重新设计你的模型:
- 1).模型集(model set)可能没有包含目标函数,需要添加更多特征;
- 2).尝试更复杂的模型;
- 如果是overfitting:
- 1).增加训练的数据,虽然有效,但是实际不一定可行;
- 2).正则化,使函数变平滑,但是可能会影响bias;
5.模型的选择
- 在bias和variance之间做一些平衡;
- 选择的模型应该使两种error的和最小化;
- 对比实验用的测试数据(testing set public),真实的测试数据(testing set private/real)得到的error可能更高;
5.1 交叉验证(Cross Validation)
- 将训练集分为两组:训练集(training set)和验证集(validation set)
- training set:用于训练模型;
- validation set:用于选模型,用training set训练好以后,再用validation set(数据较少时,可以用全部的数据,即training set和validation set)计算error;
- 在testing set(public)上得到的error太差,不建议再回去修改模型,因为这样会使testing set(private/real)得到的结果偏小;
- 将全部training set分成两组时,可能会分得不好,所以可以考虑N-fold cross validation;
5.2 N折交叉验证(N-fold Cross Validation)
- 将全部training set分成三组:两组training set和一组validation set;
- 然后将三组数据轮流作为validation set,另外两组作为training set,计算error,看哪一个模型最好;