「李宏毅机器学习」学习笔记-Where does the error come from?
选择不同的function set,会有不同的model,会在testing data上得到不同的error,越复杂的model不见得会给你越低的error。不同的error有两个来源:bias、variance。
Bias and Variance of Estimator
Variance
比较简单的model,variance比较小;比较复杂的model,variance比较大。
简单的model受sampled data的影响比较小。例如$f(x)=c$不管用什么数据训练,它的variance都是0。
Bias
Bias:If we average all the $f^*$,is it close to $\hat{f}$.
在图中,$f^*$是靶中蓝色的点,$\hat{f}$是红色靶心。
黑色曲线:实际function $\hat{f}$
红色曲线:5000$f^*$
蓝色曲线:5000$f^*$的平均值=$\bar{f}$
从图中可以看出,一个比较简单的model,会有比较大的bias;一个比较复杂的model,会有比较小的bias。
我们的model就是一个function set,可以用上图中蓝色圈圈表示。如果是一个简单的model,就如图中左边蓝色圈圈一样,因为是一个简单的model,它的空间就比较小,有可能空间就没包含target。如果是一个复杂的model,就如图中右边蓝色圈圈一样,空间比较大,可能包含了target,但因为给的training data不够,它没有办法找出target在哪,所以每次找出的$f^*$不一样,正好散布在target附近,平均起来就可以得到$\bar{f}$。
Bias v.s. Variance
比较简单的model的bias比较大variance比较小,比较复杂的model的bias比较小variance比较大。
如果这时error来源于variance很大,这时就是Overfitting,如果这时error来源于bias很大,这时就是Underfitting。
如果你的model没有办法fit你的training examples,说明此时bias大,如果你的model可以fit你的training data,但是在testing data上得到大的error,说明此时variance大。
What to do with large bias?
Redesign your model:
Add more features as input
A more complex model
What to do with large variance?
Model Selection
在Testing Set上Error最小的并不代表效果最好,因为并不代表在真正的Testing Set(real)上Error是小的。
真正可靠的做法是这样:
将Training Set分为Training Set和Validation Set,Training Set用于训练Model,Validation Set用来选Model。这时候在Testing Set(pulic)的Error能真正反映在Testing Set(private)上的Error。但不建议根据在Testing Set(public)上的Error发过来影响Model。
如果担心数据集划分不好,可以采取下边这种方法:
将Training Set分成三份,三份数据集轮流当成Validation Set,分成不同的三组,用modle分别在三个情景下算Error,得到Average Error,选Average Error最小的modle。
如果本博文对您有帮助,可以赞助支持一波博主~
推荐阅读
- 本文链接:https://blueschang.github.io/2018/10/30/「李宏毅机器学习」学习笔记-Where does the error come from/
- 版权声明:本博客所有文章除特别声明外,均采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 许可协议。转载请注明出处!