Where does the error come from? ML Lecture 2
参考 https://blog.csdn.net/abc8730866/article/details/70260188
Error的来源:Bias,Varience
- f^ f ^ 是计算pokemon真正的函数,只有Niantic公司知道
- 从训练集上,我们得出的一个估计 f∗ f ∗
- 故像射击一样,靶心为 f^ f ^ , f∗ f ∗ 是我们射中的地方,会由于“bias”和“variance”导致射偏。
Bias and Variance of Estimator
估测均值 μ μ :直接用m(一次实验的平均值)来估计均值是biased的 ,多次实验,对得到的多个m计算期望,算是unbias
用m的方差估算 σ2 σ 2 是unbiased
N越多,越集中。N越少,越分散。取决于取样的数量
用采样结果得到的方差 s2 s 2 的期望来估计 σ2 σ 2 是biased的
随着N的增加,估测 s2 s 2 和 σ2 σ 2 差距会变小。
ERROR的来源:
- ERROR 1. bias:瞄准的是不是中心。瞄准点同靶心的距离就是Bias;
- ERROR 2. variance:射出去和瞄准的之间距离 。实际射在靶心上的位置与你瞄准点的距离就是Variance。
如何找到多个 f∗ f ∗ ?
Parallel Universes平行宇宙
在不同的训练集上,同一个model,也会得到不同的 f∗ f ∗
下面三图是三个model在多个训练集上进行100次实验的结果:
模型越简单,越集中,variance比较小-简单的model不容易受到data影响。
模型很复杂,分散开,variance比较大
Bias
f∗ f ∗ 和靶心多接近。1,3,5次图例。
- 黑色线:真正的。 f^ f ^
- 红色线:每次实验得到的model
- 蓝色线:所有 f∗ f ∗ 的平均 f¯ f ¯
下小图是解释:function比较复杂的时候,function space可能很大,就可能包含target。
总结
简单model。小bias 。偏离靶心
复杂model。大bias 。围绕靶心, f¯ f ¯ 越接近 f^ f ^ 。
原因:复杂模型fuanction set 范围较大,简单的范围较小。
Bias vs Variance
- 随着模型变复杂,Bias(描的越来越准)导致的error下降;
- 随着模型变复杂,Variance导致的error上升;
- 随着模型变复杂,error由下降到上升。
- 模型较简单时,大的Bias,小的Variance,Underfitting!
- 模型过于复杂时,小的Bias,大的Variance,Overfitting!
what to do with bias & variance
- model不能fit 训练数据,说明bias太大,跟争取model有差距。underfitting
- model可以fit 训练数据,但是在test data上得到大的error,model的variance较大。overfitting
bias大:
- 增加特征
- 重新设计模型
variance大:
- 增加data(有效控制variance的方法)
自己create数据(手写数字,旋转图像;语音辨识,男生女生声音变化;录音室声音+公车上的声音……;)
- Regularization正则化
(loss基础上加的那个额外的式子 )希望找到的曲线越平滑越好
下图下半部分。左→右,逐渐加regularization。但是可能会伤害bias。
所以Regularization需要在bias和variance找到平衡
Model Selection
在Bias和Variance中找到一个平衡去选择model,使得总误差最小
但是注意!
用三种model训练之后在测试集上计算err,选择err最小的是不对的。Testing set可能是自己手上的数据,却忽视了其他的,具有自己的bias(和前面提到的bias略有不同)。
做了作业之后。
以homework为例:
public testing set不可靠
应该这样做:
- 将Training set分为两组:training set 和 validation set。
- 训练三个model,通过validation set计算得到的err来选择model。
- 用原始Training set(T+V)训练,在testing set 上测试。(虽然在testing set(public)err结果可能大于0.5),但是public err 可以真实反映private testing。
- 在真正的测试集上得出error,这样的话效果好,才是真的好。
不推荐!
- 在testing set上结果太差,想要把testing再考虑进去
- 这样做了,只是在自己的测试集上变好了,真正的测试集上不一定会变好。
K-fold Cross Validation K折交叉验证
对训练集分组。
- 将训练集分成三部分,取其中一份为验证集,有三种组合情况;
- 用三种模型在这三种情况下进行训练,然后在验证集上得出error,取三种情况下error的均值,均值error最小的情况作为选定的最好的模型;
- 将选出的模型,用原始的整个训练集训练,然后在测试集上得出error;
- 在真正的测试集上得出error。
少根据Testing Set 上对自己的模型进行调整
**Reference:**Bishop: Chapter 3.2